wesssley Posted June 18, 2023 Share Posted June 18, 2023 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 Lord Henry Posted June 18, 2023 Other Languages Moderators Share Posted June 18, 2023 (edited) 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 June 18, 2023 by Lord Henry Código comentado. 1 Link to comment
wesssley Posted June 19, 2023 Author Share Posted June 19, 2023 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
wesssley Posted June 19, 2023 Author Share Posted June 19, 2023 já consegui, só esse negócio das tabelas que não consegui ainda Link to comment
Other Languages Moderators Lord Henry Posted June 19, 2023 Other Languages Moderators Share Posted June 19, 2023 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) 1 Link to comment
wesssley Posted June 19, 2023 Author Share Posted June 19, 2023 boa, já deu certo henry, valeu mesmo. Link to comment
Recommended Posts