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.