Ir para conteúdo
Entre para seguir isso  
mastercraft

Order System (Pokemon)

Recommended Posts

mastercraft    1
mastercraft

Informações sobre o script:

 

Nome: Sistema de Order (controlar o pokemon), composto por uma biblioteca e uma action.

Autor: mastercraft

Versão do Tibia/Server: Testado em TFS 0.36pl1 (Tibia 8.54).

 

 

Acredito que o melhor sistema de order que tenha aparecido na net foi o meu, enfim, eu melhorei o sistema de ordenar o pokemon andar até tal lugar. Antes era bem limitado, agora o sistema ficou bem parecido com aquele do SvkE, feito apenas em lua.

 

Primeiramente, crie um arquivo chamado move.lua na pasta data/lib.

Se você usa a mesma lib, mas a da versão do pokemon dash, substitua, pois esta é atualizada.

Coloque isso dentro do arquivo:

 

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 queryTileAddThing(uid,newpos) == 1 or nvar == (nsig/2)



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 walkTo(cid, direction, finalpos)
if not isCreature(cid) then return false end
if isWalkable(getPosByDir(getThingPos(cid), direction), cid, 0, 0) and direction <= 3 then
doPushCreature(cid, direction, 1, 0)
return true
end

if direction >= 4 then
if direction == 4 then
if math.random(1,2) == 1 then
if isWalkable(getPosByDir(getThingPos(cid), 3), cid, 0, 0) then
newdir = 3
else
newdir = 2
end
else
if isWalkable(getPosByDir(getThingPos(cid), 2), cid, 0, 0) then
newdir = 2
else
newdir = 3
end
end
elseif direction == 5 then
if math.random(1,2) == 1 then
if isWalkable(getPosByDir(getThingPos(cid), 2), cid, 0, 0) then
newdir = 2
else
newdir = 1
end
else
if isWalkable(getPosByDir(getThingPos(cid), 1), cid, 0, 0) then
newdir = 1
else
newdir = 2
end
end
elseif direction == 6 then
if math.random(1,2) == 1 then
if isWalkable(getPosByDir(getThingPos(cid), 0), cid, 0, 0) then
newdir = 0
else
newdir = 3
end
else
if isWalkable(getPosByDir(getThingPos(cid), 3), cid, 0, 0) then
newdir = 3
else
newdir = 0
end
end
elseif direction == 7 then
if math.random(1,2) == 1 then
if isWalkable(getPosByDir(getThingPos(cid), 1), cid, 0, 0) then
newdir = 1
else
newdir = 0
end
else
if isWalkable(getPosByDir(getThingPos(cid), 0), cid, 0, 0) then
newdir = 0
else
newdir = 1
end
end
end
doPushCreature(cid, newdir, 1, 0)
return true
end

if direction <= 3 and not isWalkable(getPosByDir(getThingPos(cid), direction), cid, 0, 0) then
if direction == 0 then
if getDirectionTo(getThingPos(cid), finalpos) == 6 then
if isWalkable(getPosByDir(getThingPos(cid), 3), cid, 0, 0) then
newdir = 3
else
newdir = 6
end
elseif getDirectionTo(getThingPos(cid), finalpos) == 7 then
if isWalkable(getPosByDir(getThingPos(cid), 1), cid, 0, 0) then
newdir = 1
else
newdir = 7
end
end
elseif direction == 1 then
if getDirectionTo(getThingPos(cid), finalpos) == 7 then
if isWalkable(getPosByDir(getThingPos(cid), 0), cid, 0, 0) then
newdir = 0
else
newdir = 7
end
elseif getDirectionTo(getThingPos(cid), finalpos) == 5 then
if isWalkable(getPosByDir(getThingPos(cid), 2), cid, 0, 0) then
newdir = 2
else
newdir = 5
end
end
elseif direction == 2 then
if getDirectionTo(getThingPos(cid), finalpos) == 4 then
if isWalkable(getPosByDir(getThingPos(cid), 3), cid, 0, 0) then
newdir = 3
else
newdir = 4
end
elseif getDirectionTo(getThingPos(cid), finalpos) == 5 then
if isWalkable(getPosByDir(getThingPos(cid), 1), cid, 0, 0) then
newdir = 1
else
newdir = 5
end
end
elseif direction == 3 then
if getDirectionTo(getThingPos(cid), finalpos) == 4 then
if isWalkable(getPosByDir(getThingPos(cid), 2), cid, 0, 0) then
newdir = 2
else
newdir = 4
end
elseif getDirectionTo(getThingPos(cid), finalpos) == 6 then
if isWalkable(getPosByDir(getThingPos(cid), 0), cid, 0, 0) then
newdir = 0
else
newdir = 6
end
end
end
doPushCreature(cid, newdir, 1, 0)
return true
end
doPushCreature(cid, direction, 1, 0)
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 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)
if not isCreature(sid) then return end
if getOwnerPos(sid).x ~= getThingPos(getCreatureMaster(sid)).x or getOwnerPos(sid).y ~= getThingPos(getCreatureMaster(sid)).y then
doChangeSpeed(sid, -getCreatureSpeed(sid))
doChangeSpeed(sid, getCreatureBaseSpeed(sid))
return true
end
addEvent(recheck, 120, sid)
end

function goThere(sid, thepos)
if not isCreature(sid) then return true end
if thepos.x ~= getMarkedPos(sid).x or thepos.y ~= getMarkedPos(sid).y then return true end
if isCreature(getCreatureTarget(getCreatureMaster(sid ))) then
doChangeSpeed(sid, -getCreatureSpeed(sid))
doChangeSpeed(sid, getCreatureBaseSpeed(sid))
return true
end
if getThingPos(sid).x == getMarkedPos(sid).x and getThingPos(sid).y == getMarkedPos(sid).y then
addEvent(recheck, 350, sid)
return true
end
if getOwnerPos(sid).x ~= getThingPos(getCreatureMaster(sid)).x or getOwnerPos(sid).y ~= getThingPos(getCreatureMaster(sid)).y then
doChangeSpeed(sid, -getCreatureSpeed(sid))
doChangeSpeed(sid, getCreatureBaseSpeed(sid))
return true
end
doChangeSpeed(sid, - getCreatureSpeed(sid))
doChangeSpeed(sid, getCreatureBaseSpeed(sid))
walkTo(sid, getDirectionTo(getThingPos(sid), getMarkedPos(sid)), getMarkedPos(sid))
doChangeSpeed(sid, - getCreatureSpeed(sid))
addEvent(goThere, 1000 - (2.2 * (getCreatureBaseSpeed(sid))), sid, getMarkedPos(sid))
end

 

Agora, você precisa de um item que seja Useable, ou seja, ao apertar o botão direito, você tem a opção use with...

 

A tag você deve colocar no actions.xml (data/actions):

 

<action itemid="[b][color=red]xxxx[/color][/b]" event="script" value="move.lua" allowfaruse="1"/>

sendo xxxx o id do item que você quer ter como o "order".

 

Agora você cria uma arquivo chamado move.lua em data/actions/scripts, e coloque isso dentro:

 

function onUse(cid, item, frompos, item2, topos)
if getPlayerItemCount(cid, item2.itemid) >= 1 then
return false
end
if #getCreatureSummons(cid) == 0 then
return true
end
doPlayerSay(cid, ""..getCreatureName(getCreatureSummons(cid)[1])..", go there!", 1)
doChangeSpeed(getCreatureSummons(cid)[1], -getCreatureSpeed(getCreatureSummons(cid)[1]))
markPos(getCreatureSummons(cid)[1], topos)
markOwnerPos(getCreatureSummons(cid)[1], getThingPos(cid))
addEvent(goThere, 500, getCreatureSummons(cid)[1], topos)
return true
end

 

Para quem usa o sistema de order do pokemon dash, substitua o arquivo order.lua por este:

 

local nao = {'4820', '4821', '4822', '4823', '4824', '4825', '1395', '1389', '1391', '1393', '460'}

local direction = {'4', '5', '6', '7'}[/color] [color=royalblue]
-- ridefly
local ridefly = {'Crystal Onix', 'Venusaur', 'Ninetales', 'Arcanine', 'Ponyta', 'Rapidash', 'Doduo', 'Dodrio', 'Onix', 'Rhyhorn', 'Tauros', 'Porygon', 'Aerodactyl', 'Dragonite', 'Charizard', 'Pidgeot', 'Fearow', 'Moltres', 'Zapdos', 'Articuno', 'Mew', 'Mewtwo'}
local ride = {'Crystal Onix', 'Venusaur', 'Ninetales', 'Arcanine', 'Ponyta', 'Rapidash', 'Doduo', 'Dodrio', 'Onix', 'Rhyhorn', 'Tauros'}
local fly = {'Porygon', 'Aerodactyl', 'Dragonite', 'Charizard', 'Pidgeot', 'Fearow', 'Zapdos', 'Moltres', 'Articuno', 'Mew', 'Mewtwo'}
local flys = {
[265] = {229, 2300, 350}, -- moltres
[283] = {230, 2100, 350}, -- artic
[199] = {224, 2600, 350}, -- zapdos
[9] = {232, 2200, 525}, -- 1000
[34] = {233, 2200, 525},-- two
[210] = {221, 1300, 410},-- nite
[80] = {222, 900, 375}, -- geot
[17] = {226, 800, 400}, -- fearow
[10] = {227, 1100, 410}, -- aero
[67] = {216, 1000, 410}, -- chari
[97] = {316, 600, 440}, -- porygon
}

