Slicer 1070 Postado Outubro 8, 2012 Share Postado Outubro 8, 2012 @flames tenta isso.. 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 = 15 -- 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 = { {itemid = 2393, count = 30}, {itemid = 2393, count = 40}, } local pokemons = { {name = "Cloyster", optionalLevel = 50, sex = SEX_MALE, nick = "Crusher", ball = "super"}, {name = "Lapras", optionalLevel = 50, sex = SEX_FEMALE, nick = "Laura", ball = "normal"}, {name = "Electabuzz", optionalLevel = 50, sex = SEX_MALE, nick = "Eletron", ball = "great"}, {name = "Pinsir", optionalLevel = 50, sex = SEX_MALE, nick = "Headcutter", ball = "normal"}, {name = "Dragonair", optionalLevel = 50, sex = SEX_FEMALE, nick = "Dragonix", 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 addEvent(adjustWildPoke, 15, summon, it.optionalLevel) 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 for n = 1, #prizes do doPlayerAddItem(cid, prizes[n].itemid, prizes[n].count) end doCreatureSay(npc, "Congratulations! You won, here is your prize.", 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("Hello "..getCreatureName(cid)..", are you up to a duel? I can give prizes if you win!") 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("We have just battled! Please wait for me to recover from out last battle!") focus = 0 return true end if not hasPokemon(cid) then selfSay("You need pokemons to battle!") return true end selfSay("Ok, tell me how many pokemons will fight.") conv = 2 return true end if conv == 2 and focus == cid then if not tonumber(msg) then selfSay("Tell me the number of pokemons that will battle.") return true elseif tonumber(msg) > #pokemons then selfSay("I have only "..#pokemons..", so the maximum is "..#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("Ok, the first that defeats "..number_of_pokemons.." wins, let's start!") 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("It is better for you to refuse a battle against me!") return true end if msgcontains(msg, 'bye') and focus == cid then selfSay('Bye and do your best trainer!') 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 v1.6 selfAttackCreature(getCreatureSummons(challenger)[1]) change = true 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("I have waited too long, come back when you are ready!") return true end if not afk_warning and afk_time > afk_limit_time / 2 then selfSay("Where's your pokemon? Let's fight!") 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("You lost our duel! Maybe some other time you'll defeat me.") 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("Bye then.") return true end if (os.clock() - talk_start) > 30 then selfSay("Good bye and keep training!") 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 @pedrowarlock eh eu pensei nisso tb... mas n achei nenhum function q faça isso.. outra hora vo tentar por um label ali em vez de mudar o nome do botao pra ver se fica mais destacado... ^^ @digodigo4 o endGoldenArena(true) eh para limpar a golden toda vez q abre o serv... soh pra garantir q n vai da nenhuma meuda... e o installrankgolden() eh pra instalar a coluna 'Golden' no banco de dados... se n tiver golden no teu mapa eh soh tirar essas linhas... e isso aki.. doAreaCombatHealth(null, FIREDAMAGE, backupPos, 0, 0, 0, 255) doCreateItem(431, 1, backupPos) nao eh preciso ter... @Cleberadm os npcs de rank? itens = {{12165, 20}, {12202, 5}, {12204, 10}}, id, qntdade... Link para o comentário Compartilhar em outros sites More sharing options...
SamueLGuedes 333 Postado Outubro 8, 2012 Share Postado Outubro 8, 2012 @slicer me diz uma coisa, qual a diferença entre: PDA Slicer Com level e PDA Slicer Sem level. até agr nao entendi kk. poderia me explicar. Link para o comentário Compartilhar em outros sites More sharing options...
Slicer 1070 Postado Outubro 8, 2012 Share Postado Outubro 8, 2012 @Bolz o com LVL eh pq os pokes tem lvl... o sem LVL eh pq os pokes n tem lvl... -igual na pxg- Link para o comentário Compartilhar em outros sites More sharing options...
SamueLGuedes 333 Postado Outubro 8, 2012 Share Postado Outubro 8, 2012 tend agr vlw. heheh Link para o comentário Compartilhar em outros sites More sharing options...
felliz 0 Postado Outubro 8, 2012 Share Postado Outubro 8, 2012 alfuem responde meu ultimo post por favor, ta na pagina anterior... Link para o comentário Compartilhar em outros sites More sharing options...
PokemonFezin 2 Postado Outubro 8, 2012 Share Postado Outubro 8, 2012 (editado) Gente, eu adicionei um novo fly de pokemon no dat editor, mais como eu faço para colocar no Servidor? Editado Outubro 8, 2012 por PokemonFezin Link para o comentário Compartilhar em outros sites More sharing options...
Session Start 125 Postado Outubro 8, 2012 Share Postado Outubro 8, 2012 @Slicer, não vi que tinha o itens = Link para o comentário Compartilhar em outros sites More sharing options...
digodigo4 1 Postado Outubro 8, 2012 Share Postado Outubro 8, 2012 (editado) PokemonFezin vai em data\lib abri o configuration.lua e procure por: flys = { e coloque em baixo de ["Noctowl"] = {994, 1000}, assim: ["nome do Pokemon"] = {Tyle do sprite do pokemon, Velocidade}, depois procure por: ["fly"] = { La Vai ta assim: ["fly"] = {"Noctowl", "Dragonair", "Shiny Dragonair", "Porygon", "Aerodactyl", "Dragonite", "Charizard", "Pidgeot", "Fearow", "Zapdos", "Moltres", "Articuno", "Mew", "Mewtwo", "Shiny Dragonite", "Shiny Charizard", "Shiny Pidgeot", "Shiny Fearow", "Porygon2", "Skarmory", "Crobat"}, Adicione no final o nome do Pokémon que vc colocou para Fly exemplo: ["fly"] = {"Noctowl", "Dragonair", "Shiny Dragonair", "Porygon", "Aerodactyl", "Dragonite", "Charizard", "Pidgeot", "Fearow", "Zapdos", "Moltres", "Articuno", "Mew", "Mewtwo", "Shiny Dragonite", "Shiny Charizard", "Shiny Pidgeot", "Shiny Fearow", "Porygon2", "Skarmory", "Crobat", "nome do pokemon aqui"}, Agora Salve e feche e vai la ver se deu centro ^^ Editado Outubro 8, 2012 por digodigo4 Link para o comentário Compartilhar em outros sites More sharing options...
Maguito 21 Postado Outubro 8, 2012 Share Postado Outubro 8, 2012 Só aqui coldown bar não ta pegando ? @Slicer Night slash ele gira duas vezes. Link para o comentário Compartilhar em outros sites More sharing options...
Slicer 1070 Postado Outubro 8, 2012 Share Postado Outubro 8, 2012 (editado) @digodigo4 soh complementando.. tem q ta o id da outfit -351... por exemplo, digamos q o id do shiny charizard com fly no .dat eh 1400... tu vai por ali 1049... q eh 1400-351... @maguito ta girando 2x, e dando 2x dano, soh q ta pra girar 2 vezes seguidas.. dai da a sensaçao q rodo soh 1x ;x deixando assim.. elseif spell == "Night Slash" then local p = getThingPosWithDebug(cid) local t = { {251, {x = p.x+1, y = p.y-1, z = p.z}}, {253, {x = p.x+2, y = p.y+1, z = p.z}}, {252, {x = p.x+1, y = p.y+2, z = p.z}}, {254, {x = p.x-1, y = p.y+1, z = p.z}}, } doAreaCombatHealth(cid, DARKDAMAGE, p, scyther5, -min, -max, 165) for a = 0, 1 do for i = 1, 4 do addEvent(doSendMagicEffect, a*400, t[2], t[1]) end end addEvent(doAreaCombatHealth, 400, cid, DARKDAMAGE, p, scyther5, -min, -max, 165) achu q fica melhor ^^ Editado Outubro 8, 2012 por Slicer Link para o comentário Compartilhar em outros sites More sharing options...
digodigo4 1 Postado Outubro 8, 2012 Share Postado Outubro 8, 2012 (editado) Slicer ahhh por isso deu aquele bug no meu num foi kkk vlw entao rsrsr ---------------- eu mandei uma pergunta privada la se vc tiver tempo pra responder depois vc ver la É sobre o Item.xml e o item.otb que veio nessa atualização Editado Outubro 8, 2012 por digodigo4 Link para o comentário Compartilhar em outros sites More sharing options...
SamueLGuedes 333 Postado Outubro 8, 2012 Share Postado Outubro 8, 2012 @slicer no pda sem level 1.7, tem um bug do dragonite do hyper beam eu acho nao vo postar a img porque to ocupado agr, mais o hyper beam vai do lado dele nao na frente.quando tiver tempo eu posto mais bugs ok? Link para o comentário Compartilhar em outros sites More sharing options...
Slicer 1070 Postado Outubro 8, 2012 Share Postado Outubro 8, 2012 (editado) @Bolz aki ta tudo certo quando tiver um tempo entao posta a img pra eu analizar ^^ @digodigo4 n veio nenhuma msg pra mim aki ainda ^^ Editado Outubro 8, 2012 por Slicer Link para o comentário Compartilhar em outros sites More sharing options...
digodigo4 1 Postado Outubro 8, 2012 Share Postado Outubro 8, 2012 (editado) Slicer ja mandei kkk ^^ ------------------------------------------------ esse ERRO aqui: [08/10/2012 14:28:13] OTSYS_SQLITE3_PREPARE(): SQLITE ERROR: duplicate column name: Golden (ALTER TABLE "players" ADD "Golden" integer not null default 0;) é pq meu banco de dados diferentes né? Editado Outubro 8, 2012 por digodigo4 Link para o comentário Compartilhar em outros sites More sharing options...
Maguito 21 Postado Outubro 8, 2012 Share Postado Outubro 8, 2012 @Slicer Se sabe pq a coldown bar não aparece aqui ? Esse negocio de andar lerdo pro lado é muito ruim, chega a irritar hsuahsuausa. Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados