Ir para conteúdo

Featured Replies

Postado
  • Autor

Isso mesmo, você poderia adicionar pocições ou mudar as que tão ali...

No seu script tem if getPlayerStorageValue(cid, 17000) <= 0 then ali em vermelho coloque o Storage da sua VIP

A idéia é muito boa, e irei usar sim, mas quanto ao problema do fly, não se resolveu, continuo conseguindo usar fly sem ser vip account :s

 

add essa tage

 local premium = true

ficando assim

 

local del = {'460', '1022', '1023', '1024'}

local premium = true

function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor)

position.stackpos = 0

if isPlayer(cid) and getCreatureOutfit(cid).lookType == 814 then return false end -- TV

if getPlayerStorageValue(cid, 17000) <= 0 then

doTeleportThing(cid, fromPosition, false)

doRemoveItem(getTileThingByPos(position).uid, 1)

doPlayerSendCancel(cid, "You can't fly.")

return true

end

doAreaCombatHealth(cid, FLYSYSTEMDAMAGE, getThingPos(cid), splash, 0, 0, 255)

local pos = getThingPos(cid)

if pos.z == 7 then return true end

pos.z = pos.z + 1

for i = 0, 255 do

pos.stackpos = i

local tile = getTileThingByPos(pos)

if tile.itemid ~= 0 and not isCreature(tile.uid) then

if hasProperty(tile.uid, 3) or hasProperty(tile.uid, 7) or tile.itemid == 919 then

doTransformItem(item.uid, 11677)

end

end

end

return true

end

function onStepOut(cid, item, position, lastPosition, fromPosition, toPosition, actor)

if isPlayer(cid) and getCreatureOutfit(cid).lookType == 814 then return false end -- TV

local effect = 2

if toPosition.z == fromPosition.z and getCreatureOutfit(cid).lookType ~= 316 and getCreatureOutfit(cid).lookType ~= 648 then

doSendMagicEffect(fromPosition, effect)

end

local oldtpos = fromPosition

oldtpos.stackpos = STACKPOS_GROUND

if getTileThingByPos(oldtpos).itemid >= 1 then

doRemoveItem(getTileThingByPos(oldtpos).uid, 1)

end

return true

end

Não funcionou cara :/

 

 

esse é meu order.lua

function doPushCreatureTo(uid, direction, distance, speed) --//doPushCreature(creature,getPlayerLookDir(cid))

-- Desenvolvido por Dokmos 30/01/2009

-- Apoio Dinastias

local pos = getThingPos(uid)

local PARAM = {{1}, {500}}

local DIRECTION = {

{{0,0},{6,7},{1,3}}, {{1,1},{5,7},{0,2}}, {{2,2},{4,5},{1,3}}, {{3,3},{4,6},{0,2}},

{{4,4},{2,3}}, {{5,5}, {1,2}}, {{6,6},{0,1}}, {{7,7},{0,3}}

}

table.insert(PARAM[1], distance)

table.insert(PARAM[2], speed)

for dvar = 1, #DIRECTION[direction+1] do

rand = math.random(2)

d = DIRECTION[direction+1][dvar][rand]

dir = {x = (math.fmod(d,2)*(-(d-2))+math.floor(d/4)*math.fmod(d,2)*d-math.floor(d/4)), y = (((d-1)*(d-1-(d-1)*math.abs(d-2))*(1-math.floor(d/4)))-(math.floor(d/4)*(math.floor(d/6)*2-1)))}

newtile = {x = (pos.x+dir.x), y = (pos.y+dir.y), z = pos.z}

if (getTileThingByPos(newtile).uid ~= 0) and (hasProperty(getTileThingByPos(newtile).uid,3) == FALSE) and (queryTileAddThing(uid,newtile) == 1) then break end

rand = (math.fmod(rand,2)+1)

d = DIRECTION[direction+1][dvar][rand]

dir = {x = (math.fmod(d,2)*(-(d-2))+math.floor(d/4)*math.fmod(d,2)*d-math.floor(d/4)), y = (((d-1)*(d-1-(d-1)*math.abs(d-2))*(1-math.floor(d/4)))-(math.floor(d/4)*(math.floor(d/6)*2-1)))}

newtile = {x = (pos.x+dir.x), y = (pos.y+dir.y), z = pos.z}

if (getTileThingByPos(newtile).uid ~= 0) and (hasProperty(getTileThingByPos(newtile).uid,3) == FALSE) and (queryTileAddThing(uid,newtile) == 1) then break end

if (dvar == #DIRECTION[direction+1]) then

newtile = pos

end

end

doTeleportThing(uid, newtile, true)

if (PARAM[1][#PARAM[1]] > 1) then

addEvent(doPushCreature, PARAM[2][#PARAM[2]], uid, direction, (distance-1), speed)

end

end

--///////////////////////////////////////////////////////////////////////////////////////////////////////--

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 v1.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 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 = getDirectionToWalk(cid, finalpos, 2, 0, 0, false, true, 300)

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) or not isCreature(getCreatureMaster(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 v1.6

local master = getCreatureMaster(sid)

local array = {}

local lvl = {25, 40, 60, 80, 150, 1000} --lvls

for i = 1, #lvl do

if getPlayerLevel(master) <= lvl then

array = headbutt[lvl]

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 * 10) --o tempo pra arvore voltar ao normal varia de 5~30min --mudei jah

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/levitate higher and \"down\" or \"h2\" to fly/levitate lower.") --alterado v1.8

doChangeSpeed(cid, -getCreatureSpeed(cid))

local speed = 20 + PlayerSpeed + getSpeed(sid) * 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)

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

local item = getPlayerSlotItem(cid, 8)

if getItemAttribute(item.uid, "boost") and getItemAttribute(item.uid, "boost") >= 50 and getPlayerStorageValue(cid, 42368) <= 0 then

sendAuraEffect(cid, auraSyst[getItemAttribute(item.uid, "aura")]) --alterado v1.8

end

if useOTClient then

doPlayerSendCancel(cid, '12//,hide') --alterado v1.8

end

return true

elseif skill == "ride" then

local pokemon = rides[getPokemonName(getCreatureSummons(cid)[1])]

doChangeSpeed(cid, -getCreatureSpeed(cid))

local speed = 20 + PlayerSpeed + getSpeed(sid) * 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 item = getPlayerSlotItem(cid, 8)

if getItemAttribute(item.uid, "boost") and getItemAttribute(item.uid, "boost") >= 50 and getPlayerStorageValue(cid, 42368) <= 0 then

sendAuraEffect(cid, auraSyst[getItemAttribute(item.uid, "aura")]) --alterado v1.8

end

if useOTClient then

doPlayerSendCancel(cid, '12//,hide') --alterado v1.8

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) or not isCreature(getCreatureMaster(sid)) then return true end

if getCreatureNoMove(sid) or isSleeping(sid) or isParalyze(sid) then return true end --alterado v1.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 --alterado

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

-----------------------------DITTO------------------

if (getCreatureName(mysum) == "Ditto") and getItemAttribute(thisball.uid, "ehditto") ~= -1 and isMonster(item2.uid) and pokes[getCreatureName(item2.uid)] then

local m = getCreatureMaster(cid)

local p = getPlayerSlotItem(m, 8)

local proibidossempre = {"Mew_", "Mewtwo_", "Unown Legion", "Ho-oh", "Moltres", "Celebi", "Moltres", "Zapdos", "Suicune", "Entei", "Raikou", "Articuno", "Lugia", "Mewtwo", "Mew", "Shiny Rhydon", "Shiny Ariados", "Shiny Magneton", "Shiny Ninetales", "Shiny Politoed", "Shiny Stantler", "Shiny Dodrio", "Shiny Espeon", "Shiny Umbreon"} -- Nunca permitir

local proibidosboost = {"Shiny Dragonite", "Shiny Snorlax", "Shiny Gyarados", "Shiny Scyther"} -- Permitir se ditto for +50

local outpokes = {"Magnet Electabuzz","Elder Tyranitar","Hard Golem","Brute Rhydon","Iron Steelix","Brave Charizard","Elder Charizard","Lava Magmar","Enraged Typhlosion","Capoeira Hitmontop","Boxer Hitmonchan","Taekwondo Hitmonlee","Dragon Machamp","Undefeated Machamp","Wardog Arcanine","Elder Arcanine","Furious Mantine","War Gyarados","Brave Blastoise","Brave Venusaur","Ancient Meganium","Tribal Feraligatr","Elder Dragonite","Elder Pinsir","Elder Raichu","Charged Raichu","Tribal Xatu","Enigmatic Girafarig","Ancient Alakazam","Master Alakazam","Furious Ampharos","Elder Electabuzz","Furious Scyther","Tribal Scyther","War Heracross","Metal Scizor","Brave Nidoking","Brave Nidoqueen","Elder Muk","Dark Crobat","Trickmaster Gengar" ,"Elder Gengar" ,"Banshee Misdreavus","Hungry Snorlax","Brute Ursaring","War Granbull","Singer Wigglytuff","Aviator Pidgeot","Metal Skarmory","Brave Noctowl","Elder Pidgeot","Ancient Dragonite","Milch-Miltank","Ancient Kingdra","Psy Jynx","Elder Venusaur","Elder Jynx","Evil Cloyster","Freezing Dewgong","Elder Tangela","Furious Sandslash","Roll Donphan","Bone Marowak","Octopus Octillery","Moon Clefable","Heavy Piloswine","Elder Blastoise","Elder Tentacruel","Elder Marowak","Master Stantler"}

local boost = getItemAttribute(thisball.uid, "boost") or 0

if getCreatureName(item2.uid) == "Ditto" or getCreatureName(item2.uid) == "Shiny Ditto" then

doPlayerSendCancel(cid, "Your ditto can't transform into another ditto.")

markPos(mysum, unfix)

return true

end

if isInArray(outpokes, getCreatureName(item2.uid)) then

doPlayerSendCancel(cid, "Your ditto can't transform into this pokemon.")

markPos(mysum, unfix)

return true

end

if getPlayerLevel(cid) < pokes[getCreatureName(item2.uid)].level then

doPlayerSendCancel(cid, "You haven't level to transform into that pokemon.")

markPos(mysum, unfix)

return true

end

if isInArray(proibidossempre, getCreatureName(item2.uid)) then --Checa a lista

doPlayerSendCancel(cid, "Your ditto can't transform into that pokemon.")

markPos(mysum, unfix)

return true

end

if isInArray(proibidosboost, getCreatureName(item2.uid)) and boost < 50 then --Checa a lista

doPlayerSendCancel(cid, "Your ditto can't transform into that pokemon.")

markPos(mysum, unfix)

return true

end

markPos(mysum, unfix)

doFaceCreature(mysum, getThingPos(item2.uid))

doDittoTransform(mysum, getCreatureName(item2.uid))

return true

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

  • Respostas 15
  • Visualizações 856
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • Isso mesmo, você poderia adicionar pocições ou mudar as que tão ali... No seu script tem if getPlayerStorageValue(cid, 17000) <= 0 then ali em vermelho coloque o Storage da sua VIP

  • add essa tage  local premium = true ficando assim  

  • vá em data/talkaction/scripts e crie um arquivo chamado teleportvip.lua e cole isso dentro: depois vá em talkactions.xml e adicione éssa linha:   EXPLICANDO:

Postado
local del = {'460', '1022', '1023', '1024'}


if getPlayerPremiumDays(cid) < 1 then
return doPlayerSendCancel(cid, "Voce nao e premium.")
end


function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor)


position.stackpos = 0


if isPlayer(cid) and getCreatureOutfit(cid).lookType == 814 then return false end -- TV


if getPlayerStorageValue(cid, 17000) <= 0 then
doTeleportThing(cid, fromPosition, false)
doRemoveItem(getTileThingByPos(position).uid, 1)
doPlayerSendCancel(cid, "You can't fly.")
return true
end


doAreaCombatHealth(cid, FLYSYSTEMDAMAGE, getThingPos(cid), splash, 0, 0, 255)


local pos = getThingPos(cid)
if pos.z == 7 then return true end
pos.z = pos.z + 1


for i = 0, 255 do
pos.stackpos = i
local tile = getTileThingByPos(pos)
if tile.itemid ~= 0 and not isCreature(tile.uid) then
if hasProperty(tile.uid, 3) or hasProperty(tile.uid, 7) or tile.itemid == 919 then
doTransformItem(item.uid, 11677)
end
end
end


return true
end


function onStepOut(cid, item, position, lastPosition, fromPosition, toPosition, actor)


if isPlayer(cid) and getCreatureOutfit(cid).lookType == 814 then return false end -- TV


local effect = 2


if toPosition.z == fromPosition.z and getCreatureOutfit(cid).lookType ~= 316 and getCreatureOutfit(cid).lookType ~= 648 then
doSendMagicEffect(fromPosition, effect)
end


local oldtpos = fromPosition
oldtpos.stackpos = STACKPOS_GROUND




if getTileThingByPos(oldtpos).itemid >= 1 then
doRemoveItem(getTileThingByPos(oldtpos).uid, 1)
end


return true
end
Postado
  • Autor
local del = {'460', '1022', '1023', '1024'}if getPlayerPremiumDays(cid) < 1 thenreturn doPlayerSendCancel(cid, "Voce nao e premium.")endfunction onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor)position.stackpos = 0if isPlayer(cid) and getCreatureOutfit(cid).lookType == 814 then return false end -- TVif getPlayerStorageValue(cid, 17000) = 1 thendoRemoveItem(getTileThingByPos(oldtpos).uid, 1)endreturn trueend