local rides = {[/color] [color=royalblue]
[93] = {128, 780, 400}, -- tauros
[114] = {129, 800, 375}, -- kyuubi
[220] = {130, 800, 395}, -- rapid
[16] = {131, 410, 500}, -- ponyta
[77] = {132, 400, 510}, -- rhyhorn
[88] = {12, 900, 390}, -- arcan
[493] = {492, 1000, 360}, -- shiny arca
[496] = {494, 420, 420}, -- shiny vneu
[292] = {293, 480, 430}, -- cristal onix
[248] = {126, 450, 450}, -- onix
[22] = {134, 390, 450}, -- venu
[120] = {133, 750, 380}, -- dodrio
[26] = {135, 420, 500}, -- doduo
}
local bolas = {'2222', '2223', '2224'}
local ultra = {'2220', '2221', '2227'}
local etudao = 9506

local mind = 9507[/color] [color=royalblue]

-- ROCK SMASH[/color] [color=royalblue]
local rocksmash = {'Sandshrew', 'Sandslash', 'Diglett', 'Dugtrio', 'Primeape', 'Machop', 'Machoke', 'Machamp', 'Geodude', 'Graveler', 'Golem' , 'Onix', 'Cubone', 'Marowak', 'Rhyhorn', 'Rhydon', 'Kangaskhan', 'Tauros', 'Snorlax', 'Poliwrath'}
local erockmash = 9502
local cdrocksmash = 5
-- ROCK SMASH

-- DIG[/color] [color=royalblue]
local digholes = {'468', '481', '483'}
local dig = {'Raticate', 'Sandshrew', 'Sandslash', 'Diglett', 'Dugtrio', 'Primeape', 'Machop', 'Machoke', 'Machamp', 'Geodude', 'Graveler', 'Golem' , 'Onix', 'Cubone', 'Marowak', 'Rhyhorn', 'Rhydon', 'Kangaskhan', 'Tauros', 'Snorlax'}
local edig = 9504
local cddig = 5
-- DIG

-- CUT[/color] [color=royalblue]
local cut = {'Raticate', 'Bulbasaur', 'Ivysaur', 'Venusaur', 'Charmeleon', 'Sandshrew', 'Sandslash', 'Gloom', 'Vileplume', 'Paras', 'Parasect', 'Meowth', 'Persian', 'Bellsprout', 'Weepinbell', 'Victreebel', 'Farfetchd', 'Krabby', 'Kingler', 'Exeggutor', 'Cubone', 'Marowak', 'Tangela', 'Scyther', 'Pinsir'}
local ecut = 9503
local cdcut = 5
-- CUT

-- BLINK[/color] [color=royalblue]
local blink = {'Abra', 'Kadabra', 'Alakazam', 'Porygon'}
local exhaustblink = 9501
local cdblink = 50
-- BLINK

-- LIGHT[/color] [color=royalblue]
local light = {'Abra', 'Kadabra', 'Alakazam', 'Magnemite', 'Magneton', 'Drowzee', 'Hypno', 'Voltorb', 'Electrode', 'Mrmime', 'Electabuzz', 'Jolteon', 'Porygon', 'Pikachu', 'Raichu'}
local exhautStorage = 9500
local time = 600
local cd = 17
-- LIGHT

-- CONTROL[/color] [color=royalblue]
function onUse(cid, item, frompos, item2, topos)
if getPlayerItemCount(cid, item2.itemid) >= 1 then
return false
end
if exhaustion.get(cid, etudao) then
       doPlayerSendCancel(cid, "Please wait a few seconds before using order again!")
       return true
       end
if isMonster(item2.uid) and item2.uid ~= getCreatureSummons(cid)[1] and item2.uid ~= cid then
if #getCreatureSummons(cid) == 0 then
       doPlayerSendCancel(cid, "You need a pokemon to use order.")
       return true
       end
if exhaustion.get(cid, mind) then
doPlayerSendCancel(cid, "Your pokemon is too exhausted from the last control, this ability has 2 minutes cooldown.")
return true
end
if isPlayer(getCreatureMaster(item2.uid)) then
doPlayerSendCancel(cid, "You cant control the mind of someone's else pokemon.")
return true
end
if not isInArray({"Alakazam", "Tentacruel", "Gengar"}, getCreatureName(getCreatureSummons(cid)[1])) then
doPlayerSendCancel(cid, "This pokemon cant control minds.")
return true
end
exhaustion.set(cid, mind, 240)
doCreatureSay(getCreatureSummons(cid)[1], "CONTROL MIND!", TALKTYPE_MONSTER)
doSendDistanceShoot(getThingPos(getCreatureSummons(cid)[1]), getThingPos(item2.uid), 39)
registerCreatureEvent(item2.uid, "Controled")
doSendMagicEffect(getThingPos(item2.uid), 136)
doSendMagicEffect(getThingPos(item2.uid), 134)
doSendMagicEffect(getThingPos(getCreatureSummons(cid)[1]), 133)
setPlayerStorageValue(cid, 61209, getCreatureMaxHealth(getCreatureSummons(cid)[1]))
setPlayerStorageValue(cid, 61210, getCreatureHealth(getCreatureSummons(cid)[1]))
doConvinceCreature(cid, item2.uid)
if getCreatureSpeed(item2.uid) == 0 then
doChangeSpeed(item2.uid, 180)
end
doCreatureSay(cid, ""..getCreatureName(getCreatureSummons(cid)[1])..", control "..string.lower(getCreatureName(item2.uid)).."'s mind!", 1)
local cmed = item2.uid
local cmname = getCreatureName(getCreatureSummons(cid)[1])
local cmpos = getThingPos(getCreatureSummons(cid)[1])
doRemoveCreature(getCreatureSummons(cid)[1])
local cmzao = doSummonCreature(""..cmname.." cm", cmpos)
doConvinceCreature(cid, cmzao)
setPlayerStorageValue(cid, 888, 1)
       local function check(params)
       if isCreature(params.cid) then
       if getPlayerStorageValue(params.cid, 888) <= 0 then
       return true
       end
-- CONTROL

       if not isCreature(cmed) then[/color] [color=royalblue]
local pkcmpos = getThingPos(getCreatureSummons(cid)[1])
doRemoveCreature(getCreatureSummons(cid)[1])
local item = getPlayerSlotItem(cid, 8)
local pk = doSummonCreature(getItemAttribute(item.uid, "poke"):match("This is (.-)'s pokeball."), pkcmpos)
doConvinceCreature(cid, pk)
doCreatureSetLookDir(getCreatureSummons(cid)[1], 2)
registerCreatureEvent(pk, "DiePoke")
registerCreatureEvent(pk, "Exp")
registerCreatureEvent(cid, "PlayerPokeDeath")
setCreatureMaxHealth(pk, (getPlayerStorageValue(cid, 61209)))
doCreatureAddHealth(pk, (getPlayerStorageValue(cid, 61209)))
doCreatureAddHealth(pk, (getPlayerStorageValue(cid, 61210))-(getPlayerStorageValue(cid, 61209)))
setPlayerStorageValue(cid, 888, 0)
       end
       if params.rod == 20 then
       local lifecmed = getCreatureMaxHealth(cmed) - getCreatureHealth(cmed)
       local poscmed = getThingPos(cmed)
       local cmeddir = getCreatureLookDir(cmed)
       local namecmed = getCreatureName(cmed)
       doRemoveCreature(getCreatureSummons(cid)[1])
       local back = doSummonCreature(""..namecmed.." s", poscmed)
       if getCreatureSpeed(back) == 0 then
       doChangeSpeed(back, 180)
       end
       doCreatureSetLookDir(back, cmeddir)
       doCreatureAddHealth(back, -lifecmed)
local item = getPlayerSlotItem(cid, 8)
local mynewpos = getThingPos(getCreatureSummons(cid)[1])
doRemoveCreature(getCreatureSummons(cid)[1])
pk = doSummonCreature(getItemAttribute(item.uid, "poke"):match("This is (.-)'s pokeball."), mynewpos)
doConvinceCreature(cid, pk)
doCreatureSetLookDir(getCreatureSummons(cid)[1], 2)
registerCreatureEvent(pk, "DiePoke")
registerCreatureEvent(pk, "Exp")
registerCreatureEvent(cid, "PlayerPokeDeath")
setCreatureMaxHealth(pk, (getPlayerStorageValue(cid, 61209)))
doCreatureAddHealth(pk, (getPlayerStorageValue(cid, 61209)))
doCreatureAddHealth(pk, (getPlayerStorageValue(cid, 61210))-(getPlayerStorageValue(cid, 61209)))
setPlayerStorageValue(cid, 888, 0)
       else
       doSendMagicEffect(getThingPos(getCreatureSummons(cid)[1]), 220)
       end
       end
       end
for rod = 1, 20 do
addEvent(check, rod*500, {cid = cid, rod = rod})
end
return true
end

if item2.uid == cid then[/color]         [color=royalblue]
       if getPlayerStorageValue(cid, 888) >= 1 then
       doPlayerSendCancel(cid, "You cant fly neither ride pokemons being controled.")
       return true
       end
       if #getCreatureSummons(cid) == 0 and getPlayerStorageValue(cid, 17000) <= 0 and getPlayerStorageValue(cid, 17001) <= 0 then
       doPlayerSendCancel(cid, "You need a pokemon to use order.")
       return true
       end

       if getPlayerStorageValue(cid, 17000) <= 0 and getPlayerStorageValue(cid, 17001) <= 0 and not isInArray(ridefly, getCreatureName(getCreatureSummons(cid)[1])) then[/color] [color=royalblue]
       doPlayerSendCancel(cid, "You can't ride this pokemon nor fly with it.")
       return true
       end

       if getPlayerStorageValue(cid, 17000) <= 0 and getPlayerStorageValue(cid, 17001) <= 0 and getCreatureSpeed(getCreatureSummons(cid)[1]) == 0 then[/color] [color=royalblue]
       return true
       end


       if getPlayerStorageValue(cid, 17001) <= 0 and getPlayerStorageValue(cid, 17000) <= 0 and isInArray(ride, getCreatureName(getCreatureSummons(cid)[1])) then[/color]  [color=royalblue]
       local pokemon = rides[getCreatureOutfit(getCreatureSummons(cid)[1]).lookType]
       if getCreatureSpeed(getCreatureSummons(cid)[1]) >= 1 then
       doChangeSpeed(getCreatureSummons(cid)[1], -getCreatureSpeed(getCreatureSummons(cid)[1]))
       end
       local function ride(params)
       if isCreature(params.cid) then
       if isCreature(getCreatureSummons(params.cid)[1]) then
       if getDistanceBetween(getThingPos(getCreatureSummons(cid)[1]), getThingPos(cid)) <= params.d then
       doChangeSpeed(cid, -250)
       doChangeSpeed(cid, pokemon[2])
       exhaustion.set(cid, etudao, 4)
       setPlayerStorageValue(cid, 17001, 1)
       doSetCreatureOutfit(cid, {lookType = pokemon[1], lookHead = 0, lookAddons = 0, lookLegs = 0, lookBody = 0, lookFeet = 0}, -1)
       setPlayerStorageValue(cid, 61209, getCreatureMaxHealth(getCreatureSummons(cid)[1]))
       setPlayerStorageValue(cid, 61210, getCreatureHealth(getCreatureSummons(cid)[1]))
       doRemoveCreature(getCreatureSummons(cid)[1])
       else
       dirh = getDirectionTo(getThingPos(getCreatureSummons(params.cid)[1]), getThingPos(params.cid))
       if dirh == NORTHWEST then
               if math.random(1,100) >= 51 then
               dirh = NORTH
               else
               dirh = WEST
               end
       elseif dirh == SOUTHWEST then
               if math.random(1,100) >= 51 then
               dirh = SOUTH
               else
               dirh = WEST
               end
       elseif dirh == SOUTHEAST then
               if math.random(1,100) >= 51 then
               dirh = SOUTH
               else
               dirh = EAST
               end
       elseif dirh == NORTHEAST then
               if math.random(1,100) >= 51 then
               dirh = NORTH
               else
               dirh = EAST
               end
       end
       local dirh = dirh
       if getCreatureSpeed(getCreatureSummons(params.cid)[1]) == 0 then
       doChangeSpeed(getCreatureSummons(params.cid)[1], getCreatureBaseSpeed(getCreatureSummons(cid)[1]))
       doPushCreature(getCreatureSummons(params.cid)[1], dirh, 1, 0)
       doChangeSpeed(getCreatureSummons(params.cid)[1], -getCreatureSpeed(getCreatureSummons(cid)[1]))
       else
       doPushCreature(getCreatureSummons(params.cid)[1], dirh, 1, 0)
       doChangeSpeed(getCreatureSummons(params.cid)[1], -getCreatureSpeed(getCreatureSummons(cid)[1]))
       end
       end
       end
       end
       end

       local function speed(params)[/color]         [color=royalblue]
       if isCreature(params.cid) then
       if isCreature(getCreatureSummons(params.cid)[1]) then
       if getCreatureSpeed(getCreatureSummons(params.cid)[1]) == 0 then
       doChangeSpeed(getCreatureSummons(params.cid)[1], getCreatureBaseSpeed(getCreatureSummons(cid)[1]))
       end
       end
       end
       end
       doCreatureSay(cid, ""..getCreatureName(getCreatureSummons(cid)[1])..", let me ride you!", 1)
exhaustion.set(cid, etudao, 4)
       if getPlayerGroupId(cid) >= 2 and getPlayerGroupId(cid) <= 6 then
       distanc = 1
       else
       distanc = 0
       end
       local distance = distanc
       for i=1,12 do
       addEvent(ride, pokemon[3]*i, {cid = cid, d = distance})
       addEvent(speed, ((pokemon[3]*12)+100), {cid = cid})
       end     
       return true
       end

       if getPlayerStorageValue(cid, 17001) >= 1 then[/color] [color=royalblue]
       setPlayerStorageValue(cid, 17001, 0)
       if getPlayerGroupId(cid) ~= 6 then
       setPlayerGroupId(cid, 8)
       end
       doCreatureSetLookDir(cid, 2)
       doChangeSpeed(cid, -(getCreatureSpeed(cid)))
       if getPlayerGroupId(cid) >= 2 and getPlayerGroupId(cid) <= 7 then
       doChangeSpeed(cid, 400*getPlayerGroupId(cid))
       else
       doChangeSpeed(cid, 250)
       end
       doRemoveCondition(cid, CONDITION_OUTFIT)
       local item = getPlayerSlotItem(cid, 8)
       doCreatureSay(cid, "" .. getItemAttribute(item.uid, "poke"):match("This is (.-)'s pokeball.")..", let me get down!", 1)
       doSummonMonster(cid, getItemAttribute(item.uid, "poke"):match("This is (.-)'s pokeball."))
       local pk = getCreatureSummons(cid)[1]
       registerCreatureEvent(cid, "PlayerPokeDeath")
       if isInArray(bolas, item.itemid) then
       registerCreatureEvent(pk, "DiePoke")
       elseif isInArray(ultra, item.itemid) then
       registerCreatureEvent(pk, "DiePoke2")
       end
       setCreatureMaxHealth(pk, (getPlayerStorageValue(cid, 61209)))
       doCreatureAddHealth(pk, (getPlayerStorageValue(cid, 61209)))
       doCreatureAddHealth(pk, (getPlayerStorageValue(cid, 61210))-(getPlayerStorageValue(cid, 61209)))
       return true
       end


if getPlayerStorageValue(cid, 17000) >= 1 then[/color]  [color=royalblue]
       if getTileInfo(getThingPos(cid)).itemid == 460 or getTileInfo(getThingPos(cid)).itemid == 1023 or getTileInfo(getThingPos(cid)).itemid == 1022 then
       doPlayerSendCancel(cid, "You can\'t stop flying at this height!")
       return true
       end
       if getTileInfo(getThingPos(cid)).itemid >= 4820 and getTileInfo(getThingPos(cid)).itemid <= 4825 then
       doPlayerSendCancel(cid, "You can\'t stop flying above the water!")
       return true
       end
       if getPlayerGroupId(cid) ~= 6 then
       setPlayerGroupId(cid, 8)
       end
       doCreatureSetLookDir(cid, 2)
       setPlayerStorageValue(cid, 17000, 0)
       doChangeSpeed(cid, -(getCreatureSpeed(cid)))
       if getPlayerGroupId(cid) >= 2 and getPlayerGroupId(cid) <= 7 then
       doChangeSpeed(cid, 200*getPlayerGroupId(cid))
       else
       doChangeSpeed(cid, 250)
       end
       doRemoveCondition(cid, CONDITION_OUTFIT)
       local item = getPlayerSlotItem(cid, 8)
       doCreatureSay(cid, "" .. getItemAttribute(item.uid, "poke"):match("This is (.-)'s pokeball.")..", let me get down!", 1)
       doSummonMonster(cid, getItemAttribute(item.uid, "poke"):match("This is (.-)'s pokeball."))
       local pk = getCreatureSummons(cid)[1]
       registerCreatureEvent(cid, "PlayerPokeDeath")
       if isInArray(bolas, item.itemid) then
       registerCreatureEvent(pk, "DiePoke")
       elseif isInArray(ultra, item.itemid) then
       registerCreatureEvent(pk, "DiePoke2")
       end
       setCreatureMaxHealth(pk, (getPlayerStorageValue(cid, 61209)))
       doCreatureAddHealth(pk, (getPlayerStorageValue(cid, 61209)))
       doCreatureAddHealth(pk, (getPlayerStorageValue(cid, 61210))-(getPlayerStorageValue(cid, 61209)))
