Postado Janeiro 26, 2018 7 anos ao usar Order no char para usar Ride ou fly da esse error! / porem as vez da error e as vez não! +Rep [26/01/2018 13:57:23] [Error - Action Interface] [26/01/2018 13:57:23] In a timer event called from: [26/01/2018 13:57:23] data/actions/scripts/order.lua:onUse [26/01/2018 13:57:23] Description: [26/01/2018 13:57:23] data/lib/order.lua:331: attempt to compare number with nil [26/01/2018 13:57:23] stack traceback: [26/01/2018 13:57:23] data/lib/order.lua:331: in function 'recheck' [26/01/2018 13:57:23] data/lib/order.lua:364: in function <data/lib/order.lua:347> @Nazo Editado Janeiro 27, 2018 7 anos por robson da silva (veja o histórico de edições)
Postado Janeiro 26, 2018 7 anos @robson da silva, favor colocar o código do order.lua no tópico com a opção de colocar código do editor de post daqui mesmo! Se não souber como é: edit:@robson da silva, poste o conteúdo de data/lib/order.lua também. Editado Janeiro 26, 2018 7 anos por Nazo (veja o histórico de edições)
Postado Janeiro 27, 2018 7 anos Autor local skills = specialabilities local surfborders = {4644, 4645, 4646, 4647, 4648, 4649, 4650, 4651, 4652, 4653, 4654, 4655, 4656, 4657, 4658, 4659, 4660, 4661, 4662, 4663} local storages = {17000, 63215, 17001, 13008, 5700} --alterado v1.9 \/ local unfix = {x = 1, y = 1, z = 1} local txt = { ["rock smash"] = {"break that rock!", "smash that rock!", "destroy that rock!", "smash it!", "break it!", "destroy it!"}, ["cut"] = {"cut that bush!", "cut it down!", "cut it off!", "cut off that bush!", "cut down that bush!", "cut that bush down!"}, ["move"] = {"move!", "move there!", "go there!", "walk there!"}, ["light"] = {"flash!", "light!", "flash this place!", "light up this place!"}, ["dig"] = {"open that hole!", "dig that hole!", "open it!", "dig it!"}, ["blink"] = {"teleport there!", "blink there!", "blink!", "teleport!"}, ["ride"] = {"let me ride you!", "let's ride!", "let me mount you!", "let me get on you!"}, ["fly"] = {"let's fly!", "let me get on you!"} , ["untransform"] = {"go back to normal!", "transform into yourself again!", "stop transformation!"}, ["headbutt"] = {"headbutt on three", "headbutt that three!", "headbutt it off"}, ["levitate_fly"] = {"let's levitate!", "let me get on you!", "let's scary someone!"}, --alterado v1.8 } function onUse(cid, item, frompos, item2, topos) if hasTeleportTile(topos) then doPlayerSendCancel(cid, "You can't move your pokemon to a teleport!") return true end local checkpos = topos checkpos.stackpos = 0 if getPlayerStorageValue(cid, 75846) >= 1 then return true end --alterado v1.9 if getTileThingByPos(checkpos).uid <= 0 then return true end --------END FLY/RIDE -------- if getCreatureCondition(cid, CONDITION_OUTFIT) and (item2.uid == cid or getRecorderPlayer(topos) == cid) and (getPlayerStorageValue(cid, 17000) >= 1 or getPlayerStorageValue(cid, 17001) >= 1) then if isInArray({460, 11675, 11676, 11677}, getTileInfo(getThingPos(cid)).itemid) then doPlayerSendCancel(cid, "You can\'t stop flying at this height!") return true end local item = getPlayerSlotItem(cid, 8) local pokemon = getItemAttribute(item.uid, "poke") local x = pokes[pokemon] if getTileInfo(getThingPos(cid)).itemid >= 4820 and getTileInfo(getThingPos(cid)).itemid <= 4825 then doPlayerSendCancel(cid, "You can\'t stop flying above the water!") return true end doSummonMonster(cid, pokemon) local pk = getCreatureSummons(cid)[1] if not isCreature(pk) then pk = doCreateMonster(pokemon, backupPos) if not isCreature(pk) then doPlayerSendCancel(cid, "You can't stop flying/riding here.") return true end doConvinceCreature(cid, pk) end doTeleportThing(pk, getThingPos(cid), false) doCreatureSetLookDir(pk, getCreatureLookDir(cid)) adjustStatus(pk, item.uid, true, false, true) doPlayerSay(cid, ""..getPokeName(getCreatureSummons(cid)[1])..", let me get down!", 1) doRegainSpeed(cid) doRemoveCondition(cid, CONDITION_OUTFIT) setPlayerStorageValue(cid, 17000, -1) setPlayerStorageValue(cid, 17001, -1) if useOTClient then doUpdateMoves(cid) doPlayerSendCancel(cid, '12//,show') --alterado aki end return true end ----------------------------- local player = getRecorderPlayer(topos) --alterado v1.8 \/ -------- DUEL SYSTEM ------------------------ if isPlayer(player) and player ~= cid and getPlayerStorageValue(player, 6598754) <= -1 and getPlayerStorageValue(player, 52480) <= -1 then if getPlayerStorageValue(cid, 52480) <= -1 or (getPlayerStorageValue(cid, 52481) >= 1 and getPlayerStorageValue(cid, 52482) ~= -1) then --- for s = 1, #storages do if getPlayerStorageValue(cid, storages[s]) >= 1 then return doPlayerSendTextMessage(cid, 20, "You can't do that while is Flying, Riding, Surfing, Diving or mount a bike!") end end if getPlayerStorageValue(cid, 6598754) == 1 or getPlayerStorageValue(cid, 6598755) == 1 then return doPlayerSendTextMessage(cid, 20, "You can't do that while in PVP zone!") end if #getCreatureSummons(cid) < 1 then return doPlayerSendTextMessage(cid, 20, "You need a pokemon to invit someone to duel!") end --- if getPlayerStorageValue(cid, 52480) <= -1 then doPlayerSetVocation(cid, 7) openChannelDialog(cid) setPlayerStorageValue(cid, 52480, 1) setPlayerStorageValue(cid, 6598754, 5) setPlayerStorageValue(cid, 52482, getCreatureName(cid)..",") setPlayerStorageValue(cid, 52483, getCreatureName(player)..",") doCreatureSetSkullType(cid, 2) doSendAnimatedText(getThingPosWithDebug(cid), "FIRST TEAM", 215) return true elseif getPlayerStorageValue(cid, 52481) >= 1 and getPlayerStorageValue(cid, 52482) ~= -1 then local t1 = string.explode(getPlayerStorageValue(cid, 52482), ",") local t2 = string.explode(getPlayerStorageValue(cid, 52483), ",") if (#t1 >= getPlayerStorageValue(cid, 52480) and #t2 >= getPlayerStorageValue(cid, 52480)) or (isInArray(t1, getCreatureName(player)) or isInArray(t2, getCreatureName(player))) then return true end local sto2, sto3, name = getPlayerStorageValue(cid, 52482), getPlayerStorageValue(cid, 52483), getCreatureName(player) if getPlayerStorageValue(cid, 52480) == 2 then setPlayerStorageValue(cid, 52483, sto3.. name..",") --time adversario doSendAnimatedText(getThingPosWithDebug(player), "SECOND TEAM", 215) elseif getPlayerStorageValue(cid, 52480) == 3 and #t1 < 3 then setPlayerStorageValue(cid, 52482, sto2.. name..",") --time aliado doSendAnimatedText(getThingPosWithDebug(player), "FIRST TEAM", 215) elseif getPlayerStorageValue(cid, 52480) == 3 and #t1 >= 3 then setPlayerStorageValue(cid, 52483, sto3.. name..",") --time adversario doSendAnimatedText(getThingPosWithDebug(player), "SECOND TEAM", 215) end setPlayerStorageValue(player, 52481, getPlayerStorageValue(cid, 52481)) setPlayerStorageValue(player, 52485, getCreatureName(cid)) local players, pokes = getPlayerStorageValue(cid, 52480), getPlayerStorageValue(cid, 52481) local str = {} table.insert(str, getCreatureName(cid).." is inviting you to a duel! Use order in him to accept it!\n") table.insert(str, "Info Battle: Duel "..players.."x"..players.." - "..pokes.." pokes.") --alterado aki doPlayerSendTextMessage(player, 20, table.concat(str)) return true end end --- elseif isPlayer(player) and player ~= cid and getPlayerStorageValue(player, 6598754) == 5 and getPlayerStorageValue(player, 52481) >= 1 then local t1 = string.explode(getPlayerStorageValue(player, 52482), ",") local t2 = string.explode(getPlayerStorageValue(player, 52483), ",") --- if not isInArray(t1, getCreatureName(cid)) and not isInArray(t2, getCreatureName(cid)) then return true end --- for s = 1, #storages do if getPlayerStorageValue(cid, storages[s]) >= 1 then return doPlayerSendTextMessage(cid, 20, "You can't do that while is Flying, Riding, Surfing, Diving or mount a bike!") end end if getPlayerStorageValue(cid, 6598754) == 1 or getPlayerStorageValue(cid, 6598755) == 1 then return doPlayerSendTextMessage(cid, 20, "You can't do that while in PVP zone!") end local pokes = getLivePokeballs(cid, getPlayerSlotItem(cid, 3).uid, true) if #pokes < getPlayerStorageValue(player, 52481) then return doPlayerSendTextMessage(cid, 20, "You need atleast ".. getPlayerStorageValue(player, 52481).." pokemons to duel with this person!") end if getPlayerStorageValue(cid, 52482) ~= -1 then return doPlayerSendTextMessage(cid, 20, "You already invit someone to duel!") end if #getCreatureSummons(cid) < 1 then return doPlayerSendTextMessage(cid, 20, "You need a pokemon to accept a duel!") end --- setPlayerStorageValue(cid, 52480, getPlayerStorageValue(player, 52480)) setPlayerStorageValue(player, 52484, getPlayerStorageValue(player, 52484)-1) if getPlayerStorageValue(player, 52484) == 0 then for a = 1, #t1 do local pid, sid = getPlayerByName(t1[a]), getPlayerByName(t2[a]) if not isCreature(pid) or getPlayerStorageValue(pid, 52480) <= -1 then removeFromTableDuel(player, t1[a]) else doCreatureSetSkullType(pid, 1) end if not isCreature(sid) or getPlayerStorageValue(sid, 52480) <= -1 then removeFromTableDuel(player, t2[a]) else doCreatureSetSkullType(sid, 1) end end beginDuel(player, 6) else doCreatureSetSkullType(cid, 2) end doSendAnimatedText(getThingPos(cid), "BATTLE", COLOR_ELECTRIC) return true elseif isPlayer(player) and player == cid and getPlayerStorageValue(player, 52480) >= 1 then doEndDuel(cid, true) return true end ------------------------------------------------------------------------------------ if #getCreatureSummons(cid) == 0 then return doPlayerSendCancel(cid, "You need a pokemon to use order!") end if getCreatureNoMove(getCreatureSummons(cid)[1]) then return true end markLP(getCreatureSummons(cid)[1], -1) local marked = getMarkedPos(getCreatureSummons(cid)[1]) --alterado v1.8 \/ if type(marked) == "table" and marked.x == topos.x and marked.y == topos.y then return true end local thisball = getPlayerSlotItem(cid, 8) local mysum = getCreatureSummons(cid)[1] local sid = mysum or cid local maxMoveDist = getDistanceBetween(getThingPos(sid), topos) * 2 + 1 markPos(mysum, topos) markOwnerPos(mysum, getThingPos(cid)) -------- ROCK SMASH --------- if item2.itemid == 1285 and isInArray(skills["rock smash"], getPokemonName(mysum)) then doPlayerSay(cid, ""..getPokeName(mysum)..", "..txt["rock smash"][math.random(1, #txt["rock smash"])].."", 1) addEvent(goThere, 500, mysum, topos, "rock smash", isCreature(getCreatureTarget(cid))) return true end ----------------------------- -------- HEADBUTT ----------- if item2.itemid == 12591 and getPokemonLevel(mysum) >= 15 then --alterado v1.6 --id do item arvore normal doPlayerSay(cid, ""..getPokeName(mysum)..", "..txt["headbutt"][math.random(1, #txt["headbutt"])].."", 1) addEvent(goThere, 500, mysum, topos, "headbutt", isCreature(getCreatureTarget(cid))) return true end ----------------------------- -------- CUT ---------------- if item2.itemid == 2767 and isInArray(skills["cut"], getPokemonName(mysum)) then doPlayerSay(cid, ""..getPokeName(mysum)..", "..txt["cut"][math.random(1, #txt["cut"])].."", 1) addEvent(goThere, 500, mysum, topos, "cut", isCreature(getCreatureTarget(cid))) return true end ----------------------------- -------- TRANSFORM ---------- --alterado v1.7 if (getCreatureName(mysum) == "Ditto" or getCreatureName(mysum) == "Shiny Ditto") and isMonster(item2.uid) and pokes[getCreatureName(item2.uid)] then if item2.uid == mysum then --edited if isTransformed(mysum) then deTransform(mysum, getItemAttribute(thisball.uid, "transTurn")) markPos(mysum, unfix) doPlayerSay(cid, ""..getPokeName(mysum)..", "..txt["untransform"][math.random(1, #txt["untransform"])].."", 1) if useKpdoDlls then doUpdateMoves(cid) --alterado v1.9 end return true end doPlayerSendCancel(cid, "Your ditto is not transformed.") markPos(mysum, unfix) return true end if getCreatureName(item2.uid) == "Ditto" or getCreatureName(item2.uid) == "Shiny Ditto" then --edited transform for shiny ditto doPlayerSendCancel(cid, "Your ditto can't transform into another ditto.") markPos(mysum, unfix) return true end if getCreatureName(item2.uid) == getPlayerStorageValue(mysum, 1010) then doPlayerSendCancel(cid, "Your ditto is already transformed into that pokemon.") markPos(mysum, unfix) return true end local cd = getCD(thisball.uid, "trans", 40) if cd > 0 then doPlayerSendCancel(cid, "Your pokemon is too tired to transform again. Cooldown: ("..getStringmytempo(cd)..")") return true end if getHappiness(mysum) <= 50 then doSendMagicEffect(getThingPos(mysum), happinessRate[1].effect) markPos(mysum, unfix) return true end local turn = getItemAttribute(thisball.uid, "transTurn") if not turn or turn > 10 then doItemSetAttribute(thisball.uid, "transTurn", 0) else doItemSetAttribute(thisball.uid, "transTurn", turn + 1) end local time = 140 + 2 * getPokemonLevel(mysum) turn = getItemAttribute(thisball.uid, "transTurn") markPos(mysum, unfix) setPlayerStorageValue(mysum, 1010, getCreatureName(item2.uid)) doSetCreatureOutfit(mysum, {lookType = getPokemonXMLOutfit(getCreatureName(item2.uid))}, -1) --alterado v1.8 addEvent(deTransform, time * 1000, mysum, turn) doSendMagicEffect(getThingPos(mysum), 184) doCreatureSay(mysum, "TRANSFORM!", TALKTYPE_MONSTER) local name = getCreatureName(item2.uid) setCD(thisball.uid, "trans", 40) doItemSetAttribute(thisball.uid, "transBegin", os.clock()) doSetItemAttribute(thisball.uid, "transLeft", time) doSetItemAttribute(thisball.uid, "transOutfit", getPokemonXMLOutfit(getCreatureName(item2.uid))) --alterado v1.8 doSetItemAttribute(thisball.uid, "transName", getCreatureName(item2.uid)) doFaceCreature(mysum, getThingPos(item2.uid)) doPlayerSay(cid, ""..getPokeName(mysum)..", transform into "..getArticle(name).." "..name.."!", 1) if useKpdoDlls then doUpdateMoves(cid) --alterado v1.6 end if dittoCopiesStatusToo then setPlayerStorageValue(mysum, 1001, dittoBonus*getOffense(item2.uid)) setPlayerStorageValue(mysum, 1002, dittoBonus*getDefense(item2.uid)) setPlayerStorageValue(mysum, 1003, getSpeed(item2.uid)) setPlayerStorageValue(mysum, 1004, dittoBonus*getVitality(item2.uid)) setPlayerStorageValue(mysum, 1005, dittoBonus*getSpecialAttack(item2.uid)) ------------------ local pct = getCreatureHealth(mysum) / getCreatureMaxHealth(mysum) local vit = (getVitality(mysum) * getMasterLevel(mysum)) / 100 setCreatureMaxHealth(mysum, ( vit * HPperVITsummon )) --alterado v1.6 doCreatureAddHealth(mysum, pct * vit * HPperVITsummon) end return true end ----------------------------- -------- LIGHT -------------- if isMonster(item2.uid) and getCreatureMaster(item2.uid) == cid then markPos(mysum, unfix) if not isInArray(skills["light"], getPokemonName(item2.uid)) then doPlayerSendCancel(cid, "Your pokemon can't use flash.") return true end local cd = getCD(thisball.uid, "light", 30) if cd > 0 then doPlayerSendCancel(cid, "Your pokemon is too tired to use flash. Cooldown: ("..getStringmytempo(cd)..")") return true end doPlayerSay(cid, ""..getPokeName(mysum)..", "..txt["light"][math.random(1, #txt["light"])].."", 1) doCreatureSay(mysum, "FLASH!", TALKTYPE_MONSTER) doSendMagicEffect(getThingPos(mysum), 28) local size = 5 size = size + math.floor(getSpecialAttack(mysum) / 60) size = size + math.ceil(getPokemonLevel(mysum) / 60) if size > 11 then size = 11 end doSetCreatureLight(mysum, size, 215, 600*1000) local delay = math.floor(30 - getPokemonLevel(mysum) / 4) if delay > 0 then setCD(thisball.uid, "light", delay) end return true end ----------------------------- -------- DIG ---------------- if isInArray(skills["digholes"], item2.itemid) and isInArray(skills["dig"], getPokemonName(mysum)) then doPlayerSay(cid, ""..getPokeName(mysum)..", "..txt["dig"][math.random(1, #txt["dig"])].."", 1) addEvent(goThere, 500, mysum, topos, "dig", isCreature(getCreatureTarget(cid))) return true end ----------------------------- -------- BLINK / MOVE ------- if not isCreature(item2.uid) and isInArray(skills["blink"], getPokemonName(mysum)) then local cd = getCD(thisball.uid, "blink", 30) if getPlayerStorageValue(mysum, 2365487) == 1 then return true --alterado v1.4 end if cd > 0 or not canWalkOnPos(topos, false, false, true, true, true) then doPlayerSendCancel(cid, "Blink cooldown: ("..getStringmytempo(cd)..")") doPlayerSay(cid, ""..getPokeName(mysum)..", "..txt["move"][math.random(1, #txt["move"])].."", 1) addEvent(goThere, 500, mysum, topos, "move", isCreature(getCreatureTarget(cid)), maxMoveDist) return true end local CD = isShinyName(getCreatureName(mysum)) and 20 or 30 --edited blink markPos(mysum, topos) markOwnerPos(mysum, getThingPos(cid)) setCD(thisball.uid, "blink", CD) doPlayerSay(cid, ""..getPokeName(mysum)..", "..txt["blink"][math.random(1, #txt["blink"])].."", 1) doSendDistanceShoot(getThingPos(mysum), topos, 39) doSendMagicEffect(getThingPos(mysum), 211) doTeleportThing(mysum, topos, false) doSendMagicEffect(topos, 134) doCreatureSay(mysum, "BLINK!", TALKTYPE_MONSTER) goThere(mysum, topos, "blink", isCreature(getCreatureTarget(cid))) --edited blink return true end ----------------------------- ----START FLY or RIDE or LEVITATE --------- if (item2.uid == cid or getRecorderPlayer(topos) == cid) and (isInArray(skills["fly"], getPokemonName(mysum)) or isInArray(skills["ride"], getPokemonName(mysum)) or isInArray(skills["levitate_fly"], getPokemonName(mysum))) then --alterado v1.8 >> if getPlayerStorageValue(cid, 6598754) == 1 or getPlayerStorageValue(cid, 6598755) == 1 then return doPlayerSendCancel(cid, "You can't do it while in the PVP Zone!") --alterado v1.7 end if #getCreatureSummons(cid) > 1 then --alterado v1.9 return doPlayerSendCancel(cid, "You can't do it right now!") end if getPlayerStorageValue(cid, 52480) >= 1 then return doPlayerSendCancel(cid, "You can't do it while a duel!") --alterado v1.6 end if getPlayerStorageValue(cid, 5700) >= 1 then --alterado v1.9 doPlayerSendCancel(cid, "You can't do that while is mount in a bike!") return true end if getPlayerStorageValue(cid, 22545) >= 1 and (isInArray(skills["fly"], getPokemonName(mysum)) or isInArray(skills["levitate_fly"], getPokemonName(mysum))) then return doPlayerSendCancel(cid, "You can't do that while in the Golden Arena!") --alterado v1.8 end local pct = getCreatureHealth(mysum) / getCreatureMaxHealth(mysum) doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "hp", 1 - pct) if isInArray(skills["fly"], getPokemonName(mysum)) then doPlayerSay(cid, ""..getPokeName(mysum)..", "..txt["fly"][math.random(1, #txt["fly"])].."", 1) addEvent(goThere, 500, mysum, topos, "fly", isCreature(getCreatureTarget(cid))) elseif isInArray(skills["levitate_fly"], getPokemonName(mysum)) then doPlayerSay(cid, ""..getPokeName(mysum)..", "..txt["levitate_fly"][math.random(1, #txt["levitate_fly"])].."", 1) --alterado v1.8 addEvent(goThere, 500, mysum, topos, "fly", isCreature(getCreatureTarget(cid))) else doPlayerSay(cid, ""..getPokeName(mysum)..", "..txt["ride"][math.random(1, #txt["ride"])].."", 1) addEvent(goThere, 500, mysum, topos, "ride", isCreature(getCreatureTarget(cid))) end return true end ----------------------------- ----------------------------------Control Mind-------------------------------------------- alterado v1.5 if isCreature(item2.uid) and ehMonstro(item2.uid) and isInArray(skills["control mind"], getCreatureName(mysum)) and item2.uid ~= mysum then if not isCreature(item2.uid) then return true end if isSleeping(mysum) then return doPlayerSendCancel(cid, "Your pokemon is sleeping...zZzZ") end if getTileInfo(getThingPos(cid)).protection or getTileInfo(getThingPos(getCreatureSummons(cid)[1])).protection then return doPlayerSendCancel(cid, "You or your pokemon are in Pz zone!") end if #getCreatureSummons(cid) == 2 then return doPlayerSendCancel(cid, "You only can control one Pokemon!") end local cd = getCD(thisball.uid, "control", 120) if cd > 0 then doPlayerSendCancel(cid, "You have to wait "..cd.." segs to use Control Mind again!") return true end if getPokemonLevel(item2.uid) >= getPokemonLevel(mysum) then return doPlayerSendCancel(cid, "Your pokemon can't control this mind!") end if getPlayerStorageValue(cid, 22545) >= 1 then --alterado v1.7 return doPlayerSendCancel(cid, "You can't do that while in the Golden Arena!") end local cmed = item2.uid setCD(thisball.uid, "control", 120) local gender = getPokemonGender(cmed) doSendDistanceShoot(getThingPos(mysum), getThingPos(cmed), 39) -------------- setPlayerStorageValue(cid, 212124, 1) doConvinceCreature(cid, cmed) setPlayerStorageValue(cmed, 212123, 1) doCreatureSay(cid, ""..getCreatureName(mysum)..", control "..string.lower(getCreatureName(cmed)).."'s mind!", 1) local cmname = getCreatureName(mysum) local cmpos = getThingPos(mysum) local pokelife = (getCreatureHealth(mysum) / getCreatureMaxHealth(mysum)) doItemSetAttribute(thisball.uid, "hp", pokelife) doRemoveCreature(mysum) local cmzao = doSummonCreature(""..cmname.." cm", cmpos) doConvinceCreature(cid, cmzao) setPlayerStorageValue(cid, 888, 1) if useKpdoDlls then doUpdateMoves(cid) end local function check(cid, controled, rod) if isCreature(cid) then ball2 = getPlayerSlotItem(cid, 8) if getPlayerStorageValue(cid, 888) <= 0 then return true end if not isCreature(controled) then setPlayerStorageValue(cid, 212124, 0) local sum = isCreature(getCreatureSummons(cid)[1]) and getCreatureSummons(cid)[1] or getCreatureSummons(cid)[2] local pkcmpos = getThingPos(sum) doRemoveCreature(sum) local item = getPlayerSlotItem(cid, 8) local pk = doSummonCreature(getItemAttribute(item.uid, "poke"), pkcmpos) doConvinceCreature(cid, pk) doCreatureSetLookDir(getCreatureSummons(cid)[1], 2) addEvent(doAdjustWithDelay, 100, cid, pk, true, true, false) setPlayerStorageValue(cid, 888, -1) --alterado v1.7 cleanCMcds(item.uid) registerCreatureEvent(pk, "SummonDeath") --alterado v1.6 if useKpdoDlls then doUpdateMoves(cid) end return true end if rod <= 0 then --Pokemon controlado local cmed2 = getCreatureSummons(cid)[1] local poscmed = getThingPos(cmed2) local cmeddir = getCreatureLookDir(cmed2) local namecmed = getCreatureName(cmed2) local gender = getPokemonGender(cmed2) local hp, maxHp = getCreatureHealth(getCreatureSummons(cid)[1]), getCreatureMaxHealth(getCreatureSummons(cid)[1]) doRemoveCreature(getCreatureSummons(cid)[1]) local back = doCreateMonster(namecmed, poscmed) addEvent(doCreatureSetSkullType, 150, back, gender) doWildAttackPlayer(back, cid) doCreatureSetLookDir(back, cmeddir) addEvent(doCreatureAddHealth, 100, back, hp-maxHp) -- pokemon controlador local mynewpos = getThingPos(getCreatureSummons(cid)[1]) doRemoveCreature(getCreatureSummons(cid)[1]) local pk2 = doSummonCreature(getItemAttribute(ball2.uid, "poke"), mynewpos) doConvinceCreature(cid, pk2) addEvent(doAdjustWithDelay, 100, cid, pk2, true, true, false) setPlayerStorageValue(cid, 888, -1) --alterado v1.7 doCreatureSetLookDir(getCreatureSummons(cid)[1], 2) setPlayerStorageValue(cid, 212124, 0) cleanCMcds(ball2.uid) registerCreatureEvent(pk2, "SummonDeath") --alterado v1.6 if useKpdoDlls then doUpdateMoves(cid) end else if isInArray({"Haunter", "Gengar", "Shiny Gengar"}, cmname) then doSendMagicEffect(getThingPos(getCreatureSummons(cid)[1]), 214) else doSendMagicEffect(getThingPos(getCreatureSummons(cid)[1]), 220) end end end addEvent(check, 500, cid, controled, rod-1) end check(cid, cmed, 40) return true end --------------------------------------------------------------------- -------- MOVE / END --------- local onlyWater = false if isWater(getTileThingByPos(checkpos).itemid) then onlyWater = true for checkwater = 0, 7 do if not isWater(getTileThingByPos(getPosByDir(checkpos, checkwater)).itemid) then onlyWater = false end end end if onlyWater then doPlayerSendCancel(cid, "Destination is not reachable.") return true end doPlayerSay(cid, ""..getPokeName(mysum)..", "..txt["move"][math.random(1, #txt["move"])].."", 1) if isCreature(getCreatureTarget(cid)) then goThere(mysum, topos, "move", isCreature(getCreatureTarget(cid)), maxMoveDist) else addEvent(goThere, 500, mysum, topos, "move", isCreature(getCreatureTarget(cid)), maxMoveDist) end ----------------------------- return true end
Postado Janeiro 27, 2018 7 anos Autor local dirpref = { [1] = {[NORTH] = {[1] = {NORTH}, [2] = {EAST, WEST}, [3] = {NORTHEAST, NORTHWEST}}, [EAST] = {[1] = {EAST}, [2] = {NORTH, SOUTH}, [3] = {NORTHEAST, SOUTHEAST}}, [SOUTH] = {[1] = {SOUTH}, [2] = {EAST, WEST}, [3] = {SOUTHEAST, SOUTHWEST}}, [WEST] = {[1] = {WEST}, [2] = {SOUTH, NORTH}, [3] = {NORTHWEST, SOUTHWEST}}, [NORTHEAST] = {[1] = {NORTH, EAST}, [2] = {NORTHEAST}, [3] = {SOUTH, WEST}}, [SOUTHEAST] = {[1] = {SOUTH, EAST}, [2] = {SOUTHEAST}, [3] = {NORTH, WEST}}, [SOUTHWEST] = {[1] = {SOUTH, WEST}, [2] = {SOUTHWEST}, [3] = {NORTH, EAST}}, [NORTHWEST] = {[1] = {NORTH, WEST}, [2] = {NORTHWEST}, [3] = {EAST, SOUTH}}}, [2] = {[NORTH] = {[1] = {NORTH}, [2] = {WEST, EAST}, [3] = {NORTHWEST, NORTHEAST}}, [EAST] = {[1] = {EAST}, [2] = {SOUTH, NORTH}, [3] = {SOUTHEAST, NORTHEAST}}, [SOUTH] = {[1] = {SOUTH}, [2] = {WEST, EAST}, [3] = {SOUTHWEST, SOUTHEAST}}, [WEST] = {[1] = {WEST}, [2] = {NORTH, SOUTH}, [3] = {SOUTHWEST, NORTHWEST}}, [NORTHEAST] = {[1] = {EAST, NORTH}, [2] = {NORTHEAST}, [3] = {WEST, SOUTH}}, [SOUTHEAST] = {[1] = {EAST, SOUTH}, [2] = {SOUTHEAST}, [3] = {WEST, NORTH}}, [SOUTHWEST] = {[1] = {WEST, SOUTH}, [2] = {SOUTHWEST}, [3] = {EAST, NORTH}}, [NORTHWEST] = {[1] = {WEST, NORTH}, [2] = {NORTHWEST}, [3] = {SOUTH, EAST}}}, } function doPushCreature(uid,direction,distance,time) if isCreature(uid) == TRUE then local rand = (2*math.random(0,1))-1 local rand2 = math.random(-1,0) if direction == 0 then signal = {0,rand,-rand,rand,-rand,0,-1,-1,-1,0,0,0} elseif direction == 1 then signal = {1,1,1,0,0,0,0,rand,-rand,rand,-rand,0} elseif direction == 2 then signal = {0,rand,-rand,rand,-rand,0,1,1,1,0,0,0} elseif direction == 3 then signal = {-1,-1,-1,0,0,0,0,rand,-rand,rand,-rand,0} elseif direction == 4 then signal = {-1,rand2,(-rand2)-1,0,1,rand2+1,rand2,0} elseif direction == 5 then signal = {1,-rand2,-((-rand2)-1),0,1,rand2+1,rand2,0} elseif direction == 6 then signal = {-1,rand2,(-rand2)-1,0,-1,(-rand2)-1,rand2,0} else signal = {1,-rand2,-((-rand2)-1),0,-1,(-rand2)-1,rand2,0} end local pos = getThingPos(uid) nsig = #signal nvar = 0 repeat nvar = nvar+1 newpos = {x=pos.x+(signal[nvar]),y=pos.y+(signal[(nsig/2)+nvar]),z=pos.z} newtile = {x=newpos.x,y=newpos.y,z=newpos.z,stackpos=0} until getTileThingByPos(newtile).uid ~= 0 and hasProperty(getTileThingByPos(newtile).uid,3) == FALSE and canWalkOnPos(newtile, true, false, true, true, false) and queryTileAddThing(uid,newpos) == 1 or nvar == (nsig/2) --alterado v2.5 if distance == nil or distance == 1 then doTeleportThing(uid,newpos,TRUE) else distance = distance-1 doTeleportThing(uid,newpos,TRUE) if time ~= nil then addEvent(doPushCreature,time,uid,direction,distance,time) else addEvent(doPushCreature,500,uid,direction,distance,500) end end end end function doComparePosition(pos1, pos2) if pos1.x == pos2.x and pos1.y == pos2.y and pos1.z == pos2.z then return true end return false end function getNextStepDelay(cid, dir) return 868 end function walkTo(cid, direction, finalp, useExtraMoveOrder) if not isCreature(cid) then return true end doChangeSpeed(cid, 5) local x = getThingPos(cid) local ratedelaywalk = 1 local finalpos = {x = finalp.x, y = finalp.y, z = finalp.z} if not canWalkOnPos(finalpos, false, false, true, true, true) then finalpos = getClosestFreeTile(cid, finalpos) end if not finalpos then return false end local dir = getDirectionTo(getThingPos(cid), finalpos) if dir and tonumber(dir) ~= nil and tonumber(dir) >= 0 and tonumber(dir) <= 7 then if dir >= 4 then ratedelaywalk = 0.4 end doPushCreature(cid, dir, 1, getNextStepDelay(cid, dir) * ratedelaywalk) return getNextStepDelay(cid, dir) * ratedelaywalk elseif useExtraMoveOrder then local random = math.random(1, 2) for ta = 1, 3 do for tb = 1, #dirpref[random][direction][ta] do local y = getPosByDir(getThingPos(cid), dirpref[random][direction][ta][tb]) local w = getCreatureLP(cid) local z = getDirectionTo(y, getThingPos(cid)) -- direção q vai marcar local j = getDirectionTo(getThingPos(cid), y) -- direção q ele vai if canWalkOnPos(y, true, false, true, true, true) and w ~= j then if dirpref[random][direction][ta][tb] >= 4 then ratedelaywalk = 0.5 end doPushCreature(cid, dirpref[random][direction][ta][tb], 1, getNextStepDelay(cid, dirpref[random][direction][ta][tb]) * ratedelaywalk) markLP(cid, z) return getNextStepDelay(cid, dirpref[random][direction][ta][tb]) * ratedelaywalk end end end end return false end function getCreatureLP(cid) return getPlayerStorageValue(cid, 197) end function markLP(cid, dir) setPlayerStorageValue(cid, 197, dir) end function markPos(sid, pos) if not isCreature(sid) then return end setPlayerStorageValue(sid, 145, pos.x) setPlayerStorageValue(sid, 146, pos.y) setPlayerStorageValue(sid, 147, pos.z) end function markFlyingPos(sid, pos) if not isCreature(sid) then return end setPlayerStorageValue(sid, 33145, pos.x) setPlayerStorageValue(sid, 33146, pos.y) setPlayerStorageValue(sid, 33147, pos.z) end function getFlyingMarkedPos(sid) if not isCreature(sid) then return end local xx = getPlayerStorageValue(sid, 33145) local yy = getPlayerStorageValue(sid, 33146) local zz = getPlayerStorageValue(sid, 33147) return {x = xx, y = yy, z = zz, stackpos = 0} end function getMarkedPos(sid) if not isCreature(sid) then return end local xx = getPlayerStorageValue(sid, 145) local yy = getPlayerStorageValue(sid, 146) local zz = getPlayerStorageValue(sid, 147) return {x = xx, y = yy, z = zz} end function getOwnerPos(sid) if not isCreature(sid) then return end local xx = getPlayerStorageValue(sid, 148) local yy = getPlayerStorageValue(sid, 149) local zz = getPlayerStorageValue(sid, 150) return {x = xx, y = yy, z = zz} end function markOwnerPos(sid, pos) if not isCreature(sid) then return end setPlayerStorageValue(sid, 148, pos.x) setPlayerStorageValue(sid, 149, pos.y) setPlayerStorageValue(sid, 150, pos.z) end function recheck(sid, skill, pos) if not isCreature(sid) then return end local cid = getCreatureMaster(sid) if skill == "cut" then local item = getTileItemById(pos, 2767) doCreatureSay(sid, "CUT!", TALKTYPE_MONSTER) markPos(sid, {x=1,y=1,z=7}) doFaceCreature(sid, pos) doSendMagicEffect(getThingPos(item.uid), 141) doTransformItem(item.uid, 6216) local function growBush() doTransformItem(getTileItemById(pos, 6216).uid, 2767) end addEvent(growBush, intervalToRegrowBushAndStones * 1000) elseif skill == "rock smash" then local item = getTileItemById(pos, 1285) doCreatureSay(sid, "ROCK SMASH!", TALKTYPE_MONSTER) markPos(sid, {x=1,y=1,z=7}) doFaceCreature(sid, pos) doSendMagicEffect(getThingPos(item.uid), 118) doTransformItem(item.uid, 3610) local function growRock() doTransformItem(getTileItemById(pos, 3610).uid, 1285) end addEvent(growRock, intervalToRegrowBushAndStones * 1000) elseif skill == "headbutt" then --alterado v2.6 local master = getCreatureMaster(sid) local array = {} local lvl = {25, 40, 60, 80, 1000} --lvls for i = 1, #lvl do if getPlayerLevel(master) <= lvl[i] then array = headbutt[lvl[i]] break end end local rand = array[math.random(#array)] for j = 1, rand[2] do local poke = doCreateMonster(rand[1], getClosestFreeTile(sid, pos)) doSetMonsterPassive(poke) doWildAttackPlayer(poke, master) end local item = getTileItemById(pos, 12591) --id do item arvore normal doCreatureSay(sid, "HEADBUTT!", TALKTYPE_MONSTER) markPos(sid, {x=1,y=1,z=7}) doFaceCreature(sid, pos) doSendMagicEffect(getThingPos(item.uid), 118) doTransformItem(item.uid, 12592) --id do item arvore quebrada local function growHead() doTransformItem(getTileItemById(pos, 12592).uid, 12591) --id do item arvore quebrada, arvore normal end addEvent(growHead, choose(5, 10, 20, 30) * 60 * 1000) --o tempo pra arvore voltar ao normal varia de 5~30min elseif skill == "dig" then local item = getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}) doCreatureSay(sid, "DIG!", TALKTYPE_MONSTER) markPos(sid, {x=1,y=1,z=7}) doFaceCreature(sid, pos) doSendMagicEffect(getThingPos(item.uid), 3) doTransformItem(item.uid, item.itemid+1) local function closeHole() doTransformItem(getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).uid, item.itemid) end addEvent(closeHole, intervalToRegrowBushAndStones * 1000) elseif skill == "fly" then --if not isPremium(cid) then --doPlayerSendCancel(cid, "Only premium members are allowed to fly.") --return true --end local pokemon = flys[getPokemonName(getCreatureSummons(cid)[1])] doPlayerSendTextMessage(cid, 27, "Type \"up\" or \"h1\" to fly higher and \"down\" or \"h2\" to fly lower.") doChangeSpeed(cid, -getCreatureSpeed(cid)) local speed = 500 + PlayerSpeed/5 + getSpeed(sid) * 6 * speedRate doChangeSpeed(cid, speed) setPlayerStorageValue(cid, 54844, speed) doSetCreatureOutfit(cid, {lookType = pokemon[1] + 351}, -1) doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "hp", getCreatureHealth(getCreatureSummons(cid)[1]) / getCreatureMaxHealth(getCreatureSummons(cid)[1])) doRemoveCreature(getCreatureSummons(cid)[1]) setPlayerStorageValue(cid, 17000, 1) local addonfly= getPlayerSlotItem(cid, 8).uid local addofly = getItemAttribute(addonfly,"addonfly") if not addofly then doSetItemAttribute(addonfly,"addonfly",0) end if addofly > 0 then doSetCreatureOutfit(cid, {lookType = addofly}, -1) end if getCreatureOutfit(cid).lookType == 667 or getCreatureOutfit(cid).lookType == 999 then markPosEff(cid, getThingPos(cid)) sendMovementEffect(cid, 136, getThingPos(cid)) --edited efeito quando anda com o porygon end return true elseif skill == "ride" then local pokemon = rides[getPokemonName(getCreatureSummons(cid)[1])] doChangeSpeed(cid, -getCreatureSpeed(cid)) local speed = 150 + PlayerSpeed + getSpeed(sid) * 5 * speedRate doChangeSpeed(cid, speed) setPlayerStorageValue(cid, 54844, speed) doSetCreatureOutfit(cid, {lookType = pokemon[1] + 351}, -1) doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "hp", getCreatureHealth(getCreatureSummons(cid)[1]) / getCreatureMaxHealth(getCreatureSummons(cid)[1])) doRemoveCreature(getCreatureSummons(cid)[1]) setPlayerStorageValue(cid, 17001, 1) local addonride = getPlayerSlotItem(cid, 8).uid local addoride = getItemAttribute(addonride,"addonride") if not addoride then doSetItemAttribute(addonride,"addonride",0) end if addoride > 0 then doSetCreatureOutfit(cid, {lookType = addoride}, -1) end return true end if getOwnerPos(sid).x ~= getThingPos(getCreatureMaster(sid)).x or getOwnerPos(sid).y ~= getThingPos(getCreatureMaster(sid)).y or isCreature(getCreatureTarget(getCreatureMaster(sid))) then doRegainSpeed(sid) markPos(sid, {x=1,y=1,z=7}) return true end addEvent(recheck, 120, sid) end function goThere(sid, thepos, skill, target, rept) if not isCreature(sid) then return true end if getCreatureNoMove(sid) or isSleeping(sid) or isParalyze(sid) then return true end --alterado v2.6 if thepos.x ~= getMarkedPos(sid).x or thepos.y ~= getMarkedPos(sid).y then return true end if isCreature(getCreatureTarget(getCreatureMaster(sid))) and target == false or (rept and rept <= 0) then doRegainSpeed(sid) markPos(sid, {x=1,y=1,z=7}) return true end if (skill == "ride" or skill == "fly") and getDistanceBetween(getThingPos(sid), getMarkedPos(sid)) <= 1 then local currentPos = getThingPos(getCreatureMaster(sid)) local summonPos = getThingPos(sid) local masterPos = getCreatureLastPosition(sid) if (getThingPos(sid).x == getThingPos(getCreatureMaster(sid)).x and getThingPos(sid).y == getThingPos(getCreatureMaster(sid)).y) or (currentPos.x == masterPos.x and currentPos.y == masterPos.y) then recheck(sid, skill, thepos) return true end if currentPos.x == thepos.x and currentPos.y == thepos.y then if getDirectionTo(getThingPos(sid), getThingPos(getCreatureMaster(sid))) <= 3 then doRegainSpeed(sid) local ndelay = getNextStepDelay(sid, 0) doTeleportThing(sid, thepos, true) doChangeSpeed(sid, -getCreatureSpeed(sid)) markPos(sid, getThingPos(getCreatureMaster(sid))) addEvent(goThere, ndelay, sid, getMarkedPos(sid), skill, target) else doChangeSpeed(sid, - getCreatureSpeed(sid)) doRegainSpeed(sid) markPos(sid, getThingPos(getCreatureMaster(sid))) local x = walkTo(sid, getDirectionTo(getThingPos(sid), getMarkedPos(sid)), getMarkedPos(sid), skill == "ride" or skill == "fly") doChangeSpeed(sid, - getCreatureSpeed(sid)) addEvent(goThere, x, sid, getMarkedPos(sid), skill, target) end return true else markPos(sid, getThingPos(getCreatureMaster(sid))) doChangeSpeed(sid, - getCreatureSpeed(sid)) doRegainSpeed(sid) local ndelay = getNextStepDelay(sid, 0) if getDirectionTo(getThingPos(sid), getMarkedPos(sid)) >= 4 then local x = walkTo(sid, getDirectionTo(getThingPos(sid), getMarkedPos(sid)), getMarkedPos(sid), skill == "ride" or skill == "fly") else doTeleportThing(sid, getPosByDir(getThingPos(sid), getDirectionTo(getThingPos(sid), getMarkedPos(sid)))) end doChangeSpeed(sid, - getCreatureSpeed(sid)) addEvent(goThere, x and x or ndelay, sid, getMarkedPos(sid), skill, target) return true end addEvent(recheck, 350, sid, skill, thepos) return true end if getThingPos(sid).x == getMarkedPos(sid).x and getThingPos(sid).y == getMarkedPos(sid).y then if isCreature(getCreatureTarget(sid)) then doFaceCreature(sid, getThingPos(getCreatureTarget(sid))) end if skill == "blink" then doChangeSpeed(sid, - getCreatureSpeed(sid)) --edited blink end addEvent(recheck, 350, sid, skill, thepos) return true end if (getOwnerPos(sid).x ~= getThingPos(getCreatureMaster(sid)).x or getOwnerPos(sid).y ~= getThingPos(getCreatureMaster(sid)).y) and isCreature(getCreatureTarget(getCreatureMaster(sid))) == false and skill == "move" then doRegainSpeed(sid) markPos(sid, {x=1,y=1,z=7}) return true end doRegainSpeed(sid) local holeid = thepos holeid.stackpos = 0 holeid = getTileThingByPos(holeid).itemid if getDistanceBetween(getThingPos(sid), getMarkedPos(sid)) <= 1 and (not isWalkable(getPosByDir(getThingPos(sid), getDirectionTo(getThingPos(sid), getMarkedPos(sid))), true, false, false, true) or isInArray(specialabilities["digholes"], holeid)) then if isGhostPokemon(sid) and getPlayerStorageValue(getCreatureMaster(sid), 990) <= 0 then local todir = getDirectionTo(getThingPos(sid), getMarkedPos(sid)) if todir <= 3 then doTeleportThing(sid, getMarkedPos(sid), true) else local gotopos = getPosByDir(getThingPos(sid), dirpref[math.random(1, 2)][todir][1][math.random(1, 2)]) doTeleportThing(sid, gotopos, true) addEvent(goThere, getNextStepDelay(sid, 0), sid, getMarkedPos(sid), skill, target) return true end end doFaceCreature(sid, getMarkedPos(sid)) addEvent(recheck, 180, sid, skill, thepos) doChangeSpeed(sid, - getCreatureSpeed(sid)) return true end local ret = 0 if getDistanceBetween(getThingPos(sid), getMarkedPos(sid)) <= 1 then ret = walkTo(sid, getDirectionTo(getThingPos(sid), getMarkedPos(sid)), getMarkedPos(sid), skill == "ride" or skill == "fly" or isGhostPokemon(sid)) if not tonumber(ret) then doFaceCreature(sid, getMarkedPos(sid)) addEvent(recheck, 180, sid, skill, thepos) doChangeSpeed(sid, - getCreatureSpeed(sid)) return true end else ret = walkTo(sid, getDirectionTo(getThingPos(sid), getMarkedPos(sid)), getMarkedPos(sid), skill == "ride" or skill == "fly" or not isGhostPokemon(sid))-- and isSightClear(getThingPos(sid), getMarkedPos(sid), false))) end if not tonumber(ret) then doPlayerSendCancel(getCreatureMaster(sid), "Destination is not reachable.") markPos(sid, {x=1,y=1,z=7}) return true end doChangeSpeed(sid, - getCreatureSpeed(sid)) addEvent(goThere, tonumber(ret), sid, getMarkedPos(sid), skill, target, rept and rept - 1 or 22) end
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.