Ainda não funcionou, começo a desconfiar que não seja problema no fly.lua, vc olhou o order.lua? ta tudo certo?

Meu distro mostra esse erro:

[10/12/2014 20:40:02] [Error - Action Interface] [10/12/2014 20:40:03] In a timer event called from: [10/12/2014 20:40:03] data/actions/scripts/order.lua:onUse[10/12/2014 20:40:03] Description: [10/12/2014 20:40:03] (luaGetCreatureName) Creature not found

Alguma ideia?

Editado por Thayam (veja o histórico de edições)

Postado
local del = {'460', '1022', '1023', '1024'}

FUNCTION onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor)

position.stackpos = 0

if getPlayerPremiumDays(cid) < 1 then
RETURN doPlayerSendCancel(cid, "Voce nao e PREMIUM.")
end

if isPlayer(cid) and getCreatureOutfit(cid).lookType == 814 then RETURN false end -- TV

if getPlayerStorageValue(cid, 17000) <= 0 then
doTeleportThing(cid, fromPosition, false)
doRemoveItem(getTileThingByPos(position).uid, 1)
doPlayerSendCancel(cid, "You can't fly.")
RETURN true
end

doAreaCombatHealth(cid, FLYSYSTEMDAMAGE, getThingPos(cid), splash, 0, 0, 255)

