Estava passando o olho pelos códigos do Zeref, e percebi uma espécie de "erro" no código do /cb. Suponho que, no parâmetro da talkaction citada, todos vocês colocam o nome do pokémon inteiramente minúsculo, certo? Neste caso, como (talvez obviamente) é configurado em pokes o nome correto do pokémon (Bulbasaur, e não bulbasaur), seria enviada a mensagem informando que o pokémon não existe. O porque, para quem não entendeu, é este: quando há uma condição com pokes[param], é verificado se na tabela citada - pokes -, existe algum elemento com nome param. Como param é o parâmetro da talkaction, na verdade seria verificado se "existe o pokémon do parâmetro". E como não há elemento algum chamado bulbasaur - exemplificando, novamente -, e sim, Bulbasaur, a mensagem seria enviada.
Enfim, para corrigir isso, fiz o seguinte:
Adicionei em lib a seguinte função:
function getCorrectNameOfPokemon(name)
local str = ""
if type(name) ~= "string" then name = tostring(name) end
for poke, _ in pairs(pokes) do
if poke:lower() == name:lower() then
return poke
end
end
return false
end
Alterando o código do cb com a função acima, o resultado seria:
function onSay(cid, words, param)
local pokemon = getCorrectNameOfPokemon(param)
if not pokemon then
return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Sorry, a pokemon with the name "..param.." doesn't exists.")
end
addPokemonToPlayer(cid, pokemon, "poke")
return true
end