Postado Maio 6, 2020 5 anos Pessoal preciso de uma ajuda se possivel. Tenho um creaturescript que transforma pokemon X em Y quando o player aparece na tela. funciona perfeitamente. if getCreatureName(cid) == "Rattata" then local criature = doCreateMonster(rattatalvltest[math.random(0,1)].pokemon, getCreaturePosition(cid)) doRemoveCreature(cid) end return true end Gostaria de fazer com que se o player que acionou o script for lvl entre 10 e 20 ele sumone apartir de uma tabela "Pokes1020", e se o level for entre 21 e 40 de uma tabela "Pokes2140" Acontece que ou eu errei o script, ou o script não consegue olhar o level do player que acionou isso. Tentei da seguinte forma: if getCreatureName(cid) == "Rattata" then if getPlayerLevel(cid) >= 10 and getPlayerLevel(cid) <= 20 then local criature = doCreateMonster(Pokes1020[math.random(0,1)].pokemon, getCreaturePosition(cid)) doRemoveCreature(cid) elseif getPlayerLevel(cid) >= 21 and getPlayerLevel(cid) <= 40 then local criature = doCreateMonster(Pokes1020[math.random(0,1)].pokemon, getCreaturePosition(cid)) doRemoveCreature(cid) end return true endO erro apresentado na distro é attempt to compare number with boolean. Ja tentei trocar os numeros por local level = X e substituir lá pelo X..Y..Z..(editado) Conversar em #?scripting Editado Maio 6, 2020 5 anos por Bepovi erro no codigo (veja o histórico de edições)
Postado Maio 6, 2020 5 anos @Bepovi O erro é que você está tentando comparar o level de um pokemon (que não existe), com um número. if getPlayerLevel(cid) >= 10 and getPlayerLevel(cid) <= 20 then Aquele cid ali deve ser substituído pelo id do player, pois o cid no casso desse script se refere ao pokémon(monstro).
Postado Maio 6, 2020 5 anos Autor 23 minutos atrás, Storm disse: @Bepovi O erro é que você está tentando comparar o level de um pokemon (que não existe), com um número. if getPlayerLevel(cid) >= 10 and getPlayerLevel(cid) <= 20 then Aquele cid ali deve ser substituído pelo id do player, pois o cid no casso desse script se refere ao pokémon(monstro). @StormMas como faço isso se quem ativa o script é um player aleatório (o primeiro que aparece na tela)? Editado Maio 6, 2020 5 anos por Bepovi (veja o histórico de edições)
Postado Maio 6, 2020 5 anos Autor @Storm Vou simplificar o codigo pra facilitar a visualização: function onThink(cid, interval) local rattatalvltest = { [0] = {pokemon = 'rattata [1] s'}, [1] = {pokemon = 'rattata [1] s'}, [2] = {pokemon = 'rattata [1] s'}, } local rattatalvl5 = { [0] = {pokemon = 'rattata [2] s'}, [1] = {pokemon = 'rattata [2] s'}, [2] = {pokemon = 'rattata [2] s'}, } if getCreatureName(cid) == "Rattata" then local criature = doCreateMonster(rattatalvltest[math.random(0,1)].pokemon, getCreaturePosition(cid)) doRemoveCreature(cid) end return true end Esse é o codigo funcionando. Resumidamente é um sistema de lvl em pokemons selvagens (super gambiarra, para um servidor KPDO). O servidor sumona um rattata. Quando o player aparece na tela onde está ele, o codigo transforma ele em um rattata [1] (com level). O level seria configuravel de acordo com o level do player que o encontrou. Por exemplo: Players lvl 1-20 apareçam pokemons de um "local rattatalvl20", players lvl 21-40 apareçam pokemons de um "local rattatalvl40" Saca? por isso a necessidade de criar um if getPlayerLevel(cid) >= 1 and getPlayerLevel(cid) <= 20 then e colocar a parte da troca de pokemons dentro de cada um. Desde já obrigado! Ah, só para completar, o script é acionado através do xml do pokemon, em <event name="Pokelvl"/> creaturescripts .xml: <event type="think" name="Pokelvl" event="script" value="Pokelvl.lua"/> Editado Maio 6, 2020 5 anos por Bepovi (veja o histórico de edições)
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.