local pos = getThingPos(cid)
if pos.z == 7 then RETURN true end
pos.z = pos.z + 1

for i = 0, 255 do
pos.stackpos = i
local tile = getTileThingByPos(pos)
if tile.itemid ~= 0 and not isCreature(tile.uid) then
if hasProperty(tile.uid, 3) or hasProperty(tile.uid, 7) or tile.itemid == 919 then
doTransformItem(item.uid, 11677)
end
end
end

return true
end

function onStepOut(cid, item, position, lastPosition, fromPosition, toPosition, actor)

if isPlayer(cid) and getCreatureOutfit(cid).lookType == 814 then return false end -- TV

local EFFECT = 2

if toPosition.z == fromPosition.z and getCreatureOutfit(cid).lookType ~= 316 and getCreatureOutfit(cid).lookType ~= 648 then
doSendMagicEffect(fromPosition, EFFECT)
end

local oldtpos = fromPosition
oldtpos.stackpos = STACKPOS_GROUND


if getTileThingByPos(oldtpos).itemid >= 1 then
doRemoveItem(getTileThingByPos(oldtpos).uid, 1)
end

return true
end

Se não funcionar poste o order.lua.

Postado
  • Autor
local del = {'460', '1022', '1023', '1024'}

FUNCTION onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor)

