Ir para conteúdo

[Encerrado] [PDA] Problema no HeadButt.


Posts Recomendados

Estou com um problema no Headbutt, Eu dou a order mais o poke somente vai a te a Arvore (BigTree 12591) e não sai nem um pokemon, Eu ja pesquisei em outro Topico do Slicer, Mais nao consegui arrumar, Sera que conseguem pra mim? Segue abaixo como está aqui:

 

 

Action-> Headbutt

 

 

if item2.itemid == 12591 and isInArray(skills["headbutt"], getCreatureName(mysum)) then

doPlayerSay(cid, ""..getPokeName(mysum)..", "..txt["headbutt"][math.random(1, #txt["headbutt"])].."", 1)

addEvent(goThere, 500, mysum, topos, "headbutt", isCreature(getCreatureTarget(cid)))

 

return true

end

 

Lib-> Headbutt

 

 

elseif skill == "headbutt" then --alterado v1.6

 

local master = getCreatureMaster(sid)

local array = {}

local lvl = {25, 40, 60, 80, 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 * 1000) --o tempo pra arvore voltar ao normal varia de 5~30min

 

 

Segui o outro topico do Slicer, e coloquei mais uma linha no Configuration.Lua

 

Lib -> Configuration.Lua

 

 

["transform"] = {"Ditto"},

["headbutt"] = {"Raticate", "Venusaur", "Blastoise"},

["levitate_fly"] = {"Gengar", "Shiny Gengar"}

 

Se puderem me ajudar, Obrigado desde já!

Link para o comentário
Compartilhar em outros sites

é o o PokemonDash Advance, Vou postar o erro que da no console...

 

@Edit

 

[26/05/2013 21:31:11] [Error - Action Interface]

[26/05/2013 21:31:11] In a timer event called from:

[26/05/2013 21:31:11] data/actions/scripts/order.lua:onUse

[26/05/2013 21:31:11] Description:

[26/05/2013 21:31:11] data/lib/order.lua:247: attempt to get length of local 'array' (a nil value)

[26/05/2013 21:31:11] stack traceback:

[26/05/2013 21:31:11] data/lib/order.lua:247: in function <data/lib/order.lua:206>

Editado por ApShopAdmin
Link para o comentário
Compartilhar em outros sites

Como não postou o script completo, a linha 247 esta entre headbutt?

 

Não tem uma tabela com os pokemons que vem no headbutt?

 

pior que não... essa linha eh outra coisa, se quiser q eu poste avisa que eu edito aqui...

 

tem um uma tabela com os pokes ve ai:

 

@Edit

 

Essa tabela fica no Lib -> configuration.lua

 

 

headbutt = {

[25] = {{"Metapod", 3}, {"Kakuna", 3}, {"Pidgey", 3}, {"Ekans", 1}, {"Sentret", 1}, {"Pineco", 1}, {"Spinarak", 2}},

[40] = {{"Pineco", 2}, {"Pidgeotto", 1}, {"Hoothoot", 1}, {"Natu", 1}, {"Beedrill", 2}, {"Spearow", 3}},

[60] = {{"Arbok", 1}, {"Beedrill", 4}, {"Furret", 1}, {"Ariados", 2}, {"Pidgeotto", 2}, {"Yanma", 1}, {"Pineco", 4}},

[80] = {{"Beedrill", 5}, {"Forretress", 1}, {"Furret", 3}, {"Ariados", 3}, {"Pidgeotto", 4}, {"Yanma", 3}},

[100] = {{"Forretress", 3}, {"Noctowl", 2}, {"Xatu", 2}, {"Yanma", 4}, {"Beedrill", 6}, {"Furret", 6}}, {"Scyther", 1},

}

Editado por ApShopAdmin
Link para o comentário
Compartilhar em outros sites

é pra já! (=

 

Lembrando que eu dei uma traduzida, acho que não fiz caca '---'

 

Seegue abaixo meu order '-'

 

 

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 txt = {

["rock smash"] = {"Quebre essa pedra!", "Esmague essa pedra!", "Destrua essa rocha!", "Esmague isso!", "Quebre isso!", "Destrua isso!"},

["cut"] = {"Corte esse arbusto!", "Leve esse arbusto a baixo!", "Arranque esse arbusto!", "Corte fora esse arbusto!", "Arranque-o!", "Corte esse arbusto fora!"},

["move"] = {"Ande!", "Vá para lá!", "Mecha-se!", "Corra!"},

["light"] = {"Ilumine!", "Luz!", "Ilumine esse lugar!", "Deixe esse lugar mais claro!"},

["dig"] = {"Abra esse buraco!", "Cave esse buraco!", "Abra isso!", "Abra isso!"},

["blink"] = {"Teleporte para lá!", "Apareça ali!", "Teleporte!", "Reapareça ali!"},

["ride"] = {"Deixe-me montar você!", "Deixe-me subir em você!", "Me carregue!", "Leve-me em cima de você!"},

["fly"] = {"Vamos voar!", "Deixe-me voar em cima de você!"} ,

["untransform"] = {"Volte ao normal!", "Transforme-se em você de novo!", "Pare a transformação!"},

["headbutt"] = {"Derrube os pokémons que estão em cima desta arvore", "Corra e de uma cabeçada nesta arvore!", "Cabeceie esta arvore!"},

["levitate_fly"] = {"Vamos levitar!", "Faça-me levitar!", "Vamos assustar algumas pessoas!"}, --alterado v1.8

}

 

function onUse(cid, item, frompos, item2, topos)

local checkpos = topos

checkpos.stackpos = 0

 

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, "Você não pode sair de um vôo nas alturas!")

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, "Você não pode parar de voar sobre as aguas!")

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, "Você não pode parar de Voar/Montar aqui!")

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])..", Deixe-me descer!", 1)

 

