Jump to content

Tabela para peds


Recommended Posts

Como faço para fazer uma tabela para os peds?

tenho o seguinte script: (exemplo)

 

bot1 = createPed ( idskin, x, y, z )
bot2 = createPed ( idskin, x, y, z )
bot3 = createPed ( idskin, x, y, z )


tenho diversos bots, que são os peds, e para adicionar em um evento e setar animações neles eu tenho que copiar e colar trocando apenas o nome do elemento

exemplo:

 

function restartPedAnimation()
setPedAnimation(bot1, "CRACK", "crckidle1", -1, true, true, true)
setPedAnimation(bot2, "CRACK", "crckidle1", -1, true, true, true)
end
addEventHandler("onClientPedDamage", bot1, restartPedAnimation)
addEventHandler("onClientPedDamage", bot2, restartPedAnimation)


queria saber se tem como fazer uma tabela com o id da skin, a animação e a posição do ped, pois cada ped tem uma animação diferente e skin diferente, e para não deixar o código enorme, usar apenas "um" elemento que seria para todos os peds, tentei mais não consegui por animação diferente nem skins

Link to comment
  • Other Languages Moderators
local infos = { -- Tabela onde as infos de cada bot serão declaradas.
    [1] = {id, x, y, z, r, "CRACK", "crckidle1", -1, true, true, true},
    [2] = {id, x, y, z, r, "CRACK", "crckidle1", -1, true, true, true},
    [3] = {id, x, y, z, r, "CRACK", "crckidle1", -1, true, true, true},
}

local bots = {} -- Tabela onde cada bot criado vai ficar.

for i, v in ipairs(infos) do -- Para cada info, cria um bot na lista de bots.
    bots[i] = createPed(v[1], v[2], v[3], v[4], v[5])
end

function restartPedAnimation()
    for i, v in pairs (bots) do -- Para cada bot, faça:
    	if source == v then -- Se o bot que tomou dano é um da lista, então:
            setPedAnimation(source, infos[i][6], infos[i][7], infos[i][8], infos[i][9], infos[i][10], infos[i][11]) -- Seta essa animação que está nas infos.
            break -- Cancela o loop pois já encontrou o bot correto.
        end
    end
end
addEventHandler("onClientPedDamage", resourceRoot, restartPedAnimation) -- Ativa essa função quando qualquer NPC deste resource tomar dano.

Tente isso.

(não testado)

Edited by Lord Henry
Código comentado.
  • Thanks 1
Link to comment

Henry, funcionou, porém não consegui adaptar ao script que estou usando aqui e o ped não estava sendo criado com animação, acabei descartando e fui fazendo um por um mesmo, pior que vou ter que criar mais de 80 peds, ai creio que vai pesar um pouco.

Deixa eu perguntar, seria possível eu fazer uma "tabela" ou algo do tipo para armazenar os ids de algumas skins e animações, gerando uma variável que quando eu colocasse na parte de id e de animação iria setar uma animação aleatória para o ped? não sei se entendeu oque eu quis dizer

Link to comment
  • Other Languages Moderators
17 hours ago, wesssley said:

o ped não estava sendo criado com animação

Animação as vezes não funciona em Ped no mesmo instante em que ele é criado. Dai precisa adicionar um timer para setar essa animação só depois que o ped foi criado. O exemplo que eu fiz seta a animação somente quando o Ped toma dano, pois eu pensei que era isso que você queria fazer, setar a animação somente ao dar dano no ped. Vou refazer o exemplo para setar a animação em todos os Peds após eles serem criados.

local infos = { -- Tabela onde as infos de cada bot serão declaradas.
    [1] = {id, x, y, z, r, "CRACK", "crckidle1", -1, true, true, true},
    [2] = {id, x, y, z, r, "CRACK", "crckidle1", -1, true, true, true},
    [3] = {id, x, y, z, r, "CRACK", "crckidle1", -1, true, true, true},
}

local bots = {} -- Tabela onde cada bot criado vai ficar.

for i, v in ipairs(infos) do -- Para cada info, cria um bot na lista de bots.
    bots[i] = createPed(v[1], v[2], v[3], v[4], v[5])
end

setTimer(function ()
    for i, v in pairs (bots) do -- Para cada bot, faça:
        setPedAnimation(v, infos[i][6], infos[i][7], infos[i][8], infos[i][9], infos[i][10], infos[i][11]) -- Seta essa animação que está nas infos.
    end
end, 100, 1)
17 hours ago, wesssley said:

Deixa eu perguntar, seria possível eu fazer uma "tabela" ou algo do tipo para armazenar os ids de algumas skins e animações, gerando uma variável que quando eu colocasse na parte de id e de animação iria setar uma animação aleatória para o ped? não sei se entendeu oque eu quis dizer

Se estiver se referindo a uma tabela com animações para setar aleatoriamente no ped, é possível sim.

local animations = {
    [id] = { -- Animações que vão estar disponíveis para os Peds deste ID.
        {"CRACK", "crckidle1", -1, true, true, true},
        {"CRACK", "crckidle1", -1, true, true, true},
        {"CRACK", "crckidle1", -1, true, true, true},
    },
    [id] = { -- Outras animações disponíveis para este outro ID.
        {"CRACK", "crckidle1", -1, true, true, true},
        {"CRACK", "crckidle1", -1, true, true, true},
        {"CRACK", "crckidle1", -1, true, true, true},
    },
}

addEventHandler("onClientPedDamage", resourceRoot, function() -- Seta uma animação aleatória no Ped quando ele tomar dano.
    local id = getElementModel(source)
    if animations[id] then -- Se existe a tabela de animações para este ID, então:
        local random = math.random(#animations[id]) -- Gera um número aleatório entre 1 e a quantidade de animações disponível para este ID (neste exemplo é entre 1 e 3)
        setPedAnimation(source, animations[id][random][1], animations[id][random][2], animations[id][random][3], animations[id][random][4], animations[id][random][5], animations[id][random][6])
    end
end)

 

  • Thanks 1
Link to comment
Guest
This topic is now closed to further replies.
  • Recently Browsing   0 members

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