position.stackpos = 0

if getPlayerPremiumDays(cid) < 1 then
RETURN doPlayerSendCancel(cid, "Voce nao e PREMIUM.")
end

if isPlayer(cid) and getCreatureOutfit(cid).lookType == 814 then RETURN false end -- TV

if getPlayerStorageValue(cid, 17000) <= 0 then
doTeleportThing(cid, fromPosition, false)
doRemoveItem(getTileThingByPos(position).uid, 1)
doPlayerSendCancel(cid, "You can't fly.")
RETURN true
end

doAreaCombatHealth(cid, FLYSYSTEMDAMAGE, getThingPos(cid), splash, 0, 0, 255)

local pos = getThingPos(cid)
if pos.z == 7 then RETURN true end
pos.z = pos.z + 1

for i = 0, 255 do
pos.stackpos = i
local tile = getTileThingByPos(pos)
if tile.itemid ~= 0 and not isCreature(tile.uid) then
if hasProperty(tile.uid, 3) or hasProperty(tile.uid, 7) or tile.itemid == 919 then
doTransformItem(item.uid, 11677)
end
end
end

return true
end

function onStepOut(cid, item, position, lastPosition, fromPosition, toPosition, actor)

if isPlayer(cid) and getCreatureOutfit(cid).lookType == 814 then return false end -- TV

local EFFECT = 2

if toPosition.z == fromPosition.z and getCreatureOutfit(cid).lookType ~= 316 and getCreatureOutfit(cid).lookType ~= 648 then
doSendMagicEffect(fromPosition, EFFECT)
end

local oldtpos = fromPosition
oldtpos.stackpos = STACKPOS_GROUND


if getTileThingByPos(oldtpos).itemid >= 1 then
doRemoveItem(getTileThingByPos(oldtpos).uid, 1)
end

return true
end

Se não funcionar poste o order.lua.

 

 

 

Não funcionou cara :/

 

Este é meu order.lua

function doPushCreatureTo(uid, direction, distance, speed) --//doPushCreature(creature,getPlayerLookDir(cid))

-- Desenvolvido por Dokmos 30/01/2009

-- Apoio Dinastias

local pos = getThingPos(uid)

local PARAM = {{1}, {500}}

local DIRECTION = {

{{0,0},{6,7},{1,3}}, {{1,1},{5,7},{0,2}}, {{2,2},{4,5},{1,3}}, {{3,3},{4,6},{0,2}},

{{4,4},{2,3}}, {{5,5}, {1,2}}, {{6,6},{0,1}}, {{7,7},{0,3}}

}

table.insert(PARAM[1], distance)

table.insert(PARAM[2], speed)

for dvar = 1, #DIRECTION[direction+1] do

rand = math.random(2)

d = DIRECTION[direction+1][dvar][rand]

