rafersiq 20 Postado Dezembro 29, 2020 Share Postado Dezembro 29, 2020 ola pessoal do forum xtibia eu tou atras de um scripts que e o siguinte o player matar uma quantia de pokemons e pode ter a sorte de um pokemon spawnar na area Link para o comentário Compartilhar em outros sites More sharing options...
0 Yan Oliveira 211 Postado Janeiro 6, 2021 Share Postado Janeiro 6, 2021 (editado) 22 minutos atrás, rafersiq disse: e que eu tou querendo meio que fazer um evento tipo vc mata x quantia de pokemon e um certo pokemon spawna em um canto mais ou menos isso Saquei! Funcionou o script? Populou a tabela corretamente? Coloquei posições genéricas. Editado Janeiro 6, 2021 por Yan18 Link para o comentário Compartilhar em outros sites More sharing options...
0 rafersiq 20 Postado Janeiro 6, 2021 Autor Share Postado Janeiro 6, 2021 3 minutos atrás, Yan18 disse: Saquei! Funcionou o script? Populou a tabela corretamente? Coloquei posições genéricas. vou testar agora estava assistndo vidio no youtuber e acabei nao testando ainda Link para o comentário Compartilhar em outros sites More sharing options...
0 Yan Oliveira 211 Postado Janeiro 6, 2021 Share Postado Janeiro 6, 2021 Agora, rafersiq disse: vou testar agora estava assistndo vidio no youtuber e acabei nao testando ainda Ok, testa e me avisa! Link para o comentário Compartilhar em outros sites More sharing options...
0 rafersiq 20 Postado Janeiro 6, 2021 Autor Share Postado Janeiro 6, 2021 Agora, Yan18 disse: Ok, testa e me avisa! ok 4 horas atrás, Yan18 disse: Ok, testa e me avisa! testei e deu o mesmo bug o pokemon que esta no scripts ele morrre mas a sprite dele ainda fica la no local e nao conta a kill eu testei se bugava os outros mas vi que so buga o charizard que esta no scripts Link para o comentário Compartilhar em outros sites More sharing options...
0 Poccnn 385 Postado Janeiro 7, 2021 Share Postado Janeiro 7, 2021 local C ={ ['demon'] = {boss='orshabaal',store=2001,pos={x=0,y=0,z=0},quant=10000}, -- 10k demon killed summon 1 orshabaal ['dragon lord'] = {boss='demodras',store=2000,pos={x=0,y=0,z=0},quant=2500}, -- 2,5k dl killed summon 1 Demodras } function onKill(cid, target) local Mname = getCreatureName(target) if(getGlobalStorageValue(C[Mname].store) >= C[Mname].quant)then if not(getCreatureByName(C[Mname].boss))then --executeRaid(C[Mname].boss) -- seria um otimo metodo caso queira implementar. doCreateMonster(C[Mname].boss, C[Mname].pos) setGlobalStorageValue(C[Mname].store,-1) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR,"boss foi sumonado") end end local gstore = getGlobalStorageValue(C[Mname].store) < 0 and 0 or getGlobalStorageValue(C[Mname].store) setGlobalStorageValue(C[Mname].store,gstore+1) return true end Link para o comentário Compartilhar em outros sites More sharing options...
0 Yan Oliveira 211 Postado Janeiro 11, 2021 Share Postado Janeiro 11, 2021 (editado) Em 06/01/2021 em 18:47, rafersiq disse: ok testei e deu o mesmo bug o pokemon que esta no scripts ele morrre mas a sprite dele ainda fica la no local e nao conta a kill eu testei se bugava os outros mas vi que so buga o charizard que esta no scripts Foi erro meu, bobiei. Arrumei o código e agora está funcionando normal: Substitua o código por esse: local pokemon_derrotar = "Charizard" -- NOME DO POKÉMON QUE PRECISA DERROTAR NA TASK local total = 50 -- TOTAL DE POKEMON QUE PRECISA DERROTAR local random_porcentagem = 50 -- PORCENTAGEM QUE TEM DO POKEMON SPAWNAR AO TERMINAR A TASK -- TABELA COM OS POKEMONS QUE APARECERÃO AO DERROTAR A QUANTIDADE DO POKÉMON QUE COLOCOU NA VARIÁVEL pokemon_derrotar -- local pokemons_spawn = { {pokemon = "Mewtwo", position = {x= 1000, y= 1000, z= 7}}, {pokemon = "Mew", position = {x= 1000, y= 1000, z= 7}}, {pokemon = "Articuno", position = {x= 1000, y= 1000, z= 7}}, {pokemon = "Zapdos", position = {x= 1000, y= 1000, z= 7}}, {pokemon = "Moltres", position = {x= 1000, y= 1000, z= 7}}, } ------------------------------- CÓDIGO ----------------------------- function onKill(cid, target) local random_chance = math.random(100) -- VARIÁVEL QUE GERA VALOR ALEATÓRIO local storage_contador = 336699 -- STORAGE QUE ARMAZENA QUANTAS VEZES O POKEMON FOI DERROTADOS local restante = total - getGlobalStorageValue(storage_contador) -- VARIÁVEL QUE GERA A DIFERENÇA ENTRE O TOTAL E O CONTADOR DOS POKEMONS DERROTADOS if getCreatureName(target) == pokemon_derrotar then if getGlobalStorageValue(storage_contador) < 1 then setGlobalStorageValue(storage_contador, 1) end setGlobalStorageValue(storage_contador, getGlobalStorageValue(storage_contador) + 1) if restante == 0 then if (random_chance >= random_porcentagem) then for _, pokes in pairs(pokemons_spawn) do doCreateMonster(pokes.pokemon, pokes.position) end doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você despertou a fúria de alguns pokémons, fuja para sobreviver!") setGlobalStorageValue(storage_contador, 1) return true else setGlobalStorageValue(storage_contador, 1) return true end else return true end else return true end end Mesmo esquema das outras vezes, só alterar os valores das variáveis, mas para te facilitar, recomendo copiar o código somente a partir da linha function onKill(cid, target). Conforme a imagem acima, está funcionando normal, mas qualquer problema só me avisar. Editado Janeiro 11, 2021 por Yan18 M i s s reagiu a isso 1 Link para o comentário Compartilhar em outros sites More sharing options...
0 rafersiq 20 Postado Janeiro 9, 2022 Autor Share Postado Janeiro 9, 2022 Em 11/01/2021 em 01:47, Yan Oliveira disse: Mesmo esquema das outras vezes, só alterar os valores das variáveis, mas para te facilitar, recomendo copiar o código somente a partir da linha function onKill(cid, target). Conforme a imagem acima, está funcionando normal, mas qualquer problema só me avisar. desculpa reviver esse post mas tem como colocar ao invez de ser um local determinada que o pokemon ira respawnar ele aparecer onde o utimo pokemon que o player matou o pokemon diferente ira espawnar? Link para o comentário Compartilhar em outros sites More sharing options...
0 Yan Oliveira 211 Postado Fevereiro 7, 2022 Share Postado Fevereiro 7, 2022 (editado) Em 09/01/2022 em 12:08, rafersiq disse: desculpa reviver esse post mas tem como colocar ao invez de ser um local determinada que o pokemon ira respawnar ele aparecer onde o utimo pokemon que o player matou o pokemon diferente ira espawnar? Pelo que entendi, você quer que ao derrotar o último pokémon do contador da task, os boss spawnem na posição do último pokémon derrotado. Se é isso, é tranquilo. Eu refiz o código, porque olhando novamente o código que fiz ano passado, achei que dava para melhorar, e já está com a alteração que você pediu. Substitua todo seu código por esse: -- VARIÁVEIS -- local total = 50 -- TOTAL DE POKEMON QUE PRECISA DERROTAR local random_chance = 50 -- PORCENTAGEM QUE TEM DO POKEMON SPAWNAR AO TERMINAR A TASK -- TABELA COM OS POKÉMONS DA TASK QUE PRECISA DERROTAR -- local pokemon_task = { "Charizard", } -- TABELA COM OS POKEMONS QUE APARECERÃO AO DERROTAR A QUANTIDADE DO POKÉMON QUE COLOCOU NA VARIÁVEL pokemon_derrotar -- local pokemons_spawn = { "Mewtwo", "Mew", "Articuno", "Zapdos", "Moltres", } ------------------------------- CÓDIGO ----------------------------- function onKill(cid, target) for _, pokemon in ipairs(pokemon_task) do if getCreatureName(target) == pokemon then if getGlobalStorageValue(storage_task_defeat_count) < 0 then setGlobalStorageValue(storage_task_defeat_count, 1) end setGlobalStorageValue(storage_task_defeat_count, getGlobalStorageValue(storage_task_defeat_count) + 1) -- INCREMENTA O CONTADOR DE POKÉMONS DERROTADOS DA TASK local restante = total - getGlobalStorageValue(storage_task_defeat_count) if restante == 0 then local chance = math.random(100) -- VARIÁVEL QUE GERA VALOR ALEATÓRIO if chance >= random_chance then for _, boss in pairs(pokemons_spawn) do doCreateMonster(boss, getCreaturePosition(target)) end doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você despertou a fúria de alguns pokémons, fuja para sobreviver!") end setGlobalStorageValue(storage_task_defeat_count, 0) end break end end return true end Vamos as explicações! Eu alterei um pouco a estrutura do código, então agora está mais otimizado e agora adicionei o pokémon da task em uma tabela, caso queira adicionar mais de um pokémon para contabilizar a task, agora é possível. Porém, se adicionar mais de um pokémon para a task, do jeito que eu fiz, qualquer um pokémon que está dentro da tabela pokemon_task que derrotar, irá contabilizar como o total, e não individualmente, ou seja, por exemplo, o total que defini é 50 (variável total), então, se você adicionar por exemplo dois pokémons, no caso, Charizard e Blastoise, e você matar 25 Charizards e 25 Blastoises, vai ter a chance de nascer os boss se o valor aleatório gerado pela chance estiver na range definida de 50 (se o math.random gerar 50 ou mais). Caso queira que conte individualmente, vou ter que alterar o código. Mas, se quiser só um pokémon, então deixe somente um na tabela, assim como deixei. Agora, como estamos trabalhando com storage global, vamos criar ela na pasta lib, porque do jeito que eu tinha feito não era a maneira correta, o certo é criar ela de forma global, e não local. Então, vai em Data/Lib e abra o arquivo 100-compat.lua (ou um arquivo de sua preferência) e adicione a seguinte linha no final do arquivo: storage_task_defeat_count = 336699 Mantive o mesmo valor na storage global, e agora ela está registrada globalmente. Pronto, está finalizado as alterações! Agora teste e veja se vai dar algum problema. Editado Fevereiro 7, 2022 por Yan Oliveira rafersiq reagiu a isso 1 Link para o comentário Compartilhar em outros sites More sharing options...
0 rafersiq 20 Postado Fevereiro 9, 2022 Autor Share Postado Fevereiro 9, 2022 Em 07/02/2022 em 20:21, Yan Oliveira disse: Pronto, está finalizado as alterações! Agora teste e veja se vai dar algum problema. funcionou obg pela ajd Link para o comentário Compartilhar em outros sites More sharing options...
0 Yan Oliveira 211 Postado Fevereiro 9, 2022 Share Postado Fevereiro 9, 2022 (editado) De nada! Na próxima vez, coloque a resposta que resolveu seu problema como a melhor resposta para ajudar e facilitar outras pessoas com essa mesma dúvida no futuro. Dessa vez vou colocar para você. O pedido neste tópico de foi atendido e/ou o autor do tópico resolveu sua duvida. Este tópico está fechado e foi movido para Pedidos - Resolvidos. Se você tiver outros pedidos, crie um novo tópico. Editado Fevereiro 9, 2022 por Yan Oliveira Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
rafersiq 20
ola pessoal do forum xtibia eu tou atras de um scripts que e o siguinte
o player matar uma quantia de pokemons e pode ter a sorte de um pokemon spawnar na area
Link para o comentário
Compartilhar em outros sites
25 respostass a esta questão
Posts Recomendados