return true
end

   if not isPremium(cid) then[/color] [color=royalblue]
   doPlayerSendCancel(cid, "Only premium members are allowed to fly.")
   return true
   end

       if getPlayerStorageValue(cid, 17000) <= 0 and getPlayerStorageValue(cid, 17001) <= 0 and isInArray(fly, getCreatureName(getCreatureSummons(cid)[1])) then[/color] [color=royalblue]
       if getPlayerStorageValue(cid, 17000) <= 0 then
       local pokemon = flys[getCreatureOutfit(getCreatureSummons(cid)[1]).lookType]
       local function fly(params)
       if isCreature(params.cid) then
       if isCreature(getCreatureSummons(params.cid)[1]) then
       if getDistanceBetween(getThingPos(getCreatureSummons(cid)[1]), getThingPos(cid)) <= params.dd then
       doPlayerSendTextMessage(cid,27, "Type \"up\" or \"h1\" to fly higher and \"down\" or \"h2\" to fly lower." )
       setPlayerStorageValue(cid, 61209, getCreatureMaxHealth(getCreatureSummons(cid)[1]))
       setPlayerStorageValue(cid, 61210, getCreatureHealth(getCreatureSummons(cid)[1]))
       setPlayerStorageValue(cid, 17000, 1)
       registerCreatureEvent(cid, "Flying")
       doChangeSpeed(cid, -250)
       doChangeSpeed(cid, pokemon[2])
       exhaustion.set(cid, etudao, 4)
       doSetCreatureOutfit(cid, {lookType = pokemon[1], lookHead = 0, lookAddons = 0, lookLegs = 0, lookBody = 0, lookFeet = 0}, -1)
       doRemoveCreature(getCreatureSummons(cid)[1])
       else
       dir = getDirectionTo(getThingPos(getCreatureSummons(params.cid)[1]), getThingPos(params.cid))
       if dir == NORTHWEST then
               if math.random(1,100) >= 51 then
               dir = NORTH
               else
               dir = WEST
               end
       elseif dir == SOUTHWEST then
               if math.random(1,100) >= 51 then
               dir = SOUTH
               else
               dir = WEST
               end
       elseif dir == SOUTHEAST then
               if math.random(1,100) >= 51 then
               dir = SOUTH
               else
               dir = EAST
               end
       elseif dir == NORTHEAST then
               if math.random(1,100) >= 51 then
               dir = NORTH
               else
               dir = EAST
               end
       end
       local dir = dir
       if getCreatureSpeed(getCreatureSummons(params.cid)[1]) == 0 then
       doChangeSpeed(getCreatureSummons(params.cid)[1], getCreatureBaseSpeed(getCreatureSummons(cid)[1]))
       doPushCreature(getCreatureSummons(params.cid)[1], dir, 1, 0)
       doChangeSpeed(getCreatureSummons(params.cid)[1], -getCreatureSpeed(getCreatureSummons(cid)[1]))
       else
       doPushCreature(getCreatureSummons(params.cid)[1], dir, 1, 0)
       doChangeSpeed(getCreatureSummons(params.cid)[1], -getCreatureSpeed(getCreatureSummons(cid)[1]))
       end
       end
       end
       end
       end

       local function speed(params)[/color] [color=royalblue]
       if isCreature(params.cid) then
       if isCreature(getCreatureSummons(params.cid)[1]) then
       if getCreatureSpeed(getCreatureSummons(params.cid)[1]) == 0 then
       doChangeSpeed(getCreatureSummons(params.cid)[1], getCreatureBaseSpeed(getCreatureSummons(cid)[1]))
       end
       end
       end
       end

       doCreatureSay(cid, ""..getCreatureName(getCreatureSummons(cid)[1])..", lets fly!", 1)[/color] [color=royalblue]
exhaustion.set(cid, etudao, 4)
       if getPlayerGroupId(cid) >= 2 and getPlayerGroupId(cid) <= 6 then
       distancc = 1
       else
       distancc = 0
       end
       local distancee = distancc
       for i=1,12 do
       addEvent(fly, pokemon[3]*i, {cid = cid, dd = distancee})
       addEvent(speed, ((pokemon[3]*12)+100), {cid = cid})
       end     
       return true
       end
return true
end
end
-- ROCK SMASH
if item2.itemid == 1285 and getPlayerStorageValue(cid, 63215) <= 0 then
if #getCreatureSummons(cid) == 0 then
doPlayerSendCancel(cid, "You need a pokemon to use rock smash.")
return true
end
if not isInArray(rocksmash, getCreatureName(getCreatureSummons(cid)[1])) then
doPlayerSendCancel(cid, "This pokemon can't use rock smash.")
return true
end
if isInArray(rocksmash, getCreatureName(getCreatureSummons(cid)[1])) then
       if exhaustion.get(cid, erocksmash) then
       doPlayerSendCancel(cid, "Please wait a few seconds before using rock smash again!")
       return true
       end


if getCreatureSpeed(getCreatureSummons(cid)[1]) == 0 then[/color]  [color=royalblue]
return true
end
doChangeSpeed(getCreatureSummons(cid)[1], -getCreatureSpeed(getCreatureSummons(cid)[1]))
       local function tocut(params)
       if isCreature(params.cid) then
       if isCreature(getCreatureSummons(params.cid)[1]) then
       if getCreatureSpeed(getCreatureSummons(params.cid)[1]) >= 1 then
       return true
       end
       if getPlayerStorageValue(getCreatureSummons(params.cid)[1], 100) >= 1 then
       return true
       end
       if getDistanceBetween(getThingPos(getCreatureSummons(params.cid)[1]), topos) == 1 then
       doSendMagicEffect(topos, 118)
       doTransformItem(getTileItemById(topos, 1285).uid, 2257)
       exhaustion.set(cid, erocksmash, cdrocksmash)
       setPlayerStorageValue(getCreatureSummons(params.cid)[1], 100, 1)
               local function detrans(params)
               doTransformItem(getTileItemById(topos, 2257).uid, 1285)
                       if isCreature(getCreatureSummons(params.ciddd)[1]) then
                       setPlayerStorageValue(getCreatureSummons(params.ciddd)[1], 100, 0)
                       end
               end
       addEvent(detrans, 5500, {ciddd = cid})
       doCreatureSay(getCreatureSummons(cid)[1], "ROCK SMASH!", TALKTYPE_MONSTER)
       local function nmr(params)
       if isCreature(params.cid) then
       if isCreature(getCreatureSummons(params.cid)[1]) then
               if getCreatureSpeed(getCreatureSummons(params.cid)[1]) == 0 then
               doChangeSpeed(getCreatureSummons(params.cid)[1], getCreatureBaseSpeed(getCreatureSummons(params.cid)[1]))
               end
       end
       end
       end
       addEvent(nmr, 400, {cid = cid})
       else
       local badire = getDirectionTo(getThingPos(getCreatureSummons(cid)[1]), topos)
       if badire == NORTHWEST then
               if math.random(1,100) >= 51 then
               badire = NORTH
                       if isWalkable(getPosByDir(getThingPos(getCreatureSummons(params.cid)[1]), badire), params.ccid, 0, 0) then
                       badire = NORTH
                       else
                       badire = WEST
                       end
               else
               badire = WEST
                       if isWalkable(getPosByDir(getThingPos(getCreatureSummons(params.cid)[1]), badire), params.ccid, 0, 0) then
                       badire = WEST
                       else
                       badire = NORTH
                       end
               end
       elseif badire == SOUTHWEST then
               if math.random(1,100) >= 51 then
               badire = SOUTH
                       if isWalkable(getPosByDir(getThingPos(getCreatureSummons(params.cid)[1]), badire), params.ccid, 0, 0) then
                       badire = SOUTH
                       else
                       badire = WEST
                       end
               else
               badire = WEST
                       if isWalkable(getPosByDir(getThingPos(getCreatureSummons(params.cid)[1]), badire), params.ccid, 0, 0) then
                       badire = WEST
                       else
                       badire = SOUTH
                       end
               end
       elseif badire == SOUTHEAST then
               if math.random(1,100) >= 51 then
               badire = SOUTH
                       if isWalkable(getPosByDir(getThingPos(getCreatureSummons(params.cid)[1]), badire), params.ccid, 0, 0) then
                       badire = SOUTH
                       else
                       badire = EAST
                       end
               else
               badire = EAST
                       if isWalkable(getPosByDir(getThingPos(getCreatureSummons(params.cid)[1]), badire), params.ccid, 0, 0) then
                       badire = EAST
                       else
                       badire = SOUTH
                       end
               end
       elseif badire == NORTHEAST then
               if math.random(1,100) >= 51 then
               badire = NORTH
                       if isWalkable(getPosByDir(getThingPos(getCreatureSummons(params.cid)[1]), badire), params.ccid, 0, 0) then
                       badire = NORTH
                       else
                       badire = EAST
                       end
               else
               badire = EAST
                       if isWalkable(getPosByDir(getThingPos(getCreatureSummons(params.cid)[1]), badire), params.ccid, 0, 0) then
                       badire = EAST
                       else
                       badire = NORTH
                       end
               end
       end
       local badire = badire
       if getCreatureSpeed(getCreatureSummons(params.cid)[1]) == 0 then
       doChangeSpeed(getCreatureSummons(params.cid)[1], getCreatureBaseSpeed(getCreatureSummons(params.cid)[1]))
       doPushCreature(getCreatureSummons(params.cid)[1], badire, 1, 0)
       doChangeSpeed(getCreatureSummons(params.cid)[1], -getCreatureSpeed(getCreatureSummons(params.cid)[1]))
       else
       doPushCreature(getCreatureSummons(params.cid)[1], badire, 1, 0)
       doChangeSpeed(getCreatureSummons(params.cid)[1], -getCreatureSpeed(getCreatureSummons(params.cid)[1]))
       end
       end
       end
       end
       end

