Postado Abril 24, 2015 10 anos Boooom dia Galera do TK. Estou tendo um simples probleminhas com meus npc's de batalha. Para batalhar com eles, estou tendo que dialogar duas vezes. Hi /Battle /Battle /"Quantidade de pokes" Como mostra no vídeo, ele diz que me ganhou na primeira tentativa, sem ao menos batalhar kkkk Além disso se não for incomodar, queria 2 Npcs com essa base de script. E que o dialogo fosse Hi/ Battle/ "Quantidade de poke". Retirando um "Battle". -Npc que só batalha uma vez, caso o player ganhe. -Npc de batalha diária, após 24 horas posso lutar com ele novamente. É isso ai, Rep+ a quem puder me ajudar \o/ Abri um beta fechado com amigos do meu servidor ontem, e tive pouquissimos bugs, então to feliz bagarai :v Segue o Script e o Vídeo abaixo. local focus = 0 local max_distance = 8 local talk_start = 0 local conv = 0 local fighting = false local challenger = 0 local afk_limit_time = 30 -- seconds local afk_time = 0 -- don't change local battle_turn = 1 -- don't change local challenger_turn = 0 -- don't change local masterpos = {} local time_to_fight_again = 30 -- seconds, not ms (so 30 * 60 means 30 minutes) local can_walk = true -- true to make this npc walks randomly local max_distance = 5 -- maximum distance this npc can get far (sqms) local walk_delay = 7 -- every seconds make this npc walk local cooldown_table = {} local min_pokemons_to_battle = 1-- change to whatever you want local number_of_pokemons = 0 -- don't change local prizes = { [1] = {{itemid = 2148, count = 50}, {itemid = 12213, count = 20}}} -- Mega bit e Oran Berry local pokemons = { {name = "Caterpie", level = 10, extralevel = 5, sex = SEX_MALE, nick = "Caterpie", ball = "normal"}, {name = "Weedle", level = 10, extralevel = 5, sex = SEX_FEMALE, nick = "Weedle", ball = "normal"}, {name = "Metapod", level = 15, extralevel = 5, sex = SEX_FEMALE, nick = "Metapod", ball = "normal"}, {name = "Kakuna", level = 15, extralevel = 5, sex = SEX_FEMALE, nick = "Kakuna", ball = "normal"}, } local function doSummonGymPokemon(npc) local this = npc if not isCreature(this) then return true end if #getCreatureSummons(this) >= 1 or focus == 0 then return true end local it = pokemons[battle_turn] doSummonMonster(this, it.name) local summon = getCreatureSummons(this)[1] local balleffect = pokeballs["normal"].effect if it.ball and pokeballs[it.ball] then balleffect = pokeballs[it.ball].effect end doSendMagicEffect(getThingPos(summon), balleffect) setPlayerStorageValue(summon, 10000, balleffect) setPlayerStorageValue(summon, 10001, gobackmsgs[math.random(#gobackmsgs)].back:gsub("doka", it.nick ~= "" and it.nick or it.name)) setPlayerStorageValue(summon, 1007, it.nick ~= "" and it.nick or it.name) doSetMonsterGym(summon, focus) local name = it.nick ~= "" and it.nick or getCreatureName(this).."s "..it.name setWildPokemonLevel(summon, it.level, getPokemonStatus(it.name, (it.extralevel + it.level)), name, 1.5) doCreatureSay(this, gobackmsgs[math.random(#gobackmsgs)].go:gsub("doka", getPlayerStorageValue(summon, 1007)), 1) fighting = true battle_turn = battle_turn + 1 end local function doWinDuel(cid, npc) if not isCreature(cid) then return true end local this = npc local x = prizes[number_of_pokemons] for n = 1, #x do doPlayerAddItem(cid, x[n].itemid, x[n].count) end doCreatureSay(npc, "Ooh nao, como pode me vencer? Aqui esta o seu premio.", 1) cooldown_table[getCreatureName(cid)] = os.clock() + time_to_fight_again return true end function onCreatureSay(cid, type, msg) local msg = string.lower(msg) if focus == cid then talk_start = os.clock() end if msgcontains(msg, 'hi') and focus == 0 and getDistanceToCreature(cid) <= 4 then if cooldown_table[getCreatureName(cid)] and cooldown_table[getCreatureName(cid)] - os.clock() > 0 then selfSay("Eae "..getCreatureName(cid)..", Eu realmente gostei da nossa ultima batalha!") conv = 10 else selfSay("Ola "..getCreatureName(cid)..", Oque voce quer?") conv = 1 end focus = cid talk_start = os.clock() return true end if (isDuelMsg(msg) or isConfirmMsg(msg)) and (conv == 1 or conv == 10) and focus == cid then if conv == 10 then selfSay("Nos ja batalhamos! Espere meus Pokemon's se recuperarem da ultima batalha!") focus = 0 return true end if not hasPokemon(cid) then selfSay("Voce precisa de Pokemon's para batalhar!") return true end selfSay("Okay, entao vamos la...") conv = 2 return true end if conv == 2 and focus == cid then if not tonumber(msg) then selfSay("Me diga quantos Pokemon's voce quer usar em batalha.") return true elseif tonumber(msg) > #pokemons then selfSay("Eu so tenho "..#pokemons..", pode ser? "..#pokemons.."!") return true elseif tonumber(msg) < min_pokemons_to_battle or tonumber(msg) < 1 then selfSay("It has to be more than "..min_pokemons_to_battle..".") return true else number_of_pokemons = tonumber(msg) selfSay("Okay, vamos a batalha "..number_of_pokemons.." Boa sorte!") challenger = focus setPlayerStorageValue(cid, 990, 1) addEvent(doSummonGymPokemon, 850, getThis()) conv = 3 return true end return true end if isNegMsg(msg) and conv == 1 and focus == cid then focus = 0 selfSay("E melhor para voce recusar uma batalha contra mim!") return true end if msgcontains(msg, 'bye') and focus == cid then selfSay('Ate logo!') setPlayerStorageValue(focus, 990, -1) focus = 0 return true end end local afk_warning = false local change = false local walkdelay = 0 function onThink() if not masterpos.x then masterpos = getThingPos(getThis()) end if focus == 0 then selfTurn(2) fighting = false challenger = 0 change = false challenger_turn = 0 battle_turn = 1 afk_time = 0 afk_warning = false if #getCreatureSummons(getThis()) >= 1 then setPlayerStorageValue(getCreatureSummons(getThis())[1], 1006, 0) doCreatureAddHealth(getCreatureSummons(getThis())[1], -getCreatureMaxHealth(getCreatureSummons(getThis())[1])) end walkdelay = walkdelay - 0.5 if walkdelay <= 0 then walkdelay = walk_delay local pos = getThingPos(getThis()) local npos = {} for a = 0, 3 do if getDistanceBetween(getPosByDir(pos, a), masterpos) <= max_distance and canWalkOnPos(getPosByDir(pos, a), true, false, true, true, false) then table.insert(npos, getPosByDir(pos, a)) end end if npos and #npos > 0 then doTeleportThing(getThis(), npos[math.random(#npos)]) end end return true else if not isCreature(focus) then focus = 0 return true end if fighting then talk_start = os.clock() if not isCreature(getCreatureTarget(getThis())) then if #getCreatureSummons(challenger) >= 1 then if getCreatureOutfit(getCreatureSummons(challenger)[1]).lookType ~= 2 then --alterado v2.6 selfAttackCreature(getCreatureSummons(challenger)[1]) challenger_turn = challenger_turn + 1 afk_time = 0 end else afk_time = afk_time + 0.5 if change then change = false challenger_turn = challenger_turn + 1 end end end if afk_time > afk_limit_time then setPlayerStorageValue(focus, 990, -1) focus = 0 selfSay("Eu esperei muito tempo, volte quando estiver pronto!") return true end if not afk_warning and afk_time > afk_limit_time / 2 then selfSay("Cade seu Pokemon? vamos logo!") afk_warning = true end if #getCreatureSummons(getThis()) == 0 then if battle_turn > number_of_pokemons then addEvent(doWinDuel, 1000, focus, getThis()) setPlayerStorageValue(focus, 990, -1) focus = 0 return true end addEvent(doSummonGymPokemon, 1000, getThis()) end if not hasPokemon(challenger) or challenger_turn > 6 or challenger_turn >= number_of_pokemons then selfSay("Voce perdeu hahahaha! Talvez voce possa me ganhar um dia.") setPlayerStorageValue(focus, 990, -1) focus = 0 return true end end local npcpos = getThingPos(getThis()) local focpos = getThingPos(focus) if npcpos.z ~= focpos.z then setPlayerStorageValue(focus, 990, -1) focus = 0 selfSay("entao tchau.") return true end if (os.clock() - talk_start) > 30 then selfSay("Ate logo e continue treinando!") setPlayerStorageValue(focus, 990, -1) focus = 0 end if getDistanceToCreature(focus) > max_distance then setPlayerStorageValue(focus, 990, -1) focus = 0 return true end local dir = doRedirectDirection(getDirectionTo(npcpos, focpos)) selfTurn(dir) end return true end Vídeo : https://www.youtube.com/watch?v=MTLQybWo3PE&feature=youtu.be Editado Maio 11, 2015 10 anos por eliaspalermo (veja o histórico de edições)
Postado Abril 24, 2015 10 anos local focus = 0 local max_distance = 8 local talk_start = 0 local conv = 0 local fighting = false local challenger = 0 local afk_limit_time = 30 -- seconds local afk_time = 0 -- don't change local battle_turn = 1 -- don't change local challenger_turn = 0 -- don't change local masterpos = {} local time_to_fight_again = 86400 -- seconds, not ms (so 30 * 60 means 30 minutes) local can_walk = true -- true to make this npc walks randomly local max_distance = 5 -- maximum distance this npc can get far (sqms) local walk_delay = 5 -- every seconds make this npc walk local cooldown_table = {} local min_pokemons_to_battle = 1-- change to whatever you want local number_of_pokemons = 0 -- don't change local prizes = { [1] = {{itemid = 2148, count = 50}, {itemid = 12213, count = 20}}} -- Mega bit e Oran Berry local pokemons = { {name = "Ivysaur", level = 70, extralevel = 20, sex = SEX_MALE, nick = "Hiv", ball = "super"}, {name = "Grotle", level = 80, extralevel = 15, sex = SEX_FEMALE, nick = "Grot", ball = "normal"}, {name = "Grovyle", level = 95, extralevel = 20, sex = SEX_MALE, nick = "Grov", ball = "great"}, {name = "Carnivine", level = 80, extralevel = 30, sex = SEX_MALE, nick = "Carne", ball = "normal"}, {name = "Victreebel", level = 95, extralevel = 37, sex = SEX_FEMALE, nick = "Vic", ball = "ultra"}, {name = "Tropius", level = 95, extralevel = 2, sex = SEX_FEMALE, nick = "Trop", ball = "ultra"}, } local function doSummonGymPokemon(npc) local this = npc if not isCreature(this) then return true end if #getCreatureSummons(this) >= 1 or focus == 0 then return true end local it = pokemons[battle_turn] doSummonMonster(this, it.name) local summon = getCreatureSummons(this)[1] local balleffect = pokeballs["normal"].effect if it.ball and pokeballs[it.ball] then balleffect = pokeballs[it.ball].effect end doSendMagicEffect(getThingPos(summon), balleffect) setPlayerStorageValue(summon, 10000, balleffect) setPlayerStorageValue(summon, 10001, gobackmsgs[math.random(#gobackmsgs)].back:gsub("doka", it.nick ~= "" and it.nick or it.name)) setPlayerStorageValue(summon, 1007, it.nick ~= "" and it.nick or it.name) doSetMonsterGym(summon, focus) local name = it.nick ~= "" and it.nick or getCreatureName(this).."s "..it.name setWildPokemonLevel(summon, it.level, getPokemonStatus(it.name, (it.extralevel + it.level)), name, 1.5) doCreatureSay(this, gobackmsgs[math.random(#gobackmsgs)].go:gsub("doka", getPlayerStorageValue(summon, 1007)), 1) fighting = true battle_turn = battle_turn + 1 end local function doWinDuel(cid, npc) if not isCreature(cid) then return true end local this = npc local x = prizes[number_of_pokemons] for n = 1, #x do doPlayerAddItem(cid, x[n].itemid, x[n].count) end doCreatureSay(npc, "Parabéns! Você ganhou, aqui é o seu prêmio.", 1) cooldown_table[getCreatureName(cid)] = os.clock() + time_to_fight_again return true end function onCreatureSay(cid, type, msg) local msg = string.lower(msg) if focus == cid then talk_start = os.clock() end if msgcontains(msg, 'hi') and focus == 0 and getDistanceToCreature(cid) <= 4 then if cooldown_table[getCreatureName(cid)] and cooldown_table[getCreatureName(cid)] - os.clock() > 0 then selfSay("Hello "..getCreatureName(cid)..", I really enjoyed our last battle!") conv = 10 else selfSay("Olá "..getCreatureName(cid)..", voçê deseja duelar comigo? Eu posso dar prêmios se você ganhar, fale Duel para batalha") conv = 1 end focus = cid talk_start = os.clock() return true end if (isDuelMsg(msg) or isConfirmMsg(msg)) and (conv == 1 or conv == 10) and focus == cid then if conv == 10 then selfSay("Acabamos de lutar! Por favor, espere um tempo para me recuperar da última batalha!") focus = 0 return true end if not hasPokemon(cid) then selfSay("Você precisa pokemons para a batalha!") return true end selfSay("Ok, me diga com quantos pokemons voçê vai lutar.") conv = 2 return true end if conv == 2 and focus == cid then if not tonumber(msg) then selfSay("Diga-me o número de pokemons que que nós vamos batalhar.") return true elseif tonumber(msg) > #pokemons then selfSay("Só tenho "..#pokemons..",de modo que o máximo é de "..#pokemons.."!") return true elseif tonumber(msg) < min_pokemons_to_battle or tonumber(msg) < 1 then selfSay("Tem que ser mais do que "..min_pokemons_to_battle..".") return true else number_of_pokemons = tonumber(msg) selfSay("Ok, o primeiro que vencer "..number_of_pokemons.." leva-rá a vitória, vamos começar!") challenger = focus setPlayerStorageValue(cid, 990, 1) addEvent(doSummonGymPokemon, 850, getThis()) conv = 3 return true end return true end if isNegMsg(msg) and conv == 1 and focus == cid then focus = 0 selfSay("É melhor para você recusar uma batalha contra mim!") return true end if msgcontains(msg, 'bye') and focus == cid then selfSay('Tchau e acredito que fiz de voçê um melhor treinador!') setPlayerStorageValue(focus, 990, -1) focus = 0 return true end end local afk_warning = false local change = false local walkdelay = 0 function onThink() if not masterpos.x then masterpos = getThingPos(getThis()) end if focus == 0 then selfTurn(2) fighting = false challenger = 0 change = false challenger_turn = 0 battle_turn = 1 afk_time = 0 afk_warning = false if #getCreatureSummons(getThis()) >= 1 then setPlayerStorageValue(getCreatureSummons(getThis())[1], 1006, 0) doCreatureAddHealth(getCreatureSummons(getThis())[1], -getCreatureMaxHealth(getCreatureSummons(getThis())[1])) end walkdelay = walkdelay - 0.5 if walkdelay <= 0 then walkdelay = walk_delay local pos = getThingPos(getThis()) local npos = {} for a = 0, 3 do if getDistanceBetween(getPosByDir(pos, a), masterpos) <= max_distance and canWalkOnPos(getPosByDir(pos, a), true, false, true, true, false) then table.insert(npos, getPosByDir(pos, a)) end end if npos and #npos > 0 then doTeleportThing(getThis(), npos[math.random(#npos)]) end end return true else if not isCreature(focus) then focus = 0 return true end if fighting then talk_start = os.clock() if not isCreature(getCreatureTarget(getThis())) then if #getCreatureSummons(challenger) >= 1 then selfAttackCreature(getCreatureSummons(challenger)[1]) change = true afk_time = 0 else afk_time = afk_time + 0.5 if change then change = false challenger_turn = challenger_turn + 1 end end end if afk_time > afk_limit_time then setPlayerStorageValue(focus, 990, -1) focus = 0 selfSay("Eu esperei muito tempo, voltar quando estiver pronto!") return true end if not afk_warning and afk_time > afk_limit_time / 2 then selfSay("Onde está seu pokemon? Vamos lutar!") afk_warning = true end if #getCreatureSummons(getThis()) == 0 then if battle_turn > number_of_pokemons then addEvent(doWinDuel, 1000, focus, getThis()) setPlayerStorageValue(focus, 990, -1) focus = 0 return true end addEvent(doSummonGymPokemon, 1000, getThis()) end if not hasPokemon(challenger) or challenger_turn > 6 or challenger_turn >= number_of_pokemons then selfSay("Você perdeu o nosso duelo! Talvez algum outro momento você vai me derrotar.") setPlayerStorageValue(focus, 990, -1) focus = 0 return true end end local npcpos = getThingPos(getThis()) local focpos = getThingPos(focus) if npcpos.z ~= focpos.z then setPlayerStorageValue(focus, 990, -1) focus = 0 selfSay("Flw Parceiro.") return true end if (os.clock() - talk_start) > 30 then selfSay("Adeus e mantenha a formação!") setPlayerStorageValue(focus, 990, -1) focus = 0 end if getDistanceToCreature(focus) > max_distance then setPlayerStorageValue(focus, 990, -1) focus = 0 return true end local dir = doRedirectDirection(getDirectionTo(npcpos, focpos)) selfTurn(dir) end return true end Pronto ele só pode ser usado a cada 24 horas e teste ai creio que vá funcionar apenas edite as mensagens a seu gosto Ando devagar, porque já tive pressa. E levo esse sorriso, porque já chorei demais... ________________________________________________________________________________ Minhas Sprites: Mega Metagross Mega Abomasnow Pack de Shinys [Posso atualizá-lo com novos shinys a qualquer momento] Tutoriais: [Completo] Criando e adicionando um novo Pokémon [Actions] Criando quest no RME Editores Lua/Xml/Sync Entre outros: Editores Win/Mac/Linux
Postado Abril 25, 2015 10 anos Autor Segura meu Rep+ ae fera. Muito obrigado, funcionou perfeitamente E quanto ao npc de batalhar apenas um vez caso vencer, tu sabe fazer man? Preciso deles pra alguns npcs da historia do game xD
Postado Abril 25, 2015 10 anos @eliaspalermo, local focus = 0 local max_distance = 8 local talk_start = 0 local conv = 0 local fighting = false local challenger = 0 local afk_limit_time = 30 -- seconds local afk_time = 0 -- don't change local battle_turn = 1 -- don't change local challenger_turn = 0 -- don't change local masterpos = {} local time_to_fight_again = 86400 -- seconds, not ms (so 30 * 60 means 30 minutes) local can_walk = true -- true to make this npc walks randomly local max_distance = 5 -- maximum distance this npc can get far (sqms) local walk_delay = 5 -- every seconds make this npc walk local cooldown_table = {} local min_pokemons_to_battle = 1-- change to whatever you want local number_of_pokemons = 0 -- don't change local prizes = { [1] = {{itemid = 2148, count = 50}, {itemid = 12213, count = 20}}} -- Mega bit e Oran Berry local pokemons = { {name = "Ivysaur", level = 70, extralevel = 20, sex = SEX_MALE, nick = "Hiv", ball = "super"}, {name = "Grotle", level = 80, extralevel = 15, sex = SEX_FEMALE, nick = "Grot", ball = "normal"}, {name = "Grovyle", level = 95, extralevel = 20, sex = SEX_MALE, nick = "Grov", ball = "great"}, {name = "Carnivine", level = 80, extralevel = 30, sex = SEX_MALE, nick = "Carne", ball = "normal"}, {name = "Victreebel", level = 95, extralevel = 37, sex = SEX_FEMALE, nick = "Vic", ball = "ultra"}, {name = "Tropius", level = 95, extralevel = 2, sex = SEX_FEMALE, nick = "Trop", ball = "ultra"}, } local function doSummonGymPokemon(npc) local this = npc if not isCreature(this) then return true end if #getCreatureSummons(this) >= 1 or focus == 0 then return true end local it = pokemons[battle_turn] doSummonMonster(this, it.name) local summon = getCreatureSummons(this)[1] local balleffect = pokeballs["normal"].effect if it.ball and pokeballs[it.ball] then balleffect = pokeballs[it.ball].effect end doSendMagicEffect(getThingPos(summon), balleffect) setPlayerStorageValue(summon, 10000, balleffect) setPlayerStorageValue(summon, 10001, gobackmsgs[math.random(#gobackmsgs)].back:gsub("doka", it.nick ~= "" and it.nick or it.name)) setPlayerStorageValue(summon, 1007, it.nick ~= "" and it.nick or it.name) doSetMonsterGym(summon, focus) local name = it.nick ~= "" and it.nick or getCreatureName(this).."s "..it.name setWildPokemonLevel(summon, it.level, getPokemonStatus(it.name, (it.extralevel + it.level)), name, 1.5) doCreatureSay(this, gobackmsgs[math.random(#gobackmsgs)].go:gsub("doka", getPlayerStorageValue(summon, 1007)), 1) fighting = true battle_turn = battle_turn + 1 end local function doWinDuel(cid, npc) if not isCreature(cid) then return true end local this = npc local x = prizes[number_of_pokemons] for n = 1, #x do doPlayerAddItem(cid, x[n].itemid, x[n].count) end doCreatureSay(npc, "Parabéns! Você ganhou, aqui é o seu prêmio.", 1) setPlayerStorageValue(cid, 974, 1) cooldown_table[getCreatureName(cid)] = os.clock() + time_to_fight_again return true end function onCreatureSay(cid, type, msg) local msg = string.lower(msg) if focus == cid then talk_start = os.clock() end if msgcontains(msg, 'hi') and focus == 0 and getDistanceToCreature(cid) <= 4 then if cooldown_table[getCreatureName(cid)] and cooldown_table[getCreatureName(cid)] - os.clock() > 0 then selfSay("Hello "..getCreatureName(cid)..", I really enjoyed our last battle!") conv = 10 else selfSay("Olá "..getCreatureName(cid)..", voçê deseja duelar comigo? Eu posso dar prêmios se você ganhar, fale Duel para batalha") conv = 1 end focus = cid talk_start = os.clock() return true end if (isDuelMsg(msg) or isConfirmMsg(msg)) and (conv == 1 or conv == 10) and focus == cid then if conv == 10 then selfSay("Acabamos de lutar! Por favor, espere um tempo para me recuperar da última batalha!") focus = 0 return true end if getPlayerStorageValue(cid, 974) >= 1 then selfSay("You have already won my fight.") focus = 0 return true end if not hasPokemon(cid) then selfSay("Você precisa pokemons para a batalha!") return true end selfSay("Ok, me diga com quantos pokemons voçê vai lutar.") conv = 2 return true end if conv == 2 and focus == cid then if not tonumber(msg) then selfSay("Diga-me o número de pokemons que que nós vamos batalhar.") return true elseif tonumber(msg) > #pokemons then selfSay("Só tenho "..#pokemons..",de modo que o máximo é de "..#pokemons.."!") return true elseif tonumber(msg) < min_pokemons_to_battle or tonumber(msg) < 1 then selfSay("Tem que ser mais do que "..min_pokemons_to_battle..".") return true else number_of_pokemons = tonumber(msg) selfSay("Ok, o primeiro que vencer "..number_of_pokemons.." leva-rá a vitória, vamos começar!") challenger = focus setPlayerStorageValue(cid, 990, 1) addEvent(doSummonGymPokemon, 850, getThis()) conv = 3 return true end return true end if isNegMsg(msg) and conv == 1 and focus == cid then focus = 0 selfSay("É melhor para você recusar uma batalha contra mim!") return true end if msgcontains(msg, 'bye') and focus == cid then selfSay('Tchau e acredito que fiz de voçê um melhor treinador!') setPlayerStorageValue(focus, 990, -1) focus = 0 return true end end local afk_warning = false local change = false local walkdelay = 0 function onThink() if not masterpos.x then masterpos = getThingPos(getThis()) end if focus == 0 then selfTurn(2) fighting = false challenger = 0 change = false challenger_turn = 0 battle_turn = 1 afk_time = 0 afk_warning = false if #getCreatureSummons(getThis()) >= 1 then setPlayerStorageValue(getCreatureSummons(getThis())[1], 1006, 0) doCreatureAddHealth(getCreatureSummons(getThis())[1], -getCreatureMaxHealth(getCreatureSummons(getThis())[1])) end walkdelay = walkdelay - 0.5 if walkdelay <= 0 then walkdelay = walk_delay local pos = getThingPos(getThis()) local npos = {} for a = 0, 3 do if getDistanceBetween(getPosByDir(pos, a), masterpos) <= max_distance and canWalkOnPos(getPosByDir(pos, a), true, false, true, true, false) then table.insert(npos, getPosByDir(pos, a)) end end if npos and #npos > 0 then doTeleportThing(getThis(), npos[math.random(#npos)]) end end return true else if not isCreature(focus) then focus = 0 return true end if fighting then talk_start = os.clock() if not isCreature(getCreatureTarget(getThis())) then if #getCreatureSummons(challenger) >= 1 then selfAttackCreature(getCreatureSummons(challenger)[1]) change = true afk_time = 0 else afk_time = afk_time + 0.5 if change then change = false challenger_turn = challenger_turn + 1 end end end if afk_time > afk_limit_time then setPlayerStorageValue(focus, 990, -1) focus = 0 selfSay("Eu esperei muito tempo, voltar quando estiver pronto!") return true end if not afk_warning and afk_time > afk_limit_time / 2 then selfSay("Onde está seu pokemon? Vamos lutar!") afk_warning = true end if #getCreatureSummons(getThis()) == 0 then if battle_turn > number_of_pokemons then addEvent(doWinDuel, 1000, focus, getThis()) setPlayerStorageValue(focus, 990, -1) focus = 0 return true end addEvent(doSummonGymPokemon, 1000, getThis()) end if not hasPokemon(challenger) or challenger_turn > 6 or challenger_turn >= number_of_pokemons then selfSay("Você perdeu o nosso duelo! Talvez algum outro momento você vai me derrotar.") setPlayerStorageValue(focus, 990, -1) focus = 0 return true end end local npcpos = getThingPos(getThis()) local focpos = getThingPos(focus) if npcpos.z ~= focpos.z then setPlayerStorageValue(focus, 990, -1) focus = 0 selfSay("Flw Parceiro.") return true end if (os.clock() - talk_start) > 30 then selfSay("Adeus e mantenha a formação!") setPlayerStorageValue(focus, 990, -1) focus = 0 end if getDistanceToCreature(focus) > max_distance then setPlayerStorageValue(focus, 990, -1) focus = 0 return true end local dir = doRedirectDirection(getDirectionTo(npcpos, focpos)) selfTurn(dir) end return true end Ando devagar, porque já tive pressa. E levo esse sorriso, porque já chorei demais... ________________________________________________________________________________ Minhas Sprites: Mega Metagross Mega Abomasnow Pack de Shinys [Posso atualizá-lo com novos shinys a qualquer momento] Tutoriais: [Completo] Criando e adicionando um novo Pokémon [Actions] Criando quest no RME Editores Lua/Xml/Sync Entre outros: Editores Win/Mac/Linux
Postado Abril 25, 2015 10 anos Autor Beleza, muito obrigado mano, só me tira uma dúvida. Esse script do npc que só batalha apenas uma vez. Quando eu for fazer mais de um npc eu tenho que mudar o storage ou algo do tipo? se sim, em qual linha seria? E uma outra coisa que eu já ia esquecendo, tem como remover a parte de escolher quantos pokes o player quer batalhar? para ele ser obrigado a batalhar com todos os pokes que este npc tem. Rep++ Aee man o script ta com um bug xD Se eu batalho com apenas 1 pokémon, o sistema salva e eu só poderei batalhar com ele novamente após as 24 horas. Tudo certinho. Mas caso eu lute com 2 ou mais, não salva e eu posso lutar com ele continuamente. Além dele não me dar o prêmio. Editado Abril 25, 2015 10 anos por eliaspalermo (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.