doRegainSpeed(cid)

 

doRemoveCondition(cid, CONDITION_OUTFIT)

setPlayerStorageValue(cid, 17000, -1)

setPlayerStorageValue(cid, 17001, -1)

 

if useOTClient then

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

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

---

local storages = {17000, 63215, 17001, 13008, 5700}

for s = 1, #storages do

if getPlayerStorageValue(cid, storages) >= 1 then

return doPlayerSendTextMessage(cid, 20, "Você não pode fazer isto enquanto Voa/Monta/Surfa/Mergulha Ou Anda de Bike!")

end

end

if getPlayerStorageValue(cid, 6598754) == 1 or getPlayerStorageValue(cid, 6598755) == 1 then

return doPlayerSendTextMessage(cid, 20, "Você não pode fazer isso na Pvp-Zone!")

end

if #getCreatureSummons(cid) < 1 then

return doPlayerSendTextMessage(cid, 20, "Você precisa de um pokémon para chamar alguem para um Duelo!")

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 = getCreatureName(cid).." Está chamando você para um duelo, Use Order nele para aceitar o duelo!"

str = str.."Info Battle: Duel "..players.."x"..players.." - "..pokes.." pokes."

 

doPlayerSendTextMessage(player, 20, 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

---

local storages = {17000, 63215, 17001, 13008, 5700}

for s = 1, #storages do

if getPlayerStorageValue(cid, storages) >= 1 then

return doPlayerSendTextMessage(cid, 20, "Você não pode fazer isto enquanto Voa/Monta/Surfa/Mergulha Ou Anda de Bike!")

end

end

if getPlayerStorageValue(cid, 6598754) == 1 or getPlayerStorageValue(cid, 6598755) == 1 then

return doPlayerSendTextMessage(cid, 20, "Você não pode fazer isso na 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, "Você já esta chamando alguem para um Duelo!")

end

if #getCreatureSummons(cid) < 1 then

return doPlayerSendTextMessage(cid, 20, "Você precisa de um Pokómon para aceitar o Duelo!")

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, "Você precisa de um Pokémon para dar 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 unfix = {x = 1, y = 1, z = 1}

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 isInArray(skills["headbutt"], getCreatureName(mysum)) then

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)

return true

end

doPlayerSendCancel(cid, "Seu Ditto não está transformado.")

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, "Seu Ditto não pode se transformar em outro Ditto.")