doPlayerSay(cid, ""..getCreatureName(getCreatureSummons(cid)[1])..", smash this rock!", 1)[/color] [color=royalblue]
local speed = getCreatureBaseSpeed(getCreatureSummons(cid)[1])
local temk = 1000 -(2.3 * speed)
addEvent(tocut, 0, {cid = cid, ccid = getCreatureSummons(cid)[1], topos = topos})
for i = 1, getDistanceBetween(getThingPos(getCreatureSummons(cid)[1]), topos) * 2 do
addEvent(tocut, temk*i, {cid = cid, ccid = getCreatureSummons(cid)[1], topos = topos})
end
return true
end
end
-- ROCK SMASH END

-- CUT[/color] [color=royalblue]
if item2.itemid == 2767 and getPlayerStorageValue(cid, 63215) <= 0 then
if #getCreatureSummons(cid) == 0 then
doPlayerSendCancel(cid, "You need a pokemon to use cut.")
return true
end
if not isInArray(cut, getCreatureName(getCreatureSummons(cid)[1])) then
doPlayerSendCancel(cid, "This pokemon can't use cut.")
return true
end
if isInArray(cut, getCreatureName(getCreatureSummons(cid)[1])) then
       if exhaustion.get(cid, ecut) then
       doPlayerSendCancel(cid, "Please wait a few seconds before using cut again!")
       return true
       end
if getCreatureSpeed(getCreatureSummons(cid)[1]) == 0 then
return true
end
doChangeSpeed(getCreatureSummons(cid)[1], -getCreatureSpeed(getCreatureSummons(cid)[1]))
       local function tocut(params)
       if isCreature(params.cid) then
       if isCreature(getCreatureSummons(params.cid)[1]) then
       if getCreatureSpeed(getCreatureSummons(params.cid)[1]) >= 1 then
       return true
       end
       if getPlayerStorageValue(getCreatureSummons(params.cid)[1], 101) >= 1 then
       return true
       end
       if getDistanceBetween(getThingPos(getCreatureSummons(params.cid)[1]), topos) == 1 then
       doSendMagicEffect(topos, 141)
       doTransformItem(getTileItemById(topos, 2767).uid, 6216)
       exhaustion.set(cid, ecut, cdcut)
       setPlayerStorageValue(getCreatureSummons(params.cid)[1], 101, 1)
               local function detrans(params)
               doTransformItem(getTileItemById(topos, 6216).uid, 2767)
                       if isCreature(getCreatureSummons(params.ciddd)[1]) then
                       setPlayerStorageValue(getCreatureSummons(params.ciddd)[1], 101, 0)
                       end
               end
       addEvent(detrans, 5500, {ciddd = cid})
       doCreatureSay(getCreatureSummons(cid)[1], "CUT!", TALKTYPE_MONSTER)
       local function nmr(params)
       if isCreature(params.cid) then
       if isCreature(getCreatureSummons(params.cid)[1]) then
               if getCreatureSpeed(getCreatureSummons(params.cid)[1]) == 0 then
               doChangeSpeed(getCreatureSummons(params.cid)[1], getCreatureBaseSpeed(getCreatureSummons(params.cid)[1]))
               end
       end
       end
       end
       addEvent(nmr, 400, {cid = cid})
       else
       adire = getDirectionTo(getThingPos(getCreatureSummons(cid)[1]), topos)
       if adire == NORTHWEST then
               if math.random(1,100) >= 51 then
               adire = NORTH
                       if isWalkable(getPosByDir(getThingPos(getCreatureSummons(params.cid)[1]), adire), params.ccid, 0, 0) then
                       adire = NORTH
                       else
                       adire = WEST
                       end
               else
               adire = WEST
                       if isWalkable(getPosByDir(getThingPos(getCreatureSummons(params.cid)[1]), adire), params.ccid, 0, 0) then
                       adire = WEST
                       else
                       adire = NORTH
                       end
               end
       elseif adire == SOUTHWEST then
               if math.random(1,100) >= 51 then
               adire = SOUTH
                       if isWalkable(getPosByDir(getThingPos(getCreatureSummons(params.cid)[1]), adire), params.ccid, 0, 0) then
                       adire = SOUTH
                       else
                       adire = WEST
                       end
               else
               adire = WEST
                       if isWalkable(getPosByDir(getThingPos(getCreatureSummons(params.cid)[1]), adire), params.ccid, 0, 0) then
                       adire = WEST
                       else
                       adire = SOUTH
                       end
               end
       elseif adire == SOUTHEAST then
               if math.random(1,100) >= 51 then
               adire = SOUTH
                       if isWalkable(getPosByDir(getThingPos(getCreatureSummons(params.cid)[1]), adire), params.ccid, 0, 0) then
                       adire = SOUTH
                       else
                       adire = EAST
                       end
               else
               adire = EAST
                       if isWalkable(getPosByDir(getThingPos(getCreatureSummons(params.cid)[1]), adire), params.ccid, 0, 0) then
                       adire = EAST
                       else
                       adire = SOUTH
                       end
               end
       elseif adire == NORTHEAST then
               if math.random(1,100) >= 51 then
               adire = NORTH
                       if isWalkable(getPosByDir(getThingPos(getCreatureSummons(params.cid)[1]), adire), params.ccid, 0, 0) then
                       adire = NORTH
                       else
                       adire = EAST
                       end
               else
               adire = EAST
                       if isWalkable(getPosByDir(getThingPos(getCreatureSummons(params.cid)[1]), adire), params.ccid, 0, 0) then
                       adire = EAST
                       else
                       adire = NORTH
                       end
               end
       end
       local adire = adire
       if getCreatureSpeed(getCreatureSummons(params.cid)[1]) == 0 then
       doChangeSpeed(getCreatureSummons(params.cid)[1], getCreatureBaseSpeed(getCreatureSummons(params.cid)[1]))
       doPushCreature(getCreatureSummons(params.cid)[1], adire, 1, 0)
       doChangeSpeed(getCreatureSummons(params.cid)[1], -getCreatureSpeed(getCreatureSummons(params.cid)[1]))
       else
       doPushCreature(getCreatureSummons(params.cid)[1], adire, 1, 0)
       doChangeSpeed(getCreatureSummons(params.cid)[1], -getCreatureSpeed(getCreatureSummons(params.cid)[1]))
       end
       end
       end
       end
       end

doPlayerSay(cid, ""..getCreatureName(getCreatureSummons(cid)[1])..", cut this bush!", 1)[/color] [color=royalblue]
local speed = getCreatureBaseSpeed(getCreatureSummons(cid)[1])
temk = 1000 -(2.3 * speed)
addEvent(tocut, 0, {cid = cid, ccid = getCreatureSummons(cid)[1], topos = topos})
for i = 1, getDistanceBetween(getThingPos(getCreatureSummons(cid)[1]), topos) * 2 do
addEvent(tocut, temk*i, {cid = cid, ccid = getCreatureSummons(cid)[1], topos = topos})
end

return true[/color] [color=royalblue]
end
end
-- CUT END