dir = {x = (math.fmod(d,2)*(-(d-2))+math.floor(d/4)*math.fmod(d,2)*d-math.floor(d/4)), y = (((d-1)*(d-1-(d-1)*math.abs(d-2))*(1-math.floor(d/4)))-(math.floor(d/4)*(math.floor(d/6)*2-1)))}

newtile = {x = (pos.x+dir.x), y = (pos.y+dir.y), z = pos.z}

if (getTileThingByPos(newtile).uid ~= 0) and (hasProperty(getTileThingByPos(newtile).uid,3) == FALSE) and (queryTileAddThing(uid,newtile) == 1) then break end

rand = (math.fmod(rand,2)+1)

d = DIRECTION[direction+1][dvar][rand]

dir = {x = (math.fmod(d,2)*(-(d-2))+math.floor(d/4)*math.fmod(d,2)*d-math.floor(d/4)), y = (((d-1)*(d-1-(d-1)*math.abs(d-2))*(1-math.floor(d/4)))-(math.floor(d/4)*(math.floor(d/6)*2-1)))}

newtile = {x = (pos.x+dir.x), y = (pos.y+dir.y), z = pos.z}

if (getTileThingByPos(newtile).uid ~= 0) and (hasProperty(getTileThingByPos(newtile).uid,3) == FALSE) and (queryTileAddThing(uid,newtile) == 1) then break end