markPos(mysum, unfix)

return true

end

 

if getCreatureName(item2.uid) == getPlayerStorageValue(mysum, 1010) then

doPlayerSendCancel(cid, "Seu Ditto já esta transformado nesse pokémon.")

markPos(mysum, unfix)

return true

end

 

local cd = getCD(thisball.uid, "trans", 40)

 

if cd > 0 then

doPlayerSendCancel(cid, "Seu pokémon esta muito cansado para se transformar denovo. 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, "Seu pokémon não pode usar Light.")

return true

end

 

local cd = getCD(thisball.uid, "light", 30)

 

if cd > 0 then

doPlayerSendCancel(cid, "Seu pokémon está muito cansado para usar Light. 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 getPlayerStorageValue(cid, 212124) >= 1 then --alterado v1.6

return doPlayerSendCancel(cid, "Você não pode fazer isto usando um pokemon com a mente controlada!")

end

 

if getPlayerStorageValue(cid, 52480) >= 1 then

return doPlayerSendCancel(cid, "Você não pode fazer isso enquanto está em um duelo!") --alterado v1.6

end

 

if getPlayerStorageValue(cid, 5700) == 1 then

doPlayerSendCancel(cid, "Você nao pode fazer isso enquanto está montado em uma Bike!") --edited proteçao pra 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, "Você não pode fazer isso enquanto está na 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, "Seu pokémon está dormindo...zZzZ")

end

 

if getTileInfo(getThingPos(cid)).protection or getTileInfo(getThingPos(getCreatureSummons(cid)[1])).protection then

return doPlayerSendCancel(cid, "Você ou seu pokémon estáo na ProtectionZone!")

end

 

if #getCreatureSummons(cid) == 2 then

return doPlayerSendCancel(cid, "Você só pode controlar um pokémon!")

end

 

local cd = getCD(thisball.uid, "control", 120)

 

if cd > 0 then

doPlayerSendCancel(cid, "Você tem que esperar "..cd.." Segundos para controlar uma mente denovo!")

return true

end

 

if getPokemonLevel(item2.uid) >= getPokemonLevel(mysum) then

return doPlayerSendCancel(cid, "Seu pokémon não pode controlar esta mente!")

end

 

if getPlayerStorageValue(cid, 22545) >= 1 then --alterado v1.7

return doPlayerSendCancel(cid, "Você não pode fazer isso enquanto está na GoldenArena!")

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, "Destino não é alcançável.")

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

 

Link para o comentário
Compartilhar em outros sites

Ok, Segue meu Lib -> Order

 

 

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

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)

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 = 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 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

 

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

 

 

 

@AsMinaPira

 

é o 1.8 eu ia trocar, mais eu editei bastante coisa e achei que não compensava =p

Link para o comentário
Compartilhar em outros sites

Se sabe me dizer quem fez esse headbutt? estou tentando entender aqui sobre oque ele fez pra ver o lvl mais é estranho, seria mais facil perguntar pra quem fez ai resolveria facilmente e.e

Link para o comentário
Compartilhar em outros sites

Pior que veio junto com o server, entao eu nao tenho como saber '--'

eu segui um topico do slicer e ele mandou mudar 1 coisinha no Actions-Order e dps no Configuration.Lua mais nada muito radical '--

vou procurar o topico denovo e dou edit aqui!

 

@Edit

 

O topico era esse http://homologacao.xtibia.com/forum/topic/205878-como-editar-headbutt-do-pda/

mais os comentarios do Slicer sumiram =/

Editado por ApShopAdmin
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...