-- DIG[/color] [color=royalblue]
if isInArray(digholes, item2.itemid) and getPlayerStorageValue(cid, 63215) <= 0 then
if #getCreatureSummons(cid) == 0 then
doPlayerSendCancel(cid, "You need a pokemon to use dig.")
return true
end
if not isInArray(dig, getCreatureName(getCreatureSummons(cid)[1])) then
doPlayerSendCancel(cid, "This pokemon can't use dig.")
return true
end
if isInArray(dig, getCreatureName(getCreatureSummons(cid)[1])) then
       if exhaustion.get(cid, edig) then
       doPlayerSendCancel(cid, "Please wait a few seconds before using dig again!")
       return true
       end
if getCreatureSpeed(getCreatureSummons(cid)[1]) == 0 then
return true
end
doChangeSpeed(getCreatureSummons(cid)[1], -getCreatureSpeed(getCreatureSummons(cid)[1]))
       local function tocut(params)
       if isCreature(params.cid) then
       if isCreature(getCreatureSummons(params.cid)[1]) then
       if getCreatureSpeed(getCreatureSummons(params.cid)[1]) >= 1 then
       return true
       end
       if getPlayerStorageValue(getCreatureSummons(params.cid)[1], 99) >= 1 then
       return true
       end
       if getDistanceBetween(getThingPos(getCreatureSummons(params.cid)[1]), topos) == 1 then
       doSendMagicEffect(topos, 3)
       setPlayerStorageValue(getCreatureSummons(params.cid)[1], 99, 1)
       doTransformItem(getTileItemById(topos, item2.itemid).uid, item2.itemid+1)
       exhaustion.set(cid, edig, cddig)
               local function detrans(params)
               doTransformItem(getTileItemById(topos, item2.itemid+1).uid, item2.itemid)
                       if isCreature(getCreatureSummons(params.ciddd)[1]) then
                       setPlayerStorageValue(getCreatureSummons(params.ciddd)[1], 99, 0)
                       end
               end
       addEvent(detrans, 5500, {ciddd = cid})
       doCreatureSay(getCreatureSummons(cid)[1], "DIG!", TALKTYPE_MONSTER)
       local function nmr(params)
       if isCreature(params.cid) then
       if isCreature(getCreatureSummons(params.cid)[1]) then
               if getCreatureSpeed(getCreatureSummons(params.cid)[1]) == 0 then
               doChangeSpeed(getCreatureSummons(params.cid)[1], getCreatureBaseSpeed(getCreatureSummons(params.cid)[1]))
               end
       end
       end
       end
       addEvent(nmr, 400, {cid = cid})
       else
       local cdire = getDirectionTo(getThingPos(getCreatureSummons(cid)[1]), topos)
       if cdire == NORTHWEST then
               if math.random(1,100) >= 51 then
               cdire = NORTH
                       if isWalkable(getPosByDir(getThingPos(getCreatureSummons(params.cid)[1]), cdire), params.ccid, 0, 0) then
                       cdire = NORTH
                       else
                       cdire = WEST
                       end
               else
               cdire = WEST
                       if isWalkable(getPosByDir(getThingPos(getCreatureSummons(params.cid)[1]), cdire), params.ccid, 0, 0) then
                       cdire = WEST
                       else
                       cdire = NORTH
                       end
               end
       elseif cdire == SOUTHWEST then
               if math.random(1,100) >= 51 then
               cdire = SOUTH
                       if isWalkable(getPosByDir(getThingPos(getCreatureSummons(params.cid)[1]), cdire), params.ccid, 0, 0) then
                       cdire = SOUTH
                       else
                       cdire = WEST
                       end
               else
               cdire = WEST
                       if isWalkable(getPosByDir(getThingPos(getCreatureSummons(params.cid)[1]), cdire), params.ccid, 0, 0) then
                       cdire = WEST
                       else
                       cdire = SOUTH
                       end
               end
       elseif cdire == SOUTHEAST then
               if math.random(1,100) >= 51 then
               cdire = SOUTH
                       if isWalkable(getPosByDir(getThingPos(getCreatureSummons(params.cid)[1]), cdire), params.ccid, 0, 0) then
                       cdire = SOUTH
                       else
                       cdire = EAST
                       end
               else
               cdire = EAST
                       if isWalkable(getPosByDir(getThingPos(getCreatureSummons(params.cid)[1]), cdire), params.ccid, 0, 0) then
                       cdire = EAST
                       else
                       cdire = SOUTH
                       end
               end
       elseif cdire == NORTHEAST then
               if math.random(1,100) >= 51 then
               cdire = NORTH
                       if isWalkable(getPosByDir(getThingPos(getCreatureSummons(params.cid)[1]), cdire), params.ccid, 0, 0) then
                       cdire = NORTH
                       else
                       cdire = EAST
                       end
               else
               cdire = EAST
                       if isWalkable(getPosByDir(getThingPos(getCreatureSummons(params.cid)[1]), cdire), params.ccid, 0, 0) then
                       cdire = EAST
                       else
                       cdire = NORTH
                       end
               end
       end
       local cdire = cdire
       if getCreatureSpeed(getCreatureSummons(params.cid)[1]) == 0 then
       doChangeSpeed(getCreatureSummons(params.cid)[1], getCreatureBaseSpeed(getCreatureSummons(params.cid)[1]))
       doPushCreature(getCreatureSummons(params.cid)[1], cdire, 1, 0)
       doChangeSpeed(getCreatureSummons(params.cid)[1], -getCreatureSpeed(getCreatureSummons(params.cid)[1]))
       else
       doPushCreature(getCreatureSummons(params.cid)[1], cdire, 1, 0)
       doChangeSpeed(getCreatureSummons(params.cid)[1], -getCreatureSpeed(getCreatureSummons(params.cid)[1]))
       end
       end
       end
       end
       end

doPlayerSay(cid, ""..getCreatureName(getCreatureSummons(cid)[1])..", open this hole!", 1)[/color] [color=royalblue]
local speed = getCreatureBaseSpeed(getCreatureSummons(cid)[1])
temk = 1000 -(2.3 * speed)
addEvent(tocut, 0, {cid = cid, ccid = getCreatureSummons(cid)[1], topos = topos})
for i = 1, getDistanceBetween(getThingPos(getCreatureSummons(cid)[1]), topos) * 2 do
addEvent(tocut, temk*i, {cid = cid, ccid = getCreatureSummons(cid)[1], topos = topos})
end
return true
end
end
-- DIG END

-- BLINK[/color] [color=royalblue]
if #getCreatureSummons(cid) == 0 and getPlayerStorageValue(cid, 63215) <= 0 and getPlayerStorageValue(cid, 17000) <= 0 then
doPlayerSendCancel(cid, "You need a pokemon to use order.")
return true
end
if not isMonster(item2.uid) and getPlayerStorageValue(cid, 63215) <= 0 and getPlayerStorageValue(cid, 17000) <= 0 then
if isInArray(blink, getCreatureName(getCreatureSummons(cid)[1])) then
if exhaustion.get(cid, exhaustblink) then
doPlayerSay(cid, ""..getCreatureName(getCreatureSummons(cid)[1])..", move!", 1)
doChangeSpeed(getCreatureSummons(cid)[1], -getCreatureSpeed(getCreatureSummons(cid)[1]))
markPos(getCreatureSummons(cid)[1], topos)
markOwnerPos(getCreatureSummons(cid)[1], getThingPos(cid))
addEvent(goThere, 500, getCreatureSummons(cid)[1], topos)
else
if not isWalkable(topos, cid, 0, 0) then
doPlayerSendCancel(cid, "Your pokemon cannot teleport there.")
return true
end
if getItemName(item2.uid) == "shallow water" then
doPlayerSendCancel(cid, "Your pokemon cannot teleport there.")
return true
end
doSendDistanceShoot(getThingPos(getCreatureSummons(cid)[1]), topos, 39)
doSendMagicEffect(getThingPos(getCreatureSummons(cid)[1]), 211)
doTeleportThing(getCreatureSummons(cid)[1], topos, false)
doSendMagicEffect(topos, 134)
doPlayerSay(cid, ""..getCreatureName(getCreatureSummons(cid)[1])..", teleport there!", 1)
doCreatureSay(getCreatureSummons(cid)[1], "BLINK!", TALKTYPE_MONSTER)
exhaustion.set(cid, exhaustblink, cdblink)
return true
end
return true
end
end
--- BLINK END

