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 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 strongernxs 2 Postado Janeiro 3, 2021 Share Postado Janeiro 3, 2021 Bom... O Script de Summon Por Quantidade Eu nao tenho, alguns são exclusivos... Mas tenho de Sumonar Boss ao Clicar em uma Parede !!! Caso Queira. REP+ Link para o comentário Compartilhar em outros sites More sharing options...
0 rafersiq 20 Postado Janeiro 3, 2021 Autor Share Postado Janeiro 3, 2021 2 horas atrás, strongernxs disse: Bom... O Script de Summon Por Quantidade Eu nao tenho, alguns são exclusivos... Mas tenho de Sumonar Boss ao Clicar em uma Parede !!! Caso Queira. Eu queria um que sumona um pokemon en determinadas horas ou quando o player mata tantos pokes e ele aparece Link para o comentário Compartilhar em outros sites More sharing options...
0 strongernxs 2 Postado Janeiro 3, 2021 Share Postado Janeiro 3, 2021 13 minutos atrás, rafersiq disse: Eu queria um que sumona um pokemon en determinadas horas ou quando o player mata tantos pokes e ele aparece Eu tenho um Parecido ... Vc clica no item sumona o poke e quando mata o poke tem coowndon pra usar o click dnv Link para o comentário Compartilhar em outros sites More sharing options...
0 Yan Oliveira 211 Postado Janeiro 3, 2021 Share Postado Janeiro 3, 2021 Qual a versão da TFS? E isso é um evento ou task? Link para o comentário Compartilhar em outros sites More sharing options...
0 rafersiq 20 Postado Janeiro 3, 2021 Autor Share Postado Janeiro 3, 2021 50 minutos atrás, Yan18 disse: E isso é um evento ou task? E um evento 51 minutos atrás, Yan18 disse: Qual a versão da TFS? A versão e aqueles que sao pda e outros ne ? Link para o comentário Compartilhar em outros sites More sharing options...
0 Yan Oliveira 211 Postado Janeiro 3, 2021 Share Postado Janeiro 3, 2021 (editado) 6 horas atrás, rafersiq disse: E isso é um evento ou task? E um evento A versão e aqueles que sao pda e outros ne ? Sobre a versão, então no seu caso muito provavelmente é 0.3.6, que é a versão atualmente de todos os Poketibia. Se é evento, provavelmente é um pokémon que não terá em respawn, então não precisa de storage para deixa específica a kill dele (quando não tem storage, em qualquer situação vai contar como kill nesse script que vou fazer, por exemplo matar em respawn) Vai em Data/Creaturescripts/Scripts e crie um arquivo chamado task_event.lua (ou o nome que preferir) e adicione o código dentro: local pokemon_derrotar = "Charizard" -- NOME DO POKÉMON QUE PRECISA DERROTAR NA TASK local total = 50 -- TOTAL DE POKEMON QUE PRECISA DERROTAR local pokemon_spawn = "Mewtwo" -- NOME DO POKEMON QUE VAI SPAWNAR local position_spawn = {x= 1000, y= 1000, z= 7} -- POSIÇÃO ONDE VAI SPAWNAR O POKEMON local storage = 15879 -- STORAGE PARA VER SE JÁ FEZ A TASK local random_porcentagem = 50 -- PORCENTAGEM QUE TEM DO POKEMON SPAWNAR AO TERMINAR A TASK function onKill(cid, target) local contador = 0 local random_chance = math.random(100) if getCreatureName(target) == pokemon_derrotar then if getPlayerStorageValue(cid, storage) < 1 then if (total - contador) > 0 then contador = contador + 1 end if contador == total then setPlayerStorageValue(cid, storage, 1) if (random_chance >= random_porcentagem) then doSummonCreature(pokemon_spawn, position_spawn) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você despertou a fúria de um pokémon, se prepare para o combate!") return true else return true end end else return true end else return true end end Agora vai em creaturescripts.xml e adicione a tag: <event type="kill" name="task_event" script="task_event.lua" /> OBS: Caso tenha colocado um arquivo com nome diferente do que sugeri não se esqueça de trocar na tag xml. E por fim em Data/Creaturescripts/Scripts abra o arquivo login.lua e procura seção de eventos e adiciona o evento: registerCreatureEvent(cid, "task_event") Deixei tudo comentado nas variáveis, só vai precisar trocar os valores. Lembrando que na variável random_porcentagem é a chance que vai ter de nascer o pokémon, como eu deixei 50, da tanto para verificar se vai ser maior que 50 ou menor, mas no caso deixei maior ou igual a 50, então qualquer valor acima de 50 gerado pela variável random_chance vai sumonar o pokémon. Se quer que tenha menos de 50% de chance, mude o valor da variável random_porcentagem e nessa verificação: if (random_chance >= random_porcentagem) then Mude para o valor desejado menor que 50, mas tem que mudar o if para: if (random_chance <= random_porcentagem) then Teste, e se der algum erro ou problema, me avise. Editado Janeiro 3, 2021 por Yan18 spoockk reagiu a isso 1 Link para o comentário Compartilhar em outros sites More sharing options...
0 rafersiq 20 Postado Janeiro 4, 2021 Autor Share Postado Janeiro 4, 2021 22 horas atrás, Yan18 disse: Teste, e se der algum erro ou problema, me avise ou mano vc sabe arumar um bug que da na pokebar que quanto solta um pokemon com addon pela pokebar , nao aparece o addon no pokemon? Link para o comentário Compartilhar em outros sites More sharing options...
0 Yan Oliveira 211 Postado Janeiro 4, 2021 Share Postado Janeiro 4, 2021 2 horas atrás, rafersiq disse: ou mano vc sabe arumar um bug que da na pokebar que quanto solta um pokemon com addon pela pokebar , nao aparece o addon no pokemon? Cara, vamos focar primeiro no seu tópico aqui, eu fiz o script que você pediu e você não disse se funcionou ou não. Sobre sua outra dúvida, já adianto que terá que criar um outro tópico para essa dúvida porque não tem relação com a dúvida deste tópico Link para o comentário Compartilhar em outros sites More sharing options...
0 rafersiq 20 Postado Janeiro 4, 2021 Autor Share Postado Janeiro 4, 2021 36 minutos atrás, Yan18 disse: Cara, vamos focar primeiro no seu tópico aqui, eu fiz o script que você pediu e você não disse se funcionou ou não. o pokemon ficou bugado quando eu coloquei ele fica sem vida mas nao some e aparece o corpo Link para o comentário Compartilhar em outros sites More sharing options...
0 Yan Oliveira 211 Postado Janeiro 4, 2021 Share Postado Janeiro 4, 2021 (editado) 15 minutos atrás, rafersiq disse: o pokemon ficou bugado quando eu coloquei ele fica sem vida mas nao some e aparece o corpo Mas a task funcionou? Somente quando spawna o boss ele fica bugado? Substitui 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 pokemon_spawn = "Mewtwo" -- NOME DO POKEMON QUE VAI SPAWNAR local position_spawn = {x= 1000, y= 1000, z= 7} -- POSIÇÃO ONDE VAI SPAWNAR O POKEMON local storage = 15879 -- STORAGE PARA VER SE JÁ FEZ A TASK local random_porcentagem = 50 -- PORCENTAGEM QUE TEM DO POKEMON SPAWNAR AO TERMINAR A TASK function onKill(cid, target) local contador = 0 local random_chance = math.random(100) if getCreatureName(target) == pokemon_derrotar then if getPlayerStorageValue(cid, storage) < 1 then if (total - contador) > 0 then contador = contador + 1 end if contador == total then setPlayerStorageValue(cid, storage, 1) if (random_chance >= random_porcentagem) then doCreateMonster(pokemon_spawn, position_spawn) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você despertou a fúria de um pokémon, se prepare para o combate!") return true else return true end end else return true end else return true end end Editado Janeiro 5, 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 Em 04/01/2021 em 20:58, Yan18 disse: Substitui o código por esse Ou mano tem como tirar a storange pra conseguir fazer mais vezes e botar mais pokemons pra o evento? 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 6 horas atrás, rafersiq disse: Ou mano tem como tirar a storange pra conseguir fazer mais vezes e botar mais pokemons pra o evento? Tem sim, mas quantas vezes você quer? Da para limitar uma quantidade de vezes que o player faz. 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 24 minutos atrás, Yan18 disse: Tem sim, mas quantas vezes você quer? Da para limitar uma quantidade de vezes que o player faz. eu queria deixar sem limit de vezes pra fazela 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) 32 minutos atrás, rafersiq disse: eu queria deixar sem limit de vezes pra fazela Substitui 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}}, } function onKill(cid, target) local contador = 0 local random_chance = math.random(100) if getCreatureName(target) == pokemon_derrotar then if (total - contador) > 0 then contador = contador + 1 end if contador == total then if (random_chance >= random_porcentagem) then for i = 1, #pokemons_spawn do doCreateMonster(pokemons_spawn[i].pokemon, pokemons_spawn[i].position) end doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você despertou a fúria de alguns pokémons, fuja para sobreviver!") contador = 0 return true else return true end end else return true end end Lembrando que assim que matar a quantidade de pokémons que você colocou nas variáveis total e pokemon_derrotar vai ter a porcentagem de summonar todos os pokémons da tabela pokemons_spawn. Só colocar os pokémons e as posições que vão aparecer dentro da tabela. Mas se é ilimitado esse evento/task, então não faz mais sentido com que sempre aparece o boss em vez de ter uma chance? Testa o código e qualquer problema você me avisa. Editado Janeiro 6, 2021 por Yan18 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