Jump to content

Педы из таблицы


Recommended Posts

Заспавнил педов из таблицы, сделал проверку на кол-во хп - если меньше 100, то дает 100. Но заметил такую вещь, что дает 100 хп только последнему педу из таблицы, остальных можно убить

ЗЫ. Так же заметил, что текст который должен рисоваться над педом (коорды так же берутся из таблицы) рисуется только над педом который в таблице посдений.

Код

  
pedsSpawns = { 
    {268,-2038.0770263672,175.51203918457,28.8359375,-90, "Сэм Никель"}, 
    {268,-2038.0823974609,182.16136169434,28.8359375,-90, "Андриано Челентано"}, 
} 
  
addEventHandler( "onClientResourceStart", getRootElement( ), 
function() 
    for i, v in ipairs(pedsSpawns) do 
        ped = createPed(v[1],v[2],v[3],v[4],v[5]) 
        x, y, z = v[2],v[3],v[4] 
        text = v[6] 
    end 
end 
) 
  
addEventHandler("onClientRender",getRootElement(),   
    function()   
        local px,py,pz = getElementPosition(getLocalPlayer())   
        local distance = getDistanceBetweenPoints3D ( x,y,z,px,py,pz )   
        if distance <= 7 then   
            local sx,sy = getScreenFromWorldPosition ( x, y, z+0.95, 0.06 )   
            if not sx then return end   
            dxDrawBorderedText ( text, sx, sy - 30, sx, sy - 30, tocolor(255,204,51,255), 1, "default-bold", "center", "bottom", false, false, false )   
    end   
end   
)  
  
function setPedHP() 
    hp = getElementHealth(ped) 
    if hp < 100 then 
        setElementHealth(ped, 100) 
    end 
end 
setTimer(setPedHP,500,0) 
  

Link to comment

Ошибка в логике.

ped, x, y, z и text - это всё ОДНА (каждая) глобальная переменная, и она хранит то значение, которое ты записал в неё последний раз, поэтому там записан последний пед.

Link to comment
Ошибка в логике.

ped, x, y, z и text - это всё ОДНА (каждая) глобальная переменная, и она хранит то значение, которое ты записал в неё последний раз, поэтому там записан последний пед.

Тогда я не понимаю как выйти из положения, если не записывать данные в переменные, можно пример?

Link to comment

В рендере перед dxdraw поставь for i,v ... И в функции, которая даёт хп, тоже самое.

p.s. пишу с телефона последнее время, извините за простоту ответов, без пояснений и т.п

Link to comment
Тогда я не понимаю как выйти из положения, если не записывать данные в переменные, можно пример?

Записывать элементы педов в таблицу. И ты бы мог отменять событие onClientPedDamage, если хочешь их сделать неуязвимыми.

Link to comment
В рендере перед dxdraw поставь for i,v ... И в функции, которая даёт хп, тоже самое.

p.s. пишу с телефона последнее время, извините за простоту ответов, без пояснений и т.п

Да спасибо, но не совсем перед dxDraw..

Вот как сделал

addEventHandler("onClientRender",getRootElement(),   
    function()   
        for i, v in ipairs(pedsSpawns) do 
            x, y, z = v[2],v[3],v[4] 
            local px,py,pz = getElementPosition(getLocalPlayer())   
            local distance = getDistanceBetweenPoints3D ( x,y,z,px,py,pz )   
            if distance <= 7 then   
                local sx,sy = getScreenFromWorldPosition ( x, y, z+0.95, 0.06 )   
                if not sx then return end 
                dxDrawBorderedText ( v[6], sx, sy - 30, sx, sy - 30, tocolor(255,204,51,255), 1, "default-bold", "center", "bottom", false, false, false )   
            end 
        end   
    end   
)  

Link to comment

Теперь другая у меня другая проблемка, я хочу использовать данные из таблицы с педом, но как переменную для получения данных из другой таблицы. Иными словами там в таблице где модель, коорды педа я даю еще последовательный ИД (первая строка - ИД1 и тд) что бы использовать последовательность из таблицы с педами, для таблицы с текстом. Для 1 педа - 1 строка с текстом и тд.

  
  
pedsSpawns = { 
    {268,-2038.0770263672,175.51203918457,28.8359375,-90, "Сэм Никель", 1}, 
    {268,-2034.8961181641,148.54093933105,28.8359375,-90, "Джон Паркер", 2}, 
} 
  
quest = { 
    { "Добро пожаловать, меня зовут Сэм. \nВы по какому вопросу?","Да, я долго проживаю на этих местах, но таких аномалий никогда не встречал"}, 
    { "Добро пожаловать, меня зовут Джон. \nВы по какому вопросу?","Брат, я не спал трое суток, мне сейчас не до тебя."}, 
} 
  
  
addEventHandler("onClientResourceStart", getResourceRootElement(getThisResource()),  
    function () 
        for i, v in ipairs(quest) do 
            local sWidth, sHeight = guiGetScreenSize() 
            local Width,Height = 280,500 
            local X = 10 
            local Y = 150 
             
            dialog = guiCreateWindow(X,Y,Width,Height,"Диалог",false) 
            otvet = guiCreateButton(173,470,97,20,"Ответить",false,dialog) 
            closeWin = guiCreateButton(10,470,97,20,"Закрыть",false,dialog) 
            firstGrid = guiCreateGridList(10,30,260,250,false,dialog) 
            for i, v in ipairs(pedsSpawns) do 
                pedID = tonumber(v[7]) 
                questNum = pedID 
            end 
            text = guiCreateLabel (5,5,250,250,quest[questNum][1],false,firstGrid) 
            qList = guiCreateGridList(10,290,260,150,false,dialog) 
            column = guiGridListAddColumn(qList,"Ответ",0.85) 
            row1 = guiGridListAddRow ( qList ) 
            for i, v in ipairs(otv) do 
                guiGridListSetItemText ( qList, row1, column, v[1], false, false ) 
            end 
             
            guiWindowSetSizable(dialog,false) 
            guiSetVisible(dialog,false); 
        end 
    end 
) 
  

В идеале как тут, но опять же в переменную ставится последний ИД из таблицы pedsSpawns

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...