-- LIGHT --[/color] [color=royalblue]
if isCreature(item2.uid) and getCreatureMaster(item2.uid) == cid and getPlayerStorageValue(cid, 63215) <= 0 and getPlayerStorageValue(cid, 17000) <= 0 and item2.uid ~= cid then
if not isInArray(light, getCreatureName(getCreatureSummons(cid)[1])) then
doPlayerSendCancel(cid, "This pokemon can't use flash.")
return true
end
if isInArray(light, getCreatureName(getCreatureSummons(cid)[1])) then
       if not isMonster(item2.uid) and getCreatureMaster(item2.uid) ~= cid then
       return doPlayerSendCancel(cid,"Please use flash on your pokemon.")
       end
       if exhaustion.get(cid, exhautStorage) then
       doPlayerSendCancel(cid,"Please wait a few seconds before using flash again!")
       return true
       end
exhaustion.set(cid, exhautStorage, cd)
doPlayerSay(cid, ""..getCreatureName(getCreatureSummons(cid)[1])..", use flash!", 1)
doCreatureSay(getCreatureSummons(cid)[1], "FLASH!", TALKTYPE_MONSTER)
doSendMagicEffect(getThingPos(getCreatureSummons(cid)[1]), 28)
doSetCreatureLight(getCreatureSummons(cid)[1], 8, 215, time*1000)
return true
end
end
-- LIGHT END --
if #getCreatureSummons(cid) == 0 then
return true
end
if getPlayerStorageValue(getCreatureSummons(cid)[1], 12) == 1 then
doPlayerSendCancel(cid, "You can\'t order your pokemon to move now.")
return true
end
       doPlayerSay(cid, ""..getCreatureName(getCreatureSummons(cid)[1])..", move!", 1)
doChangeSpeed(getCreatureSummons(cid)[1], -getCreatureSpeed(getCreatureSummons(cid)[1]))
markPos(getCreatureSummons(cid)[1], topos)
markOwnerPos(getCreatureSummons(cid)[1], getThingPos(cid))
addEvent(goThere, 500, getCreatureSummons(cid)[1], topos)
return true
end[/color]

 

Características do novo move:

 

• neste não há cooldown como o antigo, o jogador pode usar livremente sem dar nenhum erro no pokemon.

• neste, ao usar o order e o pokemon chegar ao destino, ele permanece ali até o jogador mover-se.

• neste o pokemon anda apenas em linha reta.

• agora, ao selecionar um novo alvo, o pokemon volta a andar sozinho.

 

enfim, há outros detalhes também que tratam apenas a correção de bugs, qualquer erro, avisem-me.

 

Qualquer um tem permissão para postar em outro fórum, só peço que coloquem os créditos.

A função doPushCreature não é minha. Foi feita pelo Dokmos.

Editado por LsM

Compartilhar este post


Link para o post
Dollar    0
Dollar

Peço desculpas pela demora na avaliação do seu script.

Aprovado! Obrigado pela contribuição.

Tópico remunerado em 30 V$ - Sistema Intermediário.

Editado por Garou

Compartilhar este post


Link para o post
Gustavo665    0
Gustavo665

Obrigado pela contribuição.²

Pod crer.

Compartilhar este post


Link para o post
gniu123    0
gniu123

Obrigado por disponibilizar,

mas creio que falta arrumar 2 coisas, só pra fica 100% =D

pra info eu uso o distro do dash

 

1º qndo vc usa ação de cortar por exemplo, ele vai tudo certo, mais se você for fazer 2 sem esperar o tempo do cooldown, ele n faiz nada.. n ataca, n move, n corta...

e o 2º é que quando da BLINK ele volta para perto do character..

 

mais ta de parabéns pelo script..

Compartilhar este post


Link para o post
otswe    0
otswe

[01/05/2011 16:55:20] [Error - LuaScriptInterface::loadFile] data/lib/move.lua:75: ')' expected near 'e'

[01/05/2011 16:55:20] [Warning - LuaScriptInterface::initState] Cannot load data/lib/

[01/05/2011 16:55:20] [Error - LuaScriptInterface::loadFile] data/lib/move.lua:75: ')' expected near 'e'

[01/05/2011 16:55:20] [Warning - LuaScriptInterface::initState] Cannot load data/lib/

[01/05/2011 16:55:20] [Error - LuaScriptInterface::loadFile] data/lib/move.lua:75: ')' expected near 'e'

[01/05/2011 16:55:20] [Warning - LuaScriptInterface::initState] Cannot load data/lib/

[01/05/2011 16:55:20] [Error - LuaScriptInterface::loadFile] data/actions/scripts/order.lua:3: unexpected symbol near '['

[01/05/2011 16:55:20] [Warning - Event::loadScript] Cannot load script (data/actions/scripts/order.lua)

[01/05/2011 16:55:20] data/actions/scripts/order.lua:3: unexpected symbol near '['

[01/05/2011 16:55:21] [Error - LuaScriptInterface::loadFile] data/lib/move.lua:75: ')' expected near 'e'

[01/05/2011 16:55:21] [Warning - LuaScriptInterface::initState] Cannot load data/lib/

[01/05/2011 16:55:21] [Error - LuaScriptInterface::loadFile] data/lib/move.lua:75: ')' expected near 'e'

[01/05/2011 16:55:21] [Warning - LuaScriptInterface::initState] Cannot load data/lib/

[01/05/2011 16:55:21] [Error - LuaScriptInterface::loadFile] data/lib/move.lua:75: ')' expected near 'e'

[01/05/2011 16:55:21] [Warning - LuaScriptInterface::initState] Cannot load data/lib/

[01/05/2011 16:55:21] [Error - LuaScriptInterface::loadFile] data/lib/move.lua:75: ')' expected near 'e'

[01/05/2011 16:55:21] [Warning - LuaScriptInterface::initState] Cannot load data/lib/

Compartilhar este post


Link para o post
cleytoncosta    0
cleytoncosta

vlw cara agora esta pegando 100% (Y)

Editado por cleytoncosta

Compartilhar este post


Link para o post
LsM    2
LsM

Olá, para quem está tendo erros nesse sistema, apenas mude o que está em lib/move.lua para :

 

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 queryTileAddThing(uid,newpos) == 1 or nvar == (nsig/2)



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 walkTo(cid, direction, finalpos)
if not isCreature(cid) then return false end
if isWalkable(getPosByDir(getThingPos(cid), direction), cid, 0, 0) and direction <= 3 then
doPushCreature(cid, direction, 1, 0)
return true
end

if direction >= 4 then
if direction == 4 then
if math.random(1,2) == 1 then
if isWalkable(getPosByDir(getThingPos(cid), 3), cid, 0, 0) then
newdir = 3
else
newdir = 2
end
else
if isWalkable(getPosByDir(getThingPos(cid), 2), cid, 0, 0) then
newdir = 2
else
newdir = 3
end
end
elseif direction == 5 then
if math.random(1,2) == 1 then
if isWalkable(getPosByDir(getThingPos(cid), 2), cid, 0, 0) then
newdir = 2
else
newdir = 1
end
else
if isWalkable(getPosByDir(getThingPos(cid), 1), cid, 0, 0) then
newdir = 1
else
newdir = 2
end
end
elseif direction == 6 then
if math.random(1,2) == 1 then
if isWalkable(getPosByDir(getThingPos(cid), 0), cid, 0, 0) then
newdir = 0
else
newdir = 3
end
else
if isWalkable(getPosByDir(getThingPos(cid), 3), cid, 0, 0) then
newdir = 3
else
newdir = 0
end
end
elseif direction == 7 then
if math.random(1,2) == 1 then
if isWalkable(getPosByDir(getThingPos(cid), 1), cid, 0, 0) then
newdir = 1
else
newdir = 0
end
else
if isWalkable(getPosByDir(getThingPos(cid), 0), cid, 0, 0) then
newdir = 0
else
newdir = 1
end
end
end
doPushCreature(cid, newdir, 1, 0)
return true
end

if direction <= 3 and not isWalkable(getPosByDir(getThingPos(cid), direction), cid, 0, 0) then
if direction == 0 then
if getDirectionTo(getThingPos(cid), finalpos) == 6 then
if isWalkable(getPosByDir(getThingPos(cid), 3), cid, 0, 0) then
newdir = 3
else
newdir = 6
end
elseif getDirectionTo(getThingPos(cid), finalpos) == 7 then
if isWalkable(getPosByDir(getThingPos(cid), 1), cid, 0, 0) then
newdir = 1
else
newdir = 7
end
end
elseif direction == 1 then
if getDirectionTo(getThingPos(cid), finalpos) == 7 then
if isWalkable(getPosByDir(getThingPos(cid), 0), cid, 0, 0) then
newdir = 0
else
newdir = 7
end
elseif getDirectionTo(getThingPos(cid), finalpos) == 5 then
if isWalkable(getPosByDir(getThingPos(cid), 2), cid, 0, 0) then
newdir = 2
else
newdir = 5
end
end
elseif direction == 2 then
if getDirectionTo(getThingPos(cid), finalpos) == 4 then
if isWalkable(getPosByDir(getThingPos(cid), 3), cid, 0, 0) then
newdir = 3
else
newdir = 4
end
elseif getDirectionTo(getThingPos(cid), finalpos) == 5 then
if isWalkable(getPosByDir(getThingPos(cid), 1), cid, 0, 0) then
newdir = 1
else
newdir = 5
end
end
elseif direction == 3 then
if getDirectionTo(getThingPos(cid), finalpos) == 4 then
if isWalkable(getPosByDir(getThingPos(cid), 2), cid, 0, 0) then
newdir = 2
else
newdir = 4
end
elseif getDirectionTo(getThingPos(cid), finalpos) == 6 then
if isWalkable(getPosByDir(getThingPos(cid), 0), cid, 0, 0) then
newdir = 0
else
newdir = 6
end
end
end
doPushCreature(cid, newdir, 1, 0)
return true
end
doPushCreature(cid, direction, 1, 0)
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 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)
if not isCreature(sid) then return end
if getOwnerPos(sid).x ~= getThingPos(getCreatureMaster(sid)).x or getOwnerPos(sid).y ~= getThingPos(getCreatureMaster(sid)).y then
doChangeSpeed(sid, -getCreatureSpeed(sid))
doChangeSpeed(sid, getCreatureBaseSpeed(sid))
return true
end
addEvent(recheck, 120, sid)
end

function goThere(sid, thepos)
if not isCreature(sid) then return true end
if thepos.x ~= getMarkedPos(sid).x or thepos.y ~= getMarkedPos(sid).y then return true end
if isCreature(getCreatureTarget(getCreatureMaster(sid ))) then
doChangeSpeed(sid, -getCreatureSpeed(sid))
doChangeSpeed(sid, getCreatureBaseSpeed(sid))
return true
end
if getThingPos(sid).x == getMarkedPos(sid).x and getThingPos(sid).y == getMarkedPos(sid).y then
addEvent(recheck, 350, sid)
return true
end
if getOwnerPos(sid).x ~= getThingPos(getCreatureMaster(sid)).x or getOwnerPos(sid).y ~= getThingPos(getCreatureMaster(sid)).y then
doChangeSpeed(sid, -getCreatureSpeed(sid))
doChangeSpeed(sid, getCreatureBaseSpeed(sid))
return true
end
doChangeSpeed(sid, - getCreatureSpeed(sid))
doChangeSpeed(sid, getCreatureBaseSpeed(sid))
walkTo(sid, getDirectionTo(getThingPos(sid), getMarkedPos(sid)), getMarkedPos(sid))
doChangeSpeed(sid, - getCreatureSpeed(sid))
addEvent(goThere, 1000 - (2.2 * (getCreatureBaseSpeed(sid))), sid, getMarkedPos(sid))
end

Compartilhar este post


Link para o post
secondlife    0
secondlife

@mastercraft

primeiramente, perfeito script. Em questão de contribuição em scripts avançados tu está em 1º lugar na minha opinião, pois é o unico que desenvolve e contribui com os mesmos scripts.

por mim, está perfeito, exceto o fly. irei citar o exemplo e o que acontece :

quando por exemplo tu clica no fly e clica no seu personagem. ele monta no fly perfeitamente, até ai tudo ok. sendo assim tu fala h1 2x e sobe 2 andares e se aproxima por cima de uma void de uma escada (sem descê-la) e logo em seguida tu fala h2 e desce na void da escada.

conclusão : o Void do piso inferior (logo debaixo de quando você desce a escada) Some,sendo assim o piso "buga" e qdo tu pisa tu cai 1 sqm como se fosse um hole (buraco).

façam os testes e me avisem se ocorre o mesmo.

abraços.

Compartilhar este post


Link para o post
warzin    0
warzin

@secondlife

sim, realmente comigo tambem ocorre o mesmo problema.

e lembrando que esse errinho vem desde o pokemon dash v1.0 (não sei exatamente se é esse, so sei que é apartir daquele postado com o fly pelo order).

abraços!

Compartilhar este post


Link para o post
Saikim    0
Saikim

Muito bom o sistema

vlw pela colaboração :D

Compartilhar este post


Link para o post
notle.com    2
notle.com

muito bom só que eu to com problemas com ROCK SMASH e cut quando ele corta ou quebra a pedra demora pra corta ou compra pedra tempo de ate eles voltar então só da pra corta ou quebra uma pedra se tiver duas pedra no caminho não da pra ir :(

Compartilhar este post


Link para o post
dalvorsn    46
dalvorsn
muito bom só que eu to com problemas com ROCK SMASH e cut quando ele corta ou quebra a pedra demora pra corta ou compra pedra tempo de ate eles voltar então só da pra corta ou quebra uma pedra se tiver duas pedra no caminho não da pra ir :(

 

É só apagar a storage e/ou aumentar o tempo ...

local function tocut(params)
if isCreature(params.cid) then
if isCreature(getCreatureSummons(params.cid)[1]) then
if getCreatureSpeed(getCreatureSummons(params.cid)[1]) >= 1 then
return true
end
if getPlayerStorageValue(getCreatureSummons(params.cid)[1], 100) >= 1 then
return true
end
if getDistanceBetween(getThingPos(getCreatureSummons(params.cid)[1]), topos) == 1 then
doSendMagicEffect(topos, 118)
doTransformItem(getTileItemById(topos, 1285).uid, 2257)
exhaustion.set(cid, erocksmash, cdrocksmash)
--setPlayerStorageValue(getCreatureSummons(params.cid)[1], 100, 1)
	local function detrans(params)
	doTransformItem(getTileItemById(topos, 2257).uid, 1285)
		if isCreature(getCreatureSummons(params.ciddd)[1]) then
		--setPlayerStorageValue(getCreatureSummons(params.ciddd)[1], 100, 0)
		end
	end
addEvent(detrans, 15*1000, {ciddd = cid})
doCreatureSay(getCreatureSummons(cid)[1], "ROCK SMASH!", TALKTYPE_MONSTER)

Compartilhar este post


Link para o post
warzin    0
warzin

@dalvorsn

excelente resposta,me ajudou muito.

abraços

Compartilhar este post


Link para o post
Bruna1307    0
Bruna1307

Aqui só não da fly,surf nem ride é assim mesmo? Eu peguei não o do dash o outro. Quando poe pra dar fly ou ride o pokémon começa a andar pra todo lado sem parar :S

Editado por Bruna1307

Compartilhar este post


Link para o post
warzin    0
warzin

axo que isso é quando tu possui acess 6+

@topic

outro bug que encontrei é o order em protect zone, não funciona o move.

ele fica andando perdido pra tudo quanto é lado.

Compartilhar este post


Link para o post
otswe    0
otswe

When you attack with your pokemon and use move the pokemon dont move!

Editado por otswe

Compartilhar este post


Link para o post
secondlife    0
secondlife

galera, vim perguntar se está acontecendo o mesmo erro com voces.

aqui qdo eu uso o move em protect zone, o pokemon move se pra todo lado e não para no lugar que mandei.

abraçs

Compartilhar este post


Link para o post
mastercraft    1
mastercraft

Eu vou desenvolver um novo order com todos os sistemas incluídos.

Quando fiz o order, não tinha tanta experiência e acabou ficando uma bagunça, e pra modificar o mesmo é muito difícil, então decidi fazer um novo logo, mas acredito que demore já que estou com muito pouco tempo livre.

Compartilhar este post


Link para o post
dalvorsn    46
dalvorsn

#up

Ainda que bagunçado é o melhor que ja liberaram ;]

Compartilhar este post


Link para o post
notle.com    2
notle.com
É só apagar a storage e/ou aumentar o tempo ...

local function tocut(params)
if isCreature(params.cid) then
if isCreature(getCreatureSummons(params.cid)[1]) then
if getCreatureSpeed(getCreatureSummons(params.cid)[1]) >= 1 then
return true
end
if getPlayerStorageValue(getCreatureSummons(params.cid)[1], 100) >= 1 then
return true
end
if getDistanceBetween(getThingPos(getCreatureSummons(params.cid)[1]), topos) == 1 then
doSendMagicEffect(topos, 118)
doTransformItem(getTileItemById(topos, 1285).uid, 2257)
exhaustion.set(cid, erocksmash, cdrocksmash)
--setPlayerStorageValue(getCreatureSummons(params.cid)[1], 100, 1)
	local function detrans(params)
	doTransformItem(getTileItemById(topos, 2257).uid, 1285)
		if isCreature(getCreatureSummons(params.ciddd)[1]) then
		--setPlayerStorageValue(getCreatureSummons(params.ciddd)[1], 100, 0)
		end
	end
addEvent(detrans, 15*1000, {ciddd = cid})
doCreatureSay(getCreatureSummons(cid)[1], "ROCK SMASH!", TALKTYPE_MONSTER)

vlw pego mesmo :D

Editado por notle.com

Compartilhar este post


Link para o post
Visitante
Este tópico está impedido de receber novos posts.
Entre para seguir isso  
  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×