if (dvar == #DIRECTION[direction+1]) then

newtile = pos

end

end

doTeleportThing(uid, newtile, true)

if (PARAM[1][#PARAM[1]] > 1) then

addEvent(doPushCreature, PARAM[2][#PARAM[2]], uid, direction, (distance-1), speed)

end

end

--///////////////////////////////////////////////////////////////////////////////////////////////////////--

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 v1.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 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 = getDirectionToWalk(cid, finalpos, 2, 0, 0, false, true, 300)

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) or not isCreature(getCreatureMaster(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 v1.6

local master = getCreatureMaster(sid)

local array = {}

local lvl = {25, 40, 60, 80, 150, 1000} --lvls

for i = 1, #lvl do

if getPlayerLevel(master) <= lvl then

array = headbutt[lvl]

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 * 10) --o tempo pra arvore voltar ao normal varia de 5~30min --mudei jah

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/levitate higher and \"down\" or \"h2\" to fly/levitate lower.") --alterado v1.8

doChangeSpeed(cid, -getCreatureSpeed(cid))

local speed = 20 + PlayerSpeed + getSpeed(sid) * 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)

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

local item = getPlayerSlotItem(cid, 8)

if getItemAttribute(item.uid, "boost") and getItemAttribute(item.uid, "boost") >= 50 and getPlayerStorageValue(cid, 42368) <= 0 then

sendAuraEffect(cid, auraSyst[getItemAttribute(item.uid, "aura")]) --alterado v1.8

end

if useOTClient then

doPlayerSendCancel(cid, '12//,hide') --alterado v1.8

end

return true

elseif skill == "ride" then

local pokemon = rides[getPokemonName(getCreatureSummons(cid)[1])]

doChangeSpeed(cid, -getCreatureSpeed(cid))

local speed = 20 + PlayerSpeed + getSpeed(sid) * 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 item = getPlayerSlotItem(cid, 8)

if getItemAttribute(item.uid, "boost") and getItemAttribute(item.uid, "boost") >= 50 and getPlayerStorageValue(cid, 42368) <= 0 then

sendAuraEffect(cid, auraSyst[getItemAttribute(item.uid, "aura")]) --alterado v1.8

end

if useOTClient then

doPlayerSendCancel(cid, '12//,hide') --alterado v1.8

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) or not isCreature(getCreatureMaster(sid)) then return true end

if getCreatureNoMove(sid) or isSleeping(sid) or isParalyze(sid) then return true end --alterado v1.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 --alterado

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

-----------------------------DITTO------------------

if (getCreatureName(mysum) == "Ditto") and getItemAttribute(thisball.uid, "ehditto") ~= -1 and isMonster(item2.uid) and pokes[getCreatureName(item2.uid)] then

local m = getCreatureMaster(cid)

local p = getPlayerSlotItem(m, 8)

local proibidossempre = {"Mew_", "Mewtwo_", "Unown Legion", "Ho-oh", "Moltres", "Celebi", "Moltres", "Zapdos", "Suicune", "Entei", "Raikou", "Articuno", "Lugia", "Mewtwo", "Mew", "Shiny Rhydon", "Shiny Ariados", "Shiny Magneton", "Shiny Ninetales", "Shiny Politoed", "Shiny Stantler", "Shiny Dodrio", "Shiny Espeon", "Shiny Umbreon"} -- Nunca permitir

local proibidosboost = {"Shiny Dragonite", "Shiny Snorlax", "Shiny Gyarados", "Shiny Scyther"} -- Permitir se ditto for +50

local outpokes = {"Magnet Electabuzz","Elder Tyranitar","Hard Golem","Brute Rhydon","Iron Steelix","Brave Charizard","Elder Charizard","Lava Magmar","Enraged Typhlosion","Capoeira Hitmontop","Boxer Hitmonchan","Taekwondo Hitmonlee","Dragon Machamp","Undefeated Machamp","Wardog Arcanine","Elder Arcanine","Furious Mantine","War Gyarados","Brave Blastoise","Brave Venusaur","Ancient Meganium","Tribal Feraligatr","Elder Dragonite","Elder Pinsir","Elder Raichu","Charged Raichu","Tribal Xatu","Enigmatic Girafarig","Ancient Alakazam","Master Alakazam","Furious Ampharos","Elder Electabuzz","Furious Scyther","Tribal Scyther","War Heracross","Metal Scizor","Brave Nidoking","Brave Nidoqueen","Elder Muk","Dark Crobat","Trickmaster Gengar" ,"Elder Gengar" ,"Banshee Misdreavus","Hungry Snorlax","Brute Ursaring","War Granbull","Singer Wigglytuff","Aviator Pidgeot","Metal Skarmory","Brave Noctowl","Elder Pidgeot","Ancient Dragonite","Milch-Miltank","Ancient Kingdra","Psy Jynx","Elder Venusaur","Elder Jynx","Evil Cloyster","Freezing Dewgong","Elder Tangela","Furious Sandslash","Roll Donphan","Bone Marowak","Octopus Octillery","Moon Clefable","Heavy Piloswine","Elder Blastoise","Elder Tentacruel","Elder Marowak","Master Stantler"}

local boost = getItemAttribute(thisball.uid, "boost") or 0

if getCreatureName(item2.uid) == "Ditto" or getCreatureName(item2.uid) == "Shiny Ditto" then

doPlayerSendCancel(cid, "Your ditto can't transform into another ditto.")

markPos(mysum, unfix)

return true

end

if isInArray(outpokes, getCreatureName(item2.uid)) then

doPlayerSendCancel(cid, "Your ditto can't transform into this pokemon.")

markPos(mysum, unfix)

return true

end

if getPlayerLevel(cid) < pokes[getCreatureName(item2.uid)].level then

doPlayerSendCancel(cid, "You haven't level to transform into that pokemon.")

markPos(mysum, unfix)

return true

end

if isInArray(proibidossempre, getCreatureName(item2.uid)) then --Checa a lista

doPlayerSendCancel(cid, "Your ditto can't transform into that pokemon.")

markPos(mysum, unfix)

return true

end

if isInArray(proibidosboost, getCreatureName(item2.uid)) and boost < 50 then --Checa a lista

doPlayerSendCancel(cid, "Your ditto can't transform into that pokemon.")

markPos(mysum, unfix)

return true

end

markPos(mysum, unfix)

doFaceCreature(mysum, getThingPos(item2.uid))

doDittoTransform(mysum, getCreatureName(item2.uid))

return true

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.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo