Ir para conteúdo

Addon System [PDE]


Refe

Posts Recomendados

ceetros, está acontecendo isso quando eu entro no surf e depois saio, n está dando erro na distro.

Troca em movement/surf.lua:

  
                local balla = getPlayerSlotItem(cid, 8).uid
                local balladdon = getItemAttribute(balla,"addon")
                if not balladdon then
                                doSetItemAttribute(balla,"addon",0) 

                end
                if balladdon > 0 then
                                doSetCreatureOutfit(cid, {lookType = balladdon}, -1)

                end

Por:

		local pk = getCreatureSummons(cid)[1]        
                local balla = getPlayerSlotItem(cid, 8).uid
                local balladdon = getItemAttribute(balla,"addon")
                if not balladdon then
                                doSetItemAttribute(balla,"addon",0) 

                end
                if balladdon > 0 then
                                doSetCreatureOutfit(pk, {lookType = balladdon}, -1)

                end
Link para o comentário
Compartilhar em outros sites

 

Troca em movement/surf.lua:

  
                local balla = getPlayerSlotItem(cid, 8).uid
                local balladdon = getItemAttribute(balla,"addon")
                if not balladdon then
                                doSetItemAttribute(balla,"addon",0) 

                end
                if balladdon > 0 then
                                doSetCreatureOutfit(cid, {lookType = balladdon}, -1)

                end

Por:

		local pk = getCreatureSummons(cid)[1]        
                local balla = getPlayerSlotItem(cid, 8).uid
                local balladdon = getItemAttribute(balla,"addon")
                if not balladdon then
                                doSetItemAttribute(balla,"addon",0) 

                end
                if balladdon > 0 then
                                doSetCreatureOutfit(pk, {lookType = balladdon}, -1)

                end

ceetros, funcionou, mas to com um problema, tipo, se eu tiver 100 addons iguais do " Gyarados " e eu usar 1 dessas 100, certo ele ganhou a addon, mas eu posso usar denovo essa mesma addon nele, ficando com 98 addons, sendo que ele já tinha essa addon, ai só fiz gastar o item, tem como bloquear para usar somente 1 addon de cada ? mas eu poderia também adicionar outros tipos de addon no mesmo poke ? e outra coisa, poderia criar uma talkaction para remover a addon dele, e para repor a addon dele, e se ele possuir + que 1 addon, um comando também para trocar a addon ? tipo !addon 0 para remover a addon dele, !addon 1 para usar a primeira addon, e !addon 2 para ele usar a segunda addon que ele possui, e assim vai.

Link para o comentário
Compartilhar em outros sites

Depois eu vou fazer uma modificaçao, e quando poe outro addon o primeiro some.

ss ok.

ceetros, deu 2 erros aqui, um na goback quando bota o poke pra fora, e outra no order.lua, quando usa o fly com o poke com a addon, a addon some, e quando sai do fly a addon some também e n da mais pra voltar o poke pra ball.

 

 

 

local EFFECTS = {
	--[OutfitID] = {Effect}
	["Magmar"] = 35,   
	["Magmortar"] = 35,   
	["Shiny Magmar"] = 35,
	["Jynx"] = 17,          --alterado v2.5
	["Shiny Jynx"] = 17,  
   ["Mamoswine"] = 205,  
   ["Piloswine"] = 205,  --alterado v2.8
   ["Swinub"] = 205,  
}

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


if getPlayerStorageValue(cid,130130) >= 1 then 
doPlayerSendTextMessage(cid, 19, "Nao Pode Dar Goback Nessa Area.")
return true
end

if exhaustion.get(cid, 6666) and exhaustion.get(cid, 6666) > 0 then return true end

if getPlayerStorageValue(cid, 17000) >= 1 or getPlayerStorageValue(cid, 17001) >= 1 or getPlayerStorageValue(cid, 63215) >= 1 
or getPlayerStorageValue(cid, 75846) >= 1 or getPlayerStorageValue(cid, 5700) >= 1  then    --alterado v2.9 <<
   return true                                                                                                                        
end

local ballName = getItemAttribute(item.uid, "poke")
local btype = getPokeballType(item.itemid)
local usando = pokeballs[btype].use

local effect = pokeballs[btype].effect
	if not effect then
		effect = 21
	end
	
unLock(item.uid) --alterado v2.8
if item.itemid == usando then
--if getPlayerGroupId == 8 then
--doPlayerSendTextMessage(cid, 19, "TESTS 1!")
--setPlayerGroupId(cid,1) 
--return true
--end  


                          
   if getPlayerStorageValue(cid, 990) == 1 then -- GYM
		doPlayerSendCancel(cid, "You can't return your pokemon during gym battles.")
	   return true
	end
	
	if #getCreatureSummons(cid) > 1 and getPlayerStorageValue(cid, 212124) <= 0 then     --alterado v2.6
       if getPlayerStorageValue(cid, 637501) == -2 or getPlayerStorageValue(cid, 637501) >= 1 then  
          BackTeam(cid)       
       end
    end 
    
    if #getCreatureSummons(cid) == 2 and getPlayerStorageValue(cid, 212124) >= 1 then
       doPlayerSendCancel(cid, "You can't do that while is controling a mind")
       return true     --alterado v2.5
    end
    
	 if #getCreatureSummons(cid) <= 0 then
	    if isInArray(pokeballs[btype].all, item.itemid) then
		    doTransformItem(item.uid, pokeballs[btype].on)
			 doItemSetAttribute(item.uid, "hp", 1)
			 --setPlayerGroupId(cid,1)
			 doPlayerSendCancel(cid, "[Ball-Desbloqueado] Balls Desbloqueado com Sucesso!")
			 doPlayerSendTextMessage(cid, 21, "[Ball-Desbloqueado] Balls Desbloqueado com Sucesso!")
			            doSendMagicEffect(getThingPos(cid), 29)
           doSendAnimatedText(getCreaturePosition(cid),"Unlock",math.random(1,255)) 
		    return true
		 end
    end

    local cd = getCD(item.uid, "blink", 30)
    if cd > 0 then
       setCD(item.uid, "blink", 0)
    end
    
	 local z = getCreatureSummons(cid)[1]

	 if getCreatureCondition(z, CONDITION_INVISIBLE) and not isGhostPokemon(z) then
	    return true
	 end
    doReturnPokemon(cid, z, item, effect)
elseif item.itemid == pokeballs[btype].on then
--doPlayerSendTextMessage(cid, 19, "TESTS 3!")
--setPlayerGroupId(cid,8) 

	if item.uid ~= getPlayerSlotItem(cid, CONST_SLOT_FEET).uid then
		doPlayerSendCancel(cid, "You must put your pokeball in the correct place!")
	return TRUE
	end

	local thishp = getItemAttribute(item.uid, "hp")

	if thishp <= 0 then
		if isInArray(pokeballs[btype].all, item.itemid) then
			doTransformItem(item.uid, pokeballs[btype].off)
			doItemSetAttribute(item.uid, "hp", 0)
			doPlayerSendCancel(cid, "This pokemon is fainted.")
         return true
		end
	end

	local pokemon = getItemAttribute(item.uid, "poke")

	if not pokes[pokemon] then
	   return true
	end
	
----------------------- Sistema de nao poder carregar mais que 3 pokes lvl baixo e + q 1 poke de lvl medio/alto ---------------------------------
if not isInArray({5, 6}, getPlayerGroupId(cid)) then                          --alterado v2.9 \/
   local balls = getPokeballsInContainer(getPlayerSlotItem(cid, 3).uid)
   local low = {}
   local lowPokes = {"Rattata", "Caterpie", "Weedle", "Oddish", "Pidgey", "Paras", "Poliwag", "Bellsprout", "Magikarp", "Hoppip", "Sunkern"}
   if #balls >= 1 then
      for _, uid in ipairs(balls) do
          local nome = getItemAttribute(uid, "poke")
          if not isInArray(lowPokes, pokemon) and nome == pokemon then
             return doPlayerSendTextMessage(cid, 27, "Sorry, but you can't carry two pokemons equals!")
          else
             if nome == pokemon then
                table.insert(low, nome)
             end
          end
      end
   end
if #low >= 3 then
   return doPlayerSendTextMessage(cid, 27, "Sorry, but you can't carry more than three pokemons equals of low level!")
end   
end
---------------------------------------------------------------------------------------------------------------------------------------------------

	local x = pokes[pokemon]
	local boosts = getItemAttribute(item.uid, "boost") or 0

	if getPlayerLevel(cid) + pokemonMaxLevelAbovePlayer < getItemAttribute(item.uid, "level") + boosts then
	   doPlayerSendCancel(cid, "Your pokemon's level is much higher than yours, you can't use him.")
	   return true
    end
    doSummonMonster(cid, pokemon)

	 local pk = getCreatureSummons(cid)[1]
	 if not isCreature(pk) then return true end
	 ------------------------passiva hitmonchan------------------------------
	 if isSummon(pk) then                                                  --alterado v2.8 \/
       if pokemon == "Shiny Hitmonchan" or pokemon == "Hitmonchan" then
          if not getItemAttribute(item.uid, "hands") then
             doSetItemAttribute(item.uid, "hands", 0)
          end
          local hands = getItemAttribute(item.uid, "hands")
          doSetCreatureOutfit(pk, {lookType = hitmonchans[pokemon][hands].out}, -1)
       end
    end
	-------------------------------------------------------------------------
    ---------movement magmar, jynx-------------
    if EFFECTS[getCreatureName(pk)] then             
       markPosEff(pk, getThingPos(pk))
       sendMovementEffect(pk, EFFECTS[getCreatureName(pk)], getThingPos(pk)) --alterado v2.5
    end
    --------------------------------------------------------------------------      

	 if getCreatureName(pk) == "Ditto" then

		local left = getItemAttribute(item.uid, "transLeft")
		local name = getItemAttribute(item.uid, "transName")

		if left and left > 0 then
			setPlayerStorageValue(pk, 1010, name)
			doSetCreatureOutfit(pk, {lookType = getItemAttribute(item.uid, "transOutfit")}, -1)
			addEvent(deTransform, left * 1000, pk, getItemAttribute(item.uid, "transTurn"))
			doItemSetAttribute(item.uid, "transBegin", os.clock())
		else
			setPlayerStorageValue(pk, 1010, "Ditto")
		end
	end

	if isGhostPokemon(pk) then doTeleportThing(pk, getPosByDir(getThingPos(cid), math.random(0, 7)), false) end

	doCreatureSetLookDir(pk, 2)

	adjustStatus(pk, item.uid, true, false, true)
	doAddPokemonInOwnList(cid, pokemon)

	doTransformItem(item.uid, item.itemid+1)

	local pokename = getPokeName(pk) --alterado v2.7 

	local mgo = gobackmsgs[math.random(1, #gobackmsgs)].go:gsub("doka", pokename)
	doCreatureSay(cid, mgo, TALKTYPE_SAY)
	doSendMagicEffect(getCreaturePosition(pk), effect)
	
	local nick = getItemAttribute(item.uid, "nick")
	if not nick then
		local name = getItemAttribute(item.uid, "poke")
		doCreatureSetNick(getCreatureSummons(cid)[1], name)
		else
	local level = getItemAttribute(item.uid, "level")
	doCreatureSetNick(getCreatureSummons(cid)[1], nick)
	end
	
	local pk = getCreatureSummons(cid)[1]
                local pb = getPlayerSlotItem(cid, 8).uid
                local look = getItemAttribute(pb,"addon")
                if not look then
                                doSetItemAttribute(pb,"addon",0) 

                end
                if look > 0 then
                                doSetCreatureOutfit(pk, {lookType = look}, -1)

                end
	
	if useOTClient then
	   doPlayerSendCancel(cid, '12//,show') --alterado v2.7
    end

else
    doPlayerSendCancel(cid, "This pokemon is fainted.")
end

	if useKpdoDlls then
		doUpdateMoves(cid)
	end
return true
end

 

 

 

 

order.lua

 

 

 

local dirpref = {
[1] =  {[NORTH] = {[1] = {NORTH}, [2] = {EAST, WEST}, [3] = {NORTHEAST, NORTHWEST}},
	[EAST] = {[1] = {EAST}, [2] = {NORTH, SOUTH}, [3] = {NORTHEAST, SOUTHEAST}},
	[SOUTH] = {[1] = {SOUTH}, [2] = {EAST, WEST}, [3] = {SOUTHEAST, SOUTHWEST}},
	[WEST] = {[1] = {WEST}, [2] = {SOUTH, NORTH}, [3] = {NORTHWEST, SOUTHWEST}},
	[NORTHEAST] = {[1] = {NORTH, EAST}, [2] = {NORTHEAST}, [3] = {SOUTH, WEST}},
	[SOUTHEAST] = {[1] = {SOUTH, EAST}, [2] = {SOUTHEAST}, [3] = {NORTH, WEST}},
	[SOUTHWEST] = {[1] = {SOUTH, WEST}, [2] = {SOUTHWEST}, [3] = {NORTH, EAST}},
	[NORTHWEST] = {[1] = {NORTH, WEST}, [2] = {NORTHWEST}, [3] = {EAST, SOUTH}}},
[2] =  {[NORTH] = {[1] = {NORTH}, [2] = {WEST, EAST}, [3] = {NORTHWEST, NORTHEAST}},
	[EAST] = {[1] = {EAST}, [2] = {SOUTH, NORTH}, [3] = {SOUTHEAST, NORTHEAST}},
	[SOUTH] = {[1] = {SOUTH}, [2] = {WEST, EAST}, [3] = {SOUTHWEST, SOUTHEAST}},
	[WEST] = {[1] = {WEST}, [2] = {NORTH, SOUTH}, [3] = {SOUTHWEST, NORTHWEST}},
	[NORTHEAST] = {[1] = {EAST, NORTH}, [2] = {NORTHEAST}, [3] = {WEST, SOUTH}},
	[SOUTHEAST] = {[1] = {EAST, SOUTH}, [2] = {SOUTHEAST}, [3] = {WEST, NORTH}},
	[SOUTHWEST] = {[1] = {WEST, SOUTH}, [2] = {SOUTHWEST}, [3] = {EAST, NORTH}},
	[NORTHWEST] = {[1] = {WEST, NORTH}, [2] = {NORTHWEST}, [3] = {SOUTH, EAST}}},
}

function doPushCreature(uid,direction,distance,time)
   if isCreature(uid) == TRUE then
   local rand = (2*math.random(0,1))-1
   local rand2 = math.random(-1,0)
	  if direction == 0 then
	  signal = {0,rand,-rand,rand,-rand,0,-1,-1,-1,0,0,0}
	  elseif direction == 1 then
	  signal = {1,1,1,0,0,0,0,rand,-rand,rand,-rand,0}
	  elseif direction == 2 then
	  signal = {0,rand,-rand,rand,-rand,0,1,1,1,0,0,0}

	  elseif direction == 3 then

	  signal = {-1,-1,-1,0,0,0,0,rand,-rand,rand,-rand,0}

	  elseif direction == 4 then

	  signal = {-1,rand2,(-rand2)-1,0,1,rand2+1,rand2,0}

	  elseif direction == 5 then

	  signal = {1,-rand2,-((-rand2)-1),0,1,rand2+1,rand2,0}

	  elseif direction == 6 then

	  signal = {-1,rand2,(-rand2)-1,0,-1,(-rand2)-1,rand2,0}

	  else

	  signal = {1,-rand2,-((-rand2)-1),0,-1,(-rand2)-1,rand2,0}

	  end

   local pos = getThingPos(uid)

   nsig = #signal

   nvar = 0

   

   repeat

   nvar = nvar+1

   newpos = {x=pos.x+(signal[nvar]),y=pos.y+(signal[(nsig/2)+nvar]),z=pos.z}

   newtile = {x=newpos.x,y=newpos.y,z=newpos.z,stackpos=0}

   until getTileThingByPos(newtile).uid ~= 0 and hasProperty(getTileThingByPos(newtile).uid,3) == FALSE and canWalkOnPos(newtile, true, false, true, true, false) and queryTileAddThing(uid,newpos) == 1 or nvar == (nsig/2)
                                                                                                                        --alterado v2.5
   

	  if distance == nil or distance == 1 then

	  doTeleportThing(uid,newpos,TRUE)   

	  else

	  distance = distance-1

	  doTeleportThing(uid,newpos,TRUE)

		 if time ~= nil then

		 addEvent(doPushCreature,time,uid,direction,distance,time)

		 else

		 addEvent(doPushCreature,500,uid,direction,distance,500)

		 end	   

	  end

   end  

end

function doComparePosition(pos1, pos2)
	if pos1.x == pos2.x and pos1.y == pos2.y and pos1.z == pos2.z then
	return true
	end
return false
end

function getNextStepDelay(cid, dir)
	return 868
end

function walkTo(cid, direction, finalp, useExtraMoveOrder)
	if not isCreature(cid) then return true end

	doChangeSpeed(cid, 5)
	local x = getThingPos(cid)
	local ratedelaywalk = 1
	local finalpos = {x = finalp.x, y = finalp.y, z = finalp.z}

		if not canWalkOnPos(finalpos, false, false, true, true, true) then
			finalpos = getClosestFreeTile(cid, finalpos)
		end

		if not finalpos then
		return false
		end

	local dir = getDirectionTo(getThingPos(cid), finalpos)
	if dir and tonumber(dir) ~= nil and tonumber(dir) >= 0 and tonumber(dir) <= 7 then
		if dir >= 4 then
			ratedelaywalk = 0.4
		end
		doPushCreature(cid, dir, 1, getNextStepDelay(cid, dir) * ratedelaywalk)
		return getNextStepDelay(cid, dir) * ratedelaywalk
	elseif useExtraMoveOrder then

local random = math.random(1, 2)

	for ta = 1, 3 do
		for tb = 1, #dirpref[random][direction][ta] do
			local y = getPosByDir(getThingPos(cid), dirpref[random][direction][ta][tb])
			local w = getCreatureLP(cid)
			local z = getDirectionTo(y, getThingPos(cid)) -- direção q vai marcar
			local j = getDirectionTo(getThingPos(cid), y) -- direção q ele vai
			if canWalkOnPos(y, true, false, true, true, true) and w ~= j then
				if dirpref[random][direction][ta][tb] >= 4 then
					ratedelaywalk = 0.5
				end
				doPushCreature(cid, dirpref[random][direction][ta][tb], 1, getNextStepDelay(cid, dirpref[random][direction][ta][tb]) * ratedelaywalk)
				markLP(cid, z)
			return getNextStepDelay(cid, dirpref[random][direction][ta][tb]) * ratedelaywalk
			end
		end
	end
	end
return false
end

function getCreatureLP(cid)
return getPlayerStorageValue(cid, 197)
end

function markLP(cid, dir)
setPlayerStorageValue(cid, 197, dir)
end

function markPos(sid, pos)
if not isCreature(sid) then return end
setPlayerStorageValue(sid, 145, pos.x)
setPlayerStorageValue(sid, 146, pos.y)
setPlayerStorageValue(sid, 147, pos.z)
end

function markFlyingPos(sid, pos)
if not isCreature(sid) then return end
setPlayerStorageValue(sid, 33145, pos.x)
setPlayerStorageValue(sid, 33146, pos.y)
setPlayerStorageValue(sid, 33147, pos.z)
end

function getFlyingMarkedPos(sid)
if not isCreature(sid) then return end
local xx = getPlayerStorageValue(sid, 33145)
local yy = getPlayerStorageValue(sid, 33146)
local zz = getPlayerStorageValue(sid, 33147)
return {x = xx, y = yy, z = zz, stackpos = 0}
end

function getMarkedPos(sid)
if not isCreature(sid) then return end
local xx = getPlayerStorageValue(sid, 145)
local yy = getPlayerStorageValue(sid, 146)
local zz = getPlayerStorageValue(sid, 147)
return {x = xx, y = yy, z = zz}
end

function getOwnerPos(sid)
if not isCreature(sid) then return end
local xx = getPlayerStorageValue(sid, 148)
local yy = getPlayerStorageValue(sid, 149)
local zz = getPlayerStorageValue(sid, 150)
return {x = xx, y = yy, z = zz}
end

function markOwnerPos(sid, pos)
if not isCreature(sid) then return end
setPlayerStorageValue(sid, 148, pos.x)
setPlayerStorageValue(sid, 149, pos.y)
setPlayerStorageValue(sid, 150, pos.z)
end

function recheck(sid, skill, pos)
	if not isCreature(sid) then return end
	local cid = getCreatureMaster(sid)

	if skill == "cut" then

		local item = getTileItemById(pos, 2767)
		doCreatureSay(sid, "CUT!", TALKTYPE_MONSTER)
		markPos(sid, {x=1,y=1,z=7})
		doFaceCreature(sid, pos)
		doSendMagicEffect(getThingPos(item.uid), 141)
		doTransformItem(item.uid, 6216)
			local function growBush()
			doTransformItem(getTileItemById(pos, 6216).uid, 2767)
			end
		addEvent(growBush, intervalToRegrowBushAndStones * 1000)

	elseif skill == "rock smash" then

		local item = getTileItemById(pos, 1285)
		doCreatureSay(sid, "ROCK SMASH!", TALKTYPE_MONSTER)
		markPos(sid, {x=1,y=1,z=7})
		doFaceCreature(sid, pos)
		doSendMagicEffect(getThingPos(item.uid), 118)
		doTransformItem(item.uid, 3610)
			local function growRock()
			doTransformItem(getTileItemById(pos, 3610).uid, 1285)
			end
		addEvent(growRock, intervalToRegrowBushAndStones * 1000)
		
    elseif skill == "headbutt" then   --alterado v2.6
    
    local master = getCreatureMaster(sid)
    local array = {}                           
    local lvl = {25, 40, 60, 80, 1000} --lvls

    for i = 1, #lvl do
        if getPlayerLevel(master) <= lvl[i] then
           array = headbutt[lvl[i]]
           break
        end
    end 
    local rand = array[math.random(#array)]
    for j = 1, rand[2] do
        local poke = doCreateMonster(rand[1], getClosestFreeTile(sid, pos))
        doSetMonsterPassive(poke)               
        doWildAttackPlayer(poke, master) 
    end
    local item = getTileItemById(pos, 12591)    --id do item   arvore normal
    doCreatureSay(sid, "HEADBUTT!", TALKTYPE_MONSTER)
    markPos(sid, {x=1,y=1,z=7})
    doFaceCreature(sid, pos)
    doSendMagicEffect(getThingPos(item.uid), 118)
    doTransformItem(item.uid, 12592)  --id do item   arvore quebrada
    local function growHead()
          doTransformItem(getTileItemById(pos, 12592).uid, 12591) --id do item  arvore quebrada, arvore normal
    end
    addEvent(growHead, choose(5, 10, 20, 30) * 60 * 1000)   --o tempo pra arvore voltar ao normal varia de 5~30min

	elseif skill == "dig" then

		local item = getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0})
		doCreatureSay(sid, "DIG!", TALKTYPE_MONSTER)
		markPos(sid, {x=1,y=1,z=7})
		doFaceCreature(sid, pos)
		doSendMagicEffect(getThingPos(item.uid), 3)
		doTransformItem(item.uid, item.itemid+1)
			local function closeHole()
			doTransformItem(getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).uid, item.itemid)
			end
		addEvent(closeHole, intervalToRegrowBushAndStones * 1000)
	
	elseif skill == "fly" then
   
        --if not isPremium(cid) then
        --doPlayerSendCancel(cid, "Only premium members are allowed to fly.")
	    --return true
	    --end
		local pokemon = flys[getPokemonName(getCreatureSummons(cid)[1])]
		doPlayerSendTextMessage(cid, 27, "Type \"up\" or \"h1\" to fly higher and \"down\" or \"h2\" to fly lower.")
		doChangeSpeed(cid, -getCreatureSpeed(cid))
		local speed = 500 + PlayerSpeed/5 + getSpeed(sid) * 6 * speedRate
		doChangeSpeed(cid, speed)
		setPlayerStorageValue(cid, 54844, speed)
		doSetCreatureOutfit(cid, {lookType = pokemon[1] + 351}, -1)
		doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "hp", getCreatureHealth(getCreatureSummons(cid)[1]) / getCreatureMaxHealth(getCreatureSummons(cid)[1]))
		doRemoveCreature(getCreatureSummons(cid)[1])
		setPlayerStorageValue(cid, 17000, 1)
		 local addonfly= getPlayerSlotItem(cid, 8).uid
                local addofly = getItemAttribute(addonfly,"fly")
                if not addofly then
                                doSetItemAttribute(addonfly,"addon",0) 

                end
                if addofly > 0 then
                                doSetCreatureOutfit(cid, {lookType = addofly}, -1)

                end
		if getCreatureOutfit(cid).lookType == 667 or getCreatureOutfit(cid).lookType == 999 then
           markPosEff(cid, getThingPos(cid))
           sendMovementEffect(cid, 136, getThingPos(cid))     --edited efeito quando anda com o porygon
        end
	return true

	elseif skill == "ride" then
	
		local pokemon = rides[getPokemonName(getCreatureSummons(cid)[1])]
		doChangeSpeed(cid, -getCreatureSpeed(cid))
		local speed = 150 + PlayerSpeed + getSpeed(sid) * 5 * speedRate
		doChangeSpeed(cid, speed)
		setPlayerStorageValue(cid, 54844, speed)
		doSetCreatureOutfit(cid, {lookType = pokemon[1] + 351}, -1)
		doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "hp", getCreatureHealth(getCreatureSummons(cid)[1]) / getCreatureMaxHealth(getCreatureSummons(cid)[1]))
		doRemoveCreature(getCreatureSummons(cid)[1])
		setPlayerStorageValue(cid, 17001, 1)
		 local addonride = getPlayerSlotItem(cid, 8).uid
                local addoride = getItemAttribute(addonride,"ride")
                if not addoride then
                                doSetItemAttribute(addonride,"ride",0) 

                end
                if addoride > 0 then
                                doSetCreatureOutfit(cid, {lookType = addoride}, -1)

                end

	return true
	end

	if getOwnerPos(sid).x ~= getThingPos(getCreatureMaster(sid)).x or getOwnerPos(sid).y ~= getThingPos(getCreatureMaster(sid)).y or isCreature(getCreatureTarget(getCreatureMaster(sid))) then
		doRegainSpeed(sid)
		markPos(sid, {x=1,y=1,z=7})
	return true
	end

	addEvent(recheck, 120, sid)
end

function goThere(sid, thepos, skill, target, rept)
	if not isCreature(sid) then return true end
	if getCreatureNoMove(sid) or isSleeping(sid) or isParalyze(sid) then return true end            --alterado v2.6
	if thepos.x ~= getMarkedPos(sid).x or thepos.y ~= getMarkedPos(sid).y then return true end
	if isCreature(getCreatureTarget(getCreatureMaster(sid))) and target == false or (rept and rept <= 0) then
		doRegainSpeed(sid)
		markPos(sid, {x=1,y=1,z=7})
	return true
	end	

if (skill == "ride" or skill == "fly") and getDistanceBetween(getThingPos(sid), getMarkedPos(sid)) <= 1 then

	local currentPos = getThingPos(getCreatureMaster(sid))
	local summonPos = getThingPos(sid)
	local masterPos = getCreatureLastPosition(sid)

	if (getThingPos(sid).x == getThingPos(getCreatureMaster(sid)).x and getThingPos(sid).y == getThingPos(getCreatureMaster(sid)).y) or (currentPos.x == masterPos.x and currentPos.y == masterPos.y) then
	recheck(sid, skill, thepos)
	return true
	end

	if currentPos.x == thepos.x and currentPos.y == thepos.y then
		if getDirectionTo(getThingPos(sid), getThingPos(getCreatureMaster(sid))) <= 3 then
			doRegainSpeed(sid)
			local ndelay = getNextStepDelay(sid, 0)
			doTeleportThing(sid, thepos, true)
			doChangeSpeed(sid, -getCreatureSpeed(sid))
			markPos(sid, getThingPos(getCreatureMaster(sid)))
			addEvent(goThere, ndelay, sid, getMarkedPos(sid), skill, target)
		else
			doChangeSpeed(sid, - getCreatureSpeed(sid))
			doRegainSpeed(sid)
			markPos(sid, getThingPos(getCreatureMaster(sid)))
			local x = walkTo(sid, getDirectionTo(getThingPos(sid), getMarkedPos(sid)), getMarkedPos(sid), skill == "ride" or skill == "fly")
			doChangeSpeed(sid, - getCreatureSpeed(sid))
			addEvent(goThere, x, sid, getMarkedPos(sid), skill, target)
			end
	return true
	else
		markPos(sid, getThingPos(getCreatureMaster(sid)))
		doChangeSpeed(sid, - getCreatureSpeed(sid))
		doRegainSpeed(sid)
		local ndelay = getNextStepDelay(sid, 0)
			if getDirectionTo(getThingPos(sid), getMarkedPos(sid)) >= 4 then
				local x = walkTo(sid, getDirectionTo(getThingPos(sid), getMarkedPos(sid)), getMarkedPos(sid), skill == "ride" or skill == "fly")
			else
				doTeleportThing(sid, getPosByDir(getThingPos(sid), getDirectionTo(getThingPos(sid), getMarkedPos(sid))))
			end
		doChangeSpeed(sid, - getCreatureSpeed(sid))
		addEvent(goThere, x and x or ndelay, sid, getMarkedPos(sid), skill, target)
	return true
	end

addEvent(recheck, 350, sid, skill, thepos)
return true
end

if getThingPos(sid).x == getMarkedPos(sid).x and getThingPos(sid).y == getMarkedPos(sid).y then
	if isCreature(getCreatureTarget(sid)) then
	doFaceCreature(sid, getThingPos(getCreatureTarget(sid)))
	end
	if skill == "blink" then
	   doChangeSpeed(sid, - getCreatureSpeed(sid))   --edited blink
	end
addEvent(recheck, 350, sid, skill, thepos)
return true
end

if (getOwnerPos(sid).x ~= getThingPos(getCreatureMaster(sid)).x or getOwnerPos(sid).y ~= getThingPos(getCreatureMaster(sid)).y) and isCreature(getCreatureTarget(getCreatureMaster(sid))) == false and skill == "move" then
doRegainSpeed(sid)
markPos(sid, {x=1,y=1,z=7})
return true
end

doRegainSpeed(sid)

local holeid = thepos
holeid.stackpos = 0
holeid = getTileThingByPos(holeid).itemid

if getDistanceBetween(getThingPos(sid), getMarkedPos(sid)) <= 1 and (not isWalkable(getPosByDir(getThingPos(sid), getDirectionTo(getThingPos(sid), getMarkedPos(sid))), true, false, false, true) or isInArray(specialabilities["digholes"], holeid)) then
	if isGhostPokemon(sid) and getPlayerStorageValue(getCreatureMaster(sid), 990) <= 0 then
		local todir = getDirectionTo(getThingPos(sid), getMarkedPos(sid))
		if todir <= 3 then
			doTeleportThing(sid, getMarkedPos(sid), true)
		else
			local gotopos = getPosByDir(getThingPos(sid), dirpref[math.random(1, 2)][todir][1][math.random(1, 2)])
			doTeleportThing(sid, gotopos, true)
			addEvent(goThere, getNextStepDelay(sid, 0), sid, getMarkedPos(sid), skill, target)
			return true
		end
	end
doFaceCreature(sid, getMarkedPos(sid))
addEvent(recheck, 180, sid, skill, thepos)
doChangeSpeed(sid, - getCreatureSpeed(sid))
return true
end	

local ret = 0
	if getDistanceBetween(getThingPos(sid), getMarkedPos(sid)) <= 1 then
		ret = walkTo(sid, getDirectionTo(getThingPos(sid), getMarkedPos(sid)), getMarkedPos(sid), skill == "ride" or skill == "fly" or isGhostPokemon(sid))
		if not tonumber(ret) then
			doFaceCreature(sid, getMarkedPos(sid))
			addEvent(recheck, 180, sid, skill, thepos)
			doChangeSpeed(sid, - getCreatureSpeed(sid))
		return true
		end
	else
		ret = walkTo(sid, getDirectionTo(getThingPos(sid), getMarkedPos(sid)), getMarkedPos(sid), skill == "ride" or skill == "fly" or not isGhostPokemon(sid))-- and isSightClear(getThingPos(sid), getMarkedPos(sid), false)))
	end

if not tonumber(ret) then
doPlayerSendCancel(getCreatureMaster(sid), "Destination is not reachable.")
markPos(sid, {x=1,y=1,z=7})
return true
end

doChangeSpeed(sid, - getCreatureSpeed(sid))
addEvent(goThere, tonumber(ret), sid, getMarkedPos(sid), skill, target, rept and rept - 1 or 22)
end

 

 

Link para o comentário
Compartilhar em outros sites

ss ok.

ceetros, deu 2 erros aqui, um na goback quando bota o poke pra fora, e outra no order.lua, quando usa o fly com o poke com a addon, a addon some, e quando sai do fly a addon some também e n da mais pra voltar o poke pra ball.

 

 

 

local EFFECTS = {
	--[OutfitID] = {Effect}
	["Magmar"] = 35,   
	["Magmortar"] = 35,   
	["Shiny Magmar"] = 35,
	["Jynx"] = 17,          --alterado v2.5
	["Shiny Jynx"] = 17,  
   ["Mamoswine"] = 205,  
   ["Piloswine"] = 205,  --alterado v2.8
   ["Swinub"] = 205,  
}

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


if getPlayerStorageValue(cid,130130) >= 1 then 
doPlayerSendTextMessage(cid, 19, "Nao Pode Dar Goback Nessa Area.")
return true
end

if exhaustion.get(cid, 6666) and exhaustion.get(cid, 6666) > 0 then return true end

if getPlayerStorageValue(cid, 17000) >= 1 or getPlayerStorageValue(cid, 17001) >= 1 or getPlayerStorageValue(cid, 63215) >= 1 
or getPlayerStorageValue(cid, 75846) >= 1 or getPlayerStorageValue(cid, 5700) >= 1  then    --alterado v2.9 <<
   return true                                                                                                                        
end

local ballName = getItemAttribute(item.uid, "poke")
local btype = getPokeballType(item.itemid)
local usando = pokeballs[btype].use

local effect = pokeballs[btype].effect
	if not effect then
		effect = 21
	end
	
unLock(item.uid) --alterado v2.8
if item.itemid == usando then
--if getPlayerGroupId == 8 then
--doPlayerSendTextMessage(cid, 19, "TESTS 1!")
--setPlayerGroupId(cid,1) 
--return true
--end  


                          
   if getPlayerStorageValue(cid, 990) == 1 then -- GYM
		doPlayerSendCancel(cid, "You can't return your pokemon during gym battles.")
	   return true
	end
	
	if #getCreatureSummons(cid) > 1 and getPlayerStorageValue(cid, 212124) <= 0 then     --alterado v2.6
       if getPlayerStorageValue(cid, 637501) == -2 or getPlayerStorageValue(cid, 637501) >= 1 then  
          BackTeam(cid)       
       end
    end 
    
    if #getCreatureSummons(cid) == 2 and getPlayerStorageValue(cid, 212124) >= 1 then
       doPlayerSendCancel(cid, "You can't do that while is controling a mind")
       return true     --alterado v2.5
    end
    
	 if #getCreatureSummons(cid) <= 0 then
	    if isInArray(pokeballs[btype].all, item.itemid) then
		    doTransformItem(item.uid, pokeballs[btype].on)
			 doItemSetAttribute(item.uid, "hp", 1)
			 --setPlayerGroupId(cid,1)
			 doPlayerSendCancel(cid, "[Ball-Desbloqueado] Balls Desbloqueado com Sucesso!")
			 doPlayerSendTextMessage(cid, 21, "[Ball-Desbloqueado] Balls Desbloqueado com Sucesso!")
			            doSendMagicEffect(getThingPos(cid), 29)
           doSendAnimatedText(getCreaturePosition(cid),"Unlock",math.random(1,255)) 
		    return true
		 end
    end

    local cd = getCD(item.uid, "blink", 30)
    if cd > 0 then
       setCD(item.uid, "blink", 0)
    end
    
	 local z = getCreatureSummons(cid)[1]

	 if getCreatureCondition(z, CONDITION_INVISIBLE) and not isGhostPokemon(z) then
	    return true
	 end
    doReturnPokemon(cid, z, item, effect)
elseif item.itemid == pokeballs[btype].on then
--doPlayerSendTextMessage(cid, 19, "TESTS 3!")
--setPlayerGroupId(cid,8) 

	if item.uid ~= getPlayerSlotItem(cid, CONST_SLOT_FEET).uid then
		doPlayerSendCancel(cid, "You must put your pokeball in the correct place!")
	return TRUE
	end

	local thishp = getItemAttribute(item.uid, "hp")

	if thishp <= 0 then
		if isInArray(pokeballs[btype].all, item.itemid) then
			doTransformItem(item.uid, pokeballs[btype].off)
			doItemSetAttribute(item.uid, "hp", 0)
			doPlayerSendCancel(cid, "This pokemon is fainted.")
         return true
		end
	end

	local pokemon = getItemAttribute(item.uid, "poke")

	if not pokes[pokemon] then
	   return true
	end
	
----------------------- Sistema de nao poder carregar mais que 3 pokes lvl baixo e + q 1 poke de lvl medio/alto ---------------------------------
if not isInArray({5, 6}, getPlayerGroupId(cid)) then                          --alterado v2.9 \/
   local balls = getPokeballsInContainer(getPlayerSlotItem(cid, 3).uid)
   local low = {}
   local lowPokes = {"Rattata", "Caterpie", "Weedle", "Oddish", "Pidgey", "Paras", "Poliwag", "Bellsprout", "Magikarp", "Hoppip", "Sunkern"}
   if #balls >= 1 then
      for _, uid in ipairs(balls) do
          local nome = getItemAttribute(uid, "poke")
          if not isInArray(lowPokes, pokemon) and nome == pokemon then
             return doPlayerSendTextMessage(cid, 27, "Sorry, but you can't carry two pokemons equals!")
          else
             if nome == pokemon then
                table.insert(low, nome)
             end
          end
      end
   end
if #low >= 3 then
   return doPlayerSendTextMessage(cid, 27, "Sorry, but you can't carry more than three pokemons equals of low level!")
end   
end
---------------------------------------------------------------------------------------------------------------------------------------------------

	local x = pokes[pokemon]
	local boosts = getItemAttribute(item.uid, "boost") or 0

	if getPlayerLevel(cid) + pokemonMaxLevelAbovePlayer < getItemAttribute(item.uid, "level") + boosts then
	   doPlayerSendCancel(cid, "Your pokemon's level is much higher than yours, you can't use him.")
	   return true
    end
    doSummonMonster(cid, pokemon)

	 local pk = getCreatureSummons(cid)[1]
	 if not isCreature(pk) then return true end
	 ------------------------passiva hitmonchan------------------------------
	 if isSummon(pk) then                                                  --alterado v2.8 \/
       if pokemon == "Shiny Hitmonchan" or pokemon == "Hitmonchan" then
          if not getItemAttribute(item.uid, "hands") then
             doSetItemAttribute(item.uid, "hands", 0)
          end
          local hands = getItemAttribute(item.uid, "hands")
          doSetCreatureOutfit(pk, {lookType = hitmonchans[pokemon][hands].out}, -1)
       end
    end
	-------------------------------------------------------------------------
    ---------movement magmar, jynx-------------
    if EFFECTS[getCreatureName(pk)] then             
       markPosEff(pk, getThingPos(pk))
       sendMovementEffect(pk, EFFECTS[getCreatureName(pk)], getThingPos(pk)) --alterado v2.5
    end
    --------------------------------------------------------------------------      

	 if getCreatureName(pk) == "Ditto" then

		local left = getItemAttribute(item.uid, "transLeft")
		local name = getItemAttribute(item.uid, "transName")

		if left and left > 0 then
			setPlayerStorageValue(pk, 1010, name)
			doSetCreatureOutfit(pk, {lookType = getItemAttribute(item.uid, "transOutfit")}, -1)
			addEvent(deTransform, left * 1000, pk, getItemAttribute(item.uid, "transTurn"))
			doItemSetAttribute(item.uid, "transBegin", os.clock())
		else
			setPlayerStorageValue(pk, 1010, "Ditto")
		end
	end

	if isGhostPokemon(pk) then doTeleportThing(pk, getPosByDir(getThingPos(cid), math.random(0, 7)), false) end

	doCreatureSetLookDir(pk, 2)

	adjustStatus(pk, item.uid, true, false, true)
	doAddPokemonInOwnList(cid, pokemon)

	doTransformItem(item.uid, item.itemid+1)

	local pokename = getPokeName(pk) --alterado v2.7 

	local mgo = gobackmsgs[math.random(1, #gobackmsgs)].go:gsub("doka", pokename)
	doCreatureSay(cid, mgo, TALKTYPE_SAY)
	doSendMagicEffect(getCreaturePosition(pk), effect)
	
	local nick = getItemAttribute(item.uid, "nick")
	if not nick then
		local name = getItemAttribute(item.uid, "poke")
		doCreatureSetNick(getCreatureSummons(cid)[1], name)
		else
	local level = getItemAttribute(item.uid, "level")
	doCreatureSetNick(getCreatureSummons(cid)[1], nick)
	end
	
	local pk = getCreatureSummons(cid)[1]
                local pb = getPlayerSlotItem(cid, 8).uid
                local look = getItemAttribute(pb,"addon")
                if not look then
                                doSetItemAttribute(pb,"addon",0) 

                end
                if look > 0 then
                                doSetCreatureOutfit(pk, {lookType = look}, -1)

                end
	
	if useOTClient then
	   doPlayerSendCancel(cid, '12//,show') --alterado v2.7
    end

else
    doPlayerSendCancel(cid, "This pokemon is fainted.")
end

	if useKpdoDlls then
		doUpdateMoves(cid)
	end
return true
end

 

 

 

 

order.lua

 

 

 

local dirpref = {
[1] =  {[NORTH] = {[1] = {NORTH}, [2] = {EAST, WEST}, [3] = {NORTHEAST, NORTHWEST}},
	[EAST] = {[1] = {EAST}, [2] = {NORTH, SOUTH}, [3] = {NORTHEAST, SOUTHEAST}},
	[SOUTH] = {[1] = {SOUTH}, [2] = {EAST, WEST}, [3] = {SOUTHEAST, SOUTHWEST}},
	[WEST] = {[1] = {WEST}, [2] = {SOUTH, NORTH}, [3] = {NORTHWEST, SOUTHWEST}},
	[NORTHEAST] = {[1] = {NORTH, EAST}, [2] = {NORTHEAST}, [3] = {SOUTH, WEST}},
	[SOUTHEAST] = {[1] = {SOUTH, EAST}, [2] = {SOUTHEAST}, [3] = {NORTH, WEST}},
	[SOUTHWEST] = {[1] = {SOUTH, WEST}, [2] = {SOUTHWEST}, [3] = {NORTH, EAST}},
	[NORTHWEST] = {[1] = {NORTH, WEST}, [2] = {NORTHWEST}, [3] = {EAST, SOUTH}}},
[2] =  {[NORTH] = {[1] = {NORTH}, [2] = {WEST, EAST}, [3] = {NORTHWEST, NORTHEAST}},
	[EAST] = {[1] = {EAST}, [2] = {SOUTH, NORTH}, [3] = {SOUTHEAST, NORTHEAST}},
	[SOUTH] = {[1] = {SOUTH}, [2] = {WEST, EAST}, [3] = {SOUTHWEST, SOUTHEAST}},
	[WEST] = {[1] = {WEST}, [2] = {NORTH, SOUTH}, [3] = {SOUTHWEST, NORTHWEST}},
	[NORTHEAST] = {[1] = {EAST, NORTH}, [2] = {NORTHEAST}, [3] = {WEST, SOUTH}},
	[SOUTHEAST] = {[1] = {EAST, SOUTH}, [2] = {SOUTHEAST}, [3] = {WEST, NORTH}},
	[SOUTHWEST] = {[1] = {WEST, SOUTH}, [2] = {SOUTHWEST}, [3] = {EAST, NORTH}},
	[NORTHWEST] = {[1] = {WEST, NORTH}, [2] = {NORTHWEST}, [3] = {SOUTH, EAST}}},
}

function doPushCreature(uid,direction,distance,time)
   if isCreature(uid) == TRUE then
   local rand = (2*math.random(0,1))-1
   local rand2 = math.random(-1,0)
	  if direction == 0 then
	  signal = {0,rand,-rand,rand,-rand,0,-1,-1,-1,0,0,0}
	  elseif direction == 1 then
	  signal = {1,1,1,0,0,0,0,rand,-rand,rand,-rand,0}
	  elseif direction == 2 then
	  signal = {0,rand,-rand,rand,-rand,0,1,1,1,0,0,0}

	  elseif direction == 3 then

	  signal = {-1,-1,-1,0,0,0,0,rand,-rand,rand,-rand,0}

	  elseif direction == 4 then

	  signal = {-1,rand2,(-rand2)-1,0,1,rand2+1,rand2,0}

	  elseif direction == 5 then

	  signal = {1,-rand2,-((-rand2)-1),0,1,rand2+1,rand2,0}

	  elseif direction == 6 then

	  signal = {-1,rand2,(-rand2)-1,0,-1,(-rand2)-1,rand2,0}

	  else

	  signal = {1,-rand2,-((-rand2)-1),0,-1,(-rand2)-1,rand2,0}

	  end

   local pos = getThingPos(uid)

   nsig = #signal

   nvar = 0

   

   repeat

   nvar = nvar+1

   newpos = {x=pos.x+(signal[nvar]),y=pos.y+(signal[(nsig/2)+nvar]),z=pos.z}

   newtile = {x=newpos.x,y=newpos.y,z=newpos.z,stackpos=0}

   until getTileThingByPos(newtile).uid ~= 0 and hasProperty(getTileThingByPos(newtile).uid,3) == FALSE and canWalkOnPos(newtile, true, false, true, true, false) and queryTileAddThing(uid,newpos) == 1 or nvar == (nsig/2)
                                                                                                                        --alterado v2.5
   

	  if distance == nil or distance == 1 then

	  doTeleportThing(uid,newpos,TRUE)   

	  else

	  distance = distance-1

	  doTeleportThing(uid,newpos,TRUE)

		 if time ~= nil then

		 addEvent(doPushCreature,time,uid,direction,distance,time)

		 else

		 addEvent(doPushCreature,500,uid,direction,distance,500)

		 end	   

	  end

   end  

end

function doComparePosition(pos1, pos2)
	if pos1.x == pos2.x and pos1.y == pos2.y and pos1.z == pos2.z then
	return true
	end
return false
end

function getNextStepDelay(cid, dir)
	return 868
end

function walkTo(cid, direction, finalp, useExtraMoveOrder)
	if not isCreature(cid) then return true end

	doChangeSpeed(cid, 5)
	local x = getThingPos(cid)
	local ratedelaywalk = 1
	local finalpos = {x = finalp.x, y = finalp.y, z = finalp.z}

		if not canWalkOnPos(finalpos, false, false, true, true, true) then
			finalpos = getClosestFreeTile(cid, finalpos)
		end

		if not finalpos then
		return false
		end

	local dir = getDirectionTo(getThingPos(cid), finalpos)
	if dir and tonumber(dir) ~= nil and tonumber(dir) >= 0 and tonumber(dir) <= 7 then
		if dir >= 4 then
			ratedelaywalk = 0.4
		end
		doPushCreature(cid, dir, 1, getNextStepDelay(cid, dir) * ratedelaywalk)
		return getNextStepDelay(cid, dir) * ratedelaywalk
	elseif useExtraMoveOrder then

local random = math.random(1, 2)

	for ta = 1, 3 do
		for tb = 1, #dirpref[random][direction][ta] do
			local y = getPosByDir(getThingPos(cid), dirpref[random][direction][ta][tb])
			local w = getCreatureLP(cid)
			local z = getDirectionTo(y, getThingPos(cid)) -- direção q vai marcar
			local j = getDirectionTo(getThingPos(cid), y) -- direção q ele vai
			if canWalkOnPos(y, true, false, true, true, true) and w ~= j then
				if dirpref[random][direction][ta][tb] >= 4 then
					ratedelaywalk = 0.5
				end
				doPushCreature(cid, dirpref[random][direction][ta][tb], 1, getNextStepDelay(cid, dirpref[random][direction][ta][tb]) * ratedelaywalk)
				markLP(cid, z)
			return getNextStepDelay(cid, dirpref[random][direction][ta][tb]) * ratedelaywalk
			end
		end
	end
	end
return false
end

function getCreatureLP(cid)
return getPlayerStorageValue(cid, 197)
end

function markLP(cid, dir)
setPlayerStorageValue(cid, 197, dir)
end

function markPos(sid, pos)
if not isCreature(sid) then return end
setPlayerStorageValue(sid, 145, pos.x)
setPlayerStorageValue(sid, 146, pos.y)
setPlayerStorageValue(sid, 147, pos.z)
end

function markFlyingPos(sid, pos)
if not isCreature(sid) then return end
setPlayerStorageValue(sid, 33145, pos.x)
setPlayerStorageValue(sid, 33146, pos.y)
setPlayerStorageValue(sid, 33147, pos.z)
end

function getFlyingMarkedPos(sid)
if not isCreature(sid) then return end
local xx = getPlayerStorageValue(sid, 33145)
local yy = getPlayerStorageValue(sid, 33146)
local zz = getPlayerStorageValue(sid, 33147)
return {x = xx, y = yy, z = zz, stackpos = 0}
end

function getMarkedPos(sid)
if not isCreature(sid) then return end
local xx = getPlayerStorageValue(sid, 145)
local yy = getPlayerStorageValue(sid, 146)
local zz = getPlayerStorageValue(sid, 147)
return {x = xx, y = yy, z = zz}
end

function getOwnerPos(sid)
if not isCreature(sid) then return end
local xx = getPlayerStorageValue(sid, 148)
local yy = getPlayerStorageValue(sid, 149)
local zz = getPlayerStorageValue(sid, 150)
return {x = xx, y = yy, z = zz}
end

function markOwnerPos(sid, pos)
if not isCreature(sid) then return end
setPlayerStorageValue(sid, 148, pos.x)
setPlayerStorageValue(sid, 149, pos.y)
setPlayerStorageValue(sid, 150, pos.z)
end

function recheck(sid, skill, pos)
	if not isCreature(sid) then return end
	local cid = getCreatureMaster(sid)

	if skill == "cut" then

		local item = getTileItemById(pos, 2767)
		doCreatureSay(sid, "CUT!", TALKTYPE_MONSTER)
		markPos(sid, {x=1,y=1,z=7})
		doFaceCreature(sid, pos)
		doSendMagicEffect(getThingPos(item.uid), 141)
		doTransformItem(item.uid, 6216)
			local function growBush()
			doTransformItem(getTileItemById(pos, 6216).uid, 2767)
			end
		addEvent(growBush, intervalToRegrowBushAndStones * 1000)

	elseif skill == "rock smash" then

		local item = getTileItemById(pos, 1285)
		doCreatureSay(sid, "ROCK SMASH!", TALKTYPE_MONSTER)
		markPos(sid, {x=1,y=1,z=7})
		doFaceCreature(sid, pos)
		doSendMagicEffect(getThingPos(item.uid), 118)
		doTransformItem(item.uid, 3610)
			local function growRock()
			doTransformItem(getTileItemById(pos, 3610).uid, 1285)
			end
		addEvent(growRock, intervalToRegrowBushAndStones * 1000)
		
    elseif skill == "headbutt" then   --alterado v2.6
    
    local master = getCreatureMaster(sid)
    local array = {}                           
    local lvl = {25, 40, 60, 80, 1000} --lvls

    for i = 1, #lvl do
        if getPlayerLevel(master) <= lvl[i] then
           array = headbutt[lvl[i]]
           break
        end
    end 
    local rand = array[math.random(#array)]
    for j = 1, rand[2] do
        local poke = doCreateMonster(rand[1], getClosestFreeTile(sid, pos))
        doSetMonsterPassive(poke)               
        doWildAttackPlayer(poke, master) 
    end
    local item = getTileItemById(pos, 12591)    --id do item   arvore normal
    doCreatureSay(sid, "HEADBUTT!", TALKTYPE_MONSTER)
    markPos(sid, {x=1,y=1,z=7})
    doFaceCreature(sid, pos)
    doSendMagicEffect(getThingPos(item.uid), 118)
    doTransformItem(item.uid, 12592)  --id do item   arvore quebrada
    local function growHead()
          doTransformItem(getTileItemById(pos, 12592).uid, 12591) --id do item  arvore quebrada, arvore normal
    end
    addEvent(growHead, choose(5, 10, 20, 30) * 60 * 1000)   --o tempo pra arvore voltar ao normal varia de 5~30min

	elseif skill == "dig" then

		local item = getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0})
		doCreatureSay(sid, "DIG!", TALKTYPE_MONSTER)
		markPos(sid, {x=1,y=1,z=7})
		doFaceCreature(sid, pos)
		doSendMagicEffect(getThingPos(item.uid), 3)
		doTransformItem(item.uid, item.itemid+1)
			local function closeHole()
			doTransformItem(getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).uid, item.itemid)
			end
		addEvent(closeHole, intervalToRegrowBushAndStones * 1000)
	
	elseif skill == "fly" then
   
        --if not isPremium(cid) then
        --doPlayerSendCancel(cid, "Only premium members are allowed to fly.")
	    --return true
	    --end
		local pokemon = flys[getPokemonName(getCreatureSummons(cid)[1])]
		doPlayerSendTextMessage(cid, 27, "Type \"up\" or \"h1\" to fly higher and \"down\" or \"h2\" to fly lower.")
		doChangeSpeed(cid, -getCreatureSpeed(cid))
		local speed = 500 + PlayerSpeed/5 + getSpeed(sid) * 6 * speedRate
		doChangeSpeed(cid, speed)
		setPlayerStorageValue(cid, 54844, speed)
		doSetCreatureOutfit(cid, {lookType = pokemon[1] + 351}, -1)
		doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "hp", getCreatureHealth(getCreatureSummons(cid)[1]) / getCreatureMaxHealth(getCreatureSummons(cid)[1]))
		doRemoveCreature(getCreatureSummons(cid)[1])
		setPlayerStorageValue(cid, 17000, 1)
		 local addonfly= getPlayerSlotItem(cid, 8).uid
                local addofly = getItemAttribute(addonfly,"fly")
                if not addofly then
                                doSetItemAttribute(addonfly,"addon",0) 

                end
                if addofly > 0 then
                                doSetCreatureOutfit(cid, {lookType = addofly}, -1)

                end
		if getCreatureOutfit(cid).lookType == 667 or getCreatureOutfit(cid).lookType == 999 then
           markPosEff(cid, getThingPos(cid))
           sendMovementEffect(cid, 136, getThingPos(cid))     --edited efeito quando anda com o porygon
        end
	return true

	elseif skill == "ride" then
	
		local pokemon = rides[getPokemonName(getCreatureSummons(cid)[1])]
		doChangeSpeed(cid, -getCreatureSpeed(cid))
		local speed = 150 + PlayerSpeed + getSpeed(sid) * 5 * speedRate
		doChangeSpeed(cid, speed)
		setPlayerStorageValue(cid, 54844, speed)
		doSetCreatureOutfit(cid, {lookType = pokemon[1] + 351}, -1)
		doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "hp", getCreatureHealth(getCreatureSummons(cid)[1]) / getCreatureMaxHealth(getCreatureSummons(cid)[1]))
		doRemoveCreature(getCreatureSummons(cid)[1])
		setPlayerStorageValue(cid, 17001, 1)
		 local addonride = getPlayerSlotItem(cid, 8).uid
                local addoride = getItemAttribute(addonride,"ride")
                if not addoride then
                                doSetItemAttribute(addonride,"ride",0) 

                end
                if addoride > 0 then
                                doSetCreatureOutfit(cid, {lookType = addoride}, -1)

                end

	return true
	end

	if getOwnerPos(sid).x ~= getThingPos(getCreatureMaster(sid)).x or getOwnerPos(sid).y ~= getThingPos(getCreatureMaster(sid)).y or isCreature(getCreatureTarget(getCreatureMaster(sid))) then
		doRegainSpeed(sid)
		markPos(sid, {x=1,y=1,z=7})
	return true
	end

	addEvent(recheck, 120, sid)
end

function goThere(sid, thepos, skill, target, rept)
	if not isCreature(sid) then return true end
	if getCreatureNoMove(sid) or isSleeping(sid) or isParalyze(sid) then return true end            --alterado v2.6
	if thepos.x ~= getMarkedPos(sid).x or thepos.y ~= getMarkedPos(sid).y then return true end
	if isCreature(getCreatureTarget(getCreatureMaster(sid))) and target == false or (rept and rept <= 0) then
		doRegainSpeed(sid)
		markPos(sid, {x=1,y=1,z=7})
	return true
	end	

if (skill == "ride" or skill == "fly") and getDistanceBetween(getThingPos(sid), getMarkedPos(sid)) <= 1 then

	local currentPos = getThingPos(getCreatureMaster(sid))
	local summonPos = getThingPos(sid)
	local masterPos = getCreatureLastPosition(sid)

	if (getThingPos(sid).x == getThingPos(getCreatureMaster(sid)).x and getThingPos(sid).y == getThingPos(getCreatureMaster(sid)).y) or (currentPos.x == masterPos.x and currentPos.y == masterPos.y) then
	recheck(sid, skill, thepos)
	return true
	end

	if currentPos.x == thepos.x and currentPos.y == thepos.y then
		if getDirectionTo(getThingPos(sid), getThingPos(getCreatureMaster(sid))) <= 3 then
			doRegainSpeed(sid)
			local ndelay = getNextStepDelay(sid, 0)
			doTeleportThing(sid, thepos, true)
			doChangeSpeed(sid, -getCreatureSpeed(sid))
			markPos(sid, getThingPos(getCreatureMaster(sid)))
			addEvent(goThere, ndelay, sid, getMarkedPos(sid), skill, target)
		else
			doChangeSpeed(sid, - getCreatureSpeed(sid))
			doRegainSpeed(sid)
			markPos(sid, getThingPos(getCreatureMaster(sid)))
			local x = walkTo(sid, getDirectionTo(getThingPos(sid), getMarkedPos(sid)), getMarkedPos(sid), skill == "ride" or skill == "fly")
			doChangeSpeed(sid, - getCreatureSpeed(sid))
			addEvent(goThere, x, sid, getMarkedPos(sid), skill, target)
			end
	return true
	else
		markPos(sid, getThingPos(getCreatureMaster(sid)))
		doChangeSpeed(sid, - getCreatureSpeed(sid))
		doRegainSpeed(sid)
		local ndelay = getNextStepDelay(sid, 0)
			if getDirectionTo(getThingPos(sid), getMarkedPos(sid)) >= 4 then
				local x = walkTo(sid, getDirectionTo(getThingPos(sid), getMarkedPos(sid)), getMarkedPos(sid), skill == "ride" or skill == "fly")
			else
				doTeleportThing(sid, getPosByDir(getThingPos(sid), getDirectionTo(getThingPos(sid), getMarkedPos(sid))))
			end
		doChangeSpeed(sid, - getCreatureSpeed(sid))
		addEvent(goThere, x and x or ndelay, sid, getMarkedPos(sid), skill, target)
	return true
	end

addEvent(recheck, 350, sid, skill, thepos)
return true
end

if getThingPos(sid).x == getMarkedPos(sid).x and getThingPos(sid).y == getMarkedPos(sid).y then
	if isCreature(getCreatureTarget(sid)) then
	doFaceCreature(sid, getThingPos(getCreatureTarget(sid)))
	end
	if skill == "blink" then
	   doChangeSpeed(sid, - getCreatureSpeed(sid))   --edited blink
	end
addEvent(recheck, 350, sid, skill, thepos)
return true
end

if (getOwnerPos(sid).x ~= getThingPos(getCreatureMaster(sid)).x or getOwnerPos(sid).y ~= getThingPos(getCreatureMaster(sid)).y) and isCreature(getCreatureTarget(getCreatureMaster(sid))) == false and skill == "move" then
doRegainSpeed(sid)
markPos(sid, {x=1,y=1,z=7})
return true
end

doRegainSpeed(sid)

local holeid = thepos
holeid.stackpos = 0
holeid = getTileThingByPos(holeid).itemid

if getDistanceBetween(getThingPos(sid), getMarkedPos(sid)) <= 1 and (not isWalkable(getPosByDir(getThingPos(sid), getDirectionTo(getThingPos(sid), getMarkedPos(sid))), true, false, false, true) or isInArray(specialabilities["digholes"], holeid)) then
	if isGhostPokemon(sid) and getPlayerStorageValue(getCreatureMaster(sid), 990) <= 0 then
		local todir = getDirectionTo(getThingPos(sid), getMarkedPos(sid))
		if todir <= 3 then
			doTeleportThing(sid, getMarkedPos(sid), true)
		else
			local gotopos = getPosByDir(getThingPos(sid), dirpref[math.random(1, 2)][todir][1][math.random(1, 2)])
			doTeleportThing(sid, gotopos, true)
			addEvent(goThere, getNextStepDelay(sid, 0), sid, getMarkedPos(sid), skill, target)
			return true
		end
	end
doFaceCreature(sid, getMarkedPos(sid))
addEvent(recheck, 180, sid, skill, thepos)
doChangeSpeed(sid, - getCreatureSpeed(sid))
return true
end	

local ret = 0
	if getDistanceBetween(getThingPos(sid), getMarkedPos(sid)) <= 1 then
		ret = walkTo(sid, getDirectionTo(getThingPos(sid), getMarkedPos(sid)), getMarkedPos(sid), skill == "ride" or skill == "fly" or isGhostPokemon(sid))
		if not tonumber(ret) then
			doFaceCreature(sid, getMarkedPos(sid))
			addEvent(recheck, 180, sid, skill, thepos)
			doChangeSpeed(sid, - getCreatureSpeed(sid))
		return true
		end
	else
		ret = walkTo(sid, getDirectionTo(getThingPos(sid), getMarkedPos(sid)), getMarkedPos(sid), skill == "ride" or skill == "fly" or not isGhostPokemon(sid))-- and isSightClear(getThingPos(sid), getMarkedPos(sid), false)))
	end

if not tonumber(ret) then
doPlayerSendCancel(getCreatureMaster(sid), "Destination is not reachable.")
markPos(sid, {x=1,y=1,z=7})
return true
end

doChangeSpeed(sid, - getCreatureSpeed(sid))
addEvent(goThere, tonumber(ret), sid, getMarkedPos(sid), skill, target, rept and rept - 1 or 22)
end

 

 

Explica direito

arruma o goback.

	local pksz = getCreatureSummons(cid)[1]
	                local pksc = getPlayerSlotItem(cid, 8).uid
                local pkss = getItemAttribute(bolaloka,"addon")
                if not pkss then
                                doSetItemAttribute(pksc,"addon",0) 

                end
                if pkss > 0 then
                                doSetCreatureOutfit(pksz, {lookType = pkss}, -1)
								end

para

	local pksz = getCreatureSummons(cid)[1]
	                local pksc = getPlayerSlotItem(cid, 8).uid
                local pkss = getItemAttribute(pksc,"addon")
                if not pkss then
                                doSetItemAttribute(pksc,"addon",0) 

                end
                if pkss > 0 then
                                doSetCreatureOutfit(pksz, {lookType = pkss}, -1)
								end
Link para o comentário
Compartilhar em outros sites

Explica direito

tipo, eu coloco uma addon no Dragonite, certo, depois do fly com ele, sendo que em vez de aparecer a addon no fly, deu aquele erro no order.lua da lib e o poke ficou sem addon no fly, e quando sair do fly ele também ficou sem a addon, a addon sumiu, e quando tentei voltar o poke pra ball n voltou, e o primeiro erro que apareceu na distro, no caso o do goback.lua do action, foi quando eu summono o poke para fora da ball, ai deu aquele erro.

Link para o comentário
Compartilhar em outros sites

tipo, eu coloco uma addon no Dragonite, certo, depois do fly com ele, sendo que em vez de aparecer a addon no fly, deu aquele erro no order.lua da lib e o poke ficou sem addon no fly, e quando sair do fly ele também ficou sem a addon, a addon sumiu, e quando tentei voltar o poke pra ball n voltou, e o primeiro erro que apareceu na distro, no caso o do goback.lua do action, foi quando eu summono o poke para fora da ball, ai deu aquele erro.

 

refaz o tutorial, dei uma atualizada.

Link para o comentário
Compartilhar em outros sites

 

refaz o tutorial, dei uma atualizada.

ok

ceetros, pegou normal agr, só que deu um erro no gaback, quando eu summono o poke.

 

 

 

local EFFECTS = {
	--[OutfitID] = {Effect}
	["Magmar"] = 35,   
	["Magmortar"] = 35,   
	["Shiny Magmar"] = 35,
	["Jynx"] = 17,          --alterado v2.5
	["Shiny Jynx"] = 17,  
   ["Mamoswine"] = 205,  
   ["Piloswine"] = 205,  --alterado v2.8
   ["Swinub"] = 205,  
}

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


if getPlayerStorageValue(cid,130130) >= 1 then 
doPlayerSendTextMessage(cid, 19, "Nao Pode Dar Goback Nessa Area.")
return true
end

if exhaustion.get(cid, 6666) and exhaustion.get(cid, 6666) > 0 then return true end

if getPlayerStorageValue(cid, 17000) >= 1 or getPlayerStorageValue(cid, 17001) >= 1 or getPlayerStorageValue(cid, 63215) >= 1 
or getPlayerStorageValue(cid, 75846) >= 1 or getPlayerStorageValue(cid, 5700) >= 1  then    --alterado v2.9 <<
   return true                                                                                                                        
end

local ballName = getItemAttribute(item.uid, "poke")
local btype = getPokeballType(item.itemid)
local usando = pokeballs[btype].use

local effect = pokeballs[btype].effect
	if not effect then
		effect = 21
	end
	
unLock(item.uid) --alterado v2.8
if item.itemid == usando then
--if getPlayerGroupId == 8 then
--doPlayerSendTextMessage(cid, 19, "TESTS 1!")
--setPlayerGroupId(cid,1) 
--return true
--end  


                          
   if getPlayerStorageValue(cid, 990) == 1 then -- GYM
		doPlayerSendCancel(cid, "You can't return your pokemon during gym battles.")
	   return true
	end
	
	if #getCreatureSummons(cid) > 1 and getPlayerStorageValue(cid, 212124) <= 0 then     --alterado v2.6
       if getPlayerStorageValue(cid, 637501) == -2 or getPlayerStorageValue(cid, 637501) >= 1 then  
          BackTeam(cid)       
       end
    end 
    
    if #getCreatureSummons(cid) == 2 and getPlayerStorageValue(cid, 212124) >= 1 then
       doPlayerSendCancel(cid, "You can't do that while is controling a mind")
       return true     --alterado v2.5
    end
    
	 if #getCreatureSummons(cid) <= 0 then
	    if isInArray(pokeballs[btype].all, item.itemid) then
		    doTransformItem(item.uid, pokeballs[btype].on)
			 doItemSetAttribute(item.uid, "hp", 1)
			 --setPlayerGroupId(cid,1)
			 doPlayerSendCancel(cid, "[Ball-Desbloqueado] Balls Desbloqueado com Sucesso!")
			 doPlayerSendTextMessage(cid, 21, "[Ball-Desbloqueado] Balls Desbloqueado com Sucesso!")
			            doSendMagicEffect(getThingPos(cid), 29)
           doSendAnimatedText(getCreaturePosition(cid),"Unlock",math.random(1,255)) 
		    return true
		 end
    end

    local cd = getCD(item.uid, "blink", 30)
    if cd > 0 then
       setCD(item.uid, "blink", 0)
    end
    
	 local z = getCreatureSummons(cid)[1]

	 if getCreatureCondition(z, CONDITION_INVISIBLE) and not isGhostPokemon(z) then
	    return true
	 end
    doReturnPokemon(cid, z, item, effect)
elseif item.itemid == pokeballs[btype].on then
--doPlayerSendTextMessage(cid, 19, "TESTS 3!")
--setPlayerGroupId(cid,8) 

	if item.uid ~= getPlayerSlotItem(cid, CONST_SLOT_FEET).uid then
		doPlayerSendCancel(cid, "You must put your pokeball in the correct place!")
	return TRUE
	end

	local thishp = getItemAttribute(item.uid, "hp")

	if thishp <= 0 then
		if isInArray(pokeballs[btype].all, item.itemid) then
			doTransformItem(item.uid, pokeballs[btype].off)
			doItemSetAttribute(item.uid, "hp", 0)
			doPlayerSendCancel(cid, "This pokemon is fainted.")
         return true
		end
	end

	local pokemon = getItemAttribute(item.uid, "poke")

	if not pokes[pokemon] then
	   return true
	end
	
----------------------- Sistema de nao poder carregar mais que 3 pokes lvl baixo e + q 1 poke de lvl medio/alto ---------------------------------
if not isInArray({5, 6}, getPlayerGroupId(cid)) then                          --alterado v2.9 \/
   local balls = getPokeballsInContainer(getPlayerSlotItem(cid, 3).uid)
   local low = {}
   local lowPokes = {"Rattata", "Caterpie", "Weedle", "Oddish", "Pidgey", "Paras", "Poliwag", "Bellsprout", "Magikarp", "Hoppip", "Sunkern"}
   if #balls >= 1 then
      for _, uid in ipairs(balls) do
          local nome = getItemAttribute(uid, "poke")
          if not isInArray(lowPokes, pokemon) and nome == pokemon then
             return doPlayerSendTextMessage(cid, 27, "Sorry, but you can't carry two pokemons equals!")
          else
             if nome == pokemon then
                table.insert(low, nome)
             end
          end
      end
   end
if #low >= 3 then
   return doPlayerSendTextMessage(cid, 27, "Sorry, but you can't carry more than three pokemons equals of low level!")
end   
end
---------------------------------------------------------------------------------------------------------------------------------------------------

	local x = pokes[pokemon]
	local boosts = getItemAttribute(item.uid, "boost") or 0

	if getPlayerLevel(cid) + pokemonMaxLevelAbovePlayer < getItemAttribute(item.uid, "level") + boosts then
	   doPlayerSendCancel(cid, "Your pokemon's level is much higher than yours, you can't use him.")
	   return true
    end
    doSummonMonster(cid, pokemon)

	 local pk = getCreatureSummons(cid)[1]
	 if not isCreature(pk) then return true end
	 ------------------------passiva hitmonchan------------------------------
	 if isSummon(pk) then                                                  --alterado v2.8 \/
       if pokemon == "Shiny Hitmonchan" or pokemon == "Hitmonchan" then
          if not getItemAttribute(item.uid, "hands") then
             doSetItemAttribute(item.uid, "hands", 0)
          end
          local hands = getItemAttribute(item.uid, "hands")
          doSetCreatureOutfit(pk, {lookType = hitmonchans[pokemon][hands].out}, -1)
       end
    end
	-------------------------------------------------------------------------
    ---------movement magmar, jynx-------------
    if EFFECTS[getCreatureName(pk)] then             
       markPosEff(pk, getThingPos(pk))
       sendMovementEffect(pk, EFFECTS[getCreatureName(pk)], getThingPos(pk)) --alterado v2.5
    end
    --------------------------------------------------------------------------      

	 if getCreatureName(pk) == "Ditto" then

		local left = getItemAttribute(item.uid, "transLeft")
		local name = getItemAttribute(item.uid, "transName")

		if left and left > 0 then
			setPlayerStorageValue(pk, 1010, name)
			doSetCreatureOutfit(pk, {lookType = getItemAttribute(item.uid, "transOutfit")}, -1)
			addEvent(deTransform, left * 1000, pk, getItemAttribute(item.uid, "transTurn"))
			doItemSetAttribute(item.uid, "transBegin", os.clock())
		else
			setPlayerStorageValue(pk, 1010, "Ditto")
		end
	end

	if isGhostPokemon(pk) then doTeleportThing(pk, getPosByDir(getThingPos(cid), math.random(0, 7)), false) end

	doCreatureSetLookDir(pk, 2)

	adjustStatus(pk, item.uid, true, false, true)
	doAddPokemonInOwnList(cid, pokemon)

	doTransformItem(item.uid, item.itemid+1)

	local pokename = getPokeName(pk) --alterado v2.7 

	local mgo = gobackmsgs[math.random(1, #gobackmsgs)].go:gsub("doka", pokename)
	doCreatureSay(cid, mgo, TALKTYPE_SAY)
	doSendMagicEffect(getCreaturePosition(pk), effect)
	
	local nick = getItemAttribute(item.uid, "nick")
	if not nick then
		local name = getItemAttribute(item.uid, "poke")
		doCreatureSetNick(getCreatureSummons(cid)[1], name)
		else
	local level = getItemAttribute(item.uid, "level")
	doCreatureSetNick(getCreatureSummons(cid)[1], nick)
	end
	
	local pk = getCreatureSummons(cid)[1]
                local pb = getPlayerSlotItem(cid, 8).uid
                local look = getItemAttribute(pb,"addon")
                if not look then
                                doSetItemAttribute(pb,"addon",0) 

                end
                if look > 0 then
                                doSetCreatureOutfit(pk, {lookType = look}, -1)

                end
	
	if useOTClient then
	   doPlayerSendCancel(cid, '12//,show') --alterado v2.7
    end

else
    doPlayerSendCancel(cid, "This pokemon is fainted.")
end

	if useKpdoDlls then
		doUpdateMoves(cid)
	end
return true
end

 

 

post-381687-0-07917700-1454173975_thumb.png

Link para o comentário
Compartilhar em outros sites

ok

ceetros, pegou normal agr, só que deu um erro no gaback, quando eu summono o poke.

 

 

 

local EFFECTS = {
	--[OutfitID] = {Effect}
	["Magmar"] = 35,   
	["Magmortar"] = 35,   
	["Shiny Magmar"] = 35,
	["Jynx"] = 17,          --alterado v2.5
	["Shiny Jynx"] = 17,  
   ["Mamoswine"] = 205,  
   ["Piloswine"] = 205,  --alterado v2.8
   ["Swinub"] = 205,  
}

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


if getPlayerStorageValue(cid,130130) >= 1 then 
doPlayerSendTextMessage(cid, 19, "Nao Pode Dar Goback Nessa Area.")
return true
end

if exhaustion.get(cid, 6666) and exhaustion.get(cid, 6666) > 0 then return true end

if getPlayerStorageValue(cid, 17000) >= 1 or getPlayerStorageValue(cid, 17001) >= 1 or getPlayerStorageValue(cid, 63215) >= 1 
or getPlayerStorageValue(cid, 75846) >= 1 or getPlayerStorageValue(cid, 5700) >= 1  then    --alterado v2.9 <<
   return true                                                                                                                        
end

local ballName = getItemAttribute(item.uid, "poke")
local btype = getPokeballType(item.itemid)
local usando = pokeballs[btype].use

local effect = pokeballs[btype].effect
	if not effect then
		effect = 21
	end
	
unLock(item.uid) --alterado v2.8
if item.itemid == usando then
--if getPlayerGroupId == 8 then
--doPlayerSendTextMessage(cid, 19, "TESTS 1!")
--setPlayerGroupId(cid,1) 
--return true
--end  


                          
   if getPlayerStorageValue(cid, 990) == 1 then -- GYM
		doPlayerSendCancel(cid, "You can't return your pokemon during gym battles.")
	   return true
	end
	
	if #getCreatureSummons(cid) > 1 and getPlayerStorageValue(cid, 212124) <= 0 then     --alterado v2.6
       if getPlayerStorageValue(cid, 637501) == -2 or getPlayerStorageValue(cid, 637501) >= 1 then  
          BackTeam(cid)       
       end
    end 
    
    if #getCreatureSummons(cid) == 2 and getPlayerStorageValue(cid, 212124) >= 1 then
       doPlayerSendCancel(cid, "You can't do that while is controling a mind")
       return true     --alterado v2.5
    end
    
	 if #getCreatureSummons(cid) <= 0 then
	    if isInArray(pokeballs[btype].all, item.itemid) then
		    doTransformItem(item.uid, pokeballs[btype].on)
			 doItemSetAttribute(item.uid, "hp", 1)
			 --setPlayerGroupId(cid,1)
			 doPlayerSendCancel(cid, "[Ball-Desbloqueado] Balls Desbloqueado com Sucesso!")
			 doPlayerSendTextMessage(cid, 21, "[Ball-Desbloqueado] Balls Desbloqueado com Sucesso!")
			            doSendMagicEffect(getThingPos(cid), 29)
           doSendAnimatedText(getCreaturePosition(cid),"Unlock",math.random(1,255)) 
		    return true
		 end
    end

    local cd = getCD(item.uid, "blink", 30)
    if cd > 0 then
       setCD(item.uid, "blink", 0)
    end
    
	 local z = getCreatureSummons(cid)[1]

	 if getCreatureCondition(z, CONDITION_INVISIBLE) and not isGhostPokemon(z) then
	    return true
	 end
    doReturnPokemon(cid, z, item, effect)
elseif item.itemid == pokeballs[btype].on then
--doPlayerSendTextMessage(cid, 19, "TESTS 3!")
--setPlayerGroupId(cid,8) 

	if item.uid ~= getPlayerSlotItem(cid, CONST_SLOT_FEET).uid then
		doPlayerSendCancel(cid, "You must put your pokeball in the correct place!")
	return TRUE
	end

	local thishp = getItemAttribute(item.uid, "hp")

	if thishp <= 0 then
		if isInArray(pokeballs[btype].all, item.itemid) then
			doTransformItem(item.uid, pokeballs[btype].off)
			doItemSetAttribute(item.uid, "hp", 0)
			doPlayerSendCancel(cid, "This pokemon is fainted.")
         return true
		end
	end

	local pokemon = getItemAttribute(item.uid, "poke")

	if not pokes[pokemon] then
	   return true
	end
	
----------------------- Sistema de nao poder carregar mais que 3 pokes lvl baixo e + q 1 poke de lvl medio/alto ---------------------------------
if not isInArray({5, 6}, getPlayerGroupId(cid)) then                          --alterado v2.9 \/
   local balls = getPokeballsInContainer(getPlayerSlotItem(cid, 3).uid)
   local low = {}
   local lowPokes = {"Rattata", "Caterpie", "Weedle", "Oddish", "Pidgey", "Paras", "Poliwag", "Bellsprout", "Magikarp", "Hoppip", "Sunkern"}
   if #balls >= 1 then
      for _, uid in ipairs(balls) do
          local nome = getItemAttribute(uid, "poke")
          if not isInArray(lowPokes, pokemon) and nome == pokemon then
             return doPlayerSendTextMessage(cid, 27, "Sorry, but you can't carry two pokemons equals!")
          else
             if nome == pokemon then
                table.insert(low, nome)
             end
          end
      end
   end
if #low >= 3 then
   return doPlayerSendTextMessage(cid, 27, "Sorry, but you can't carry more than three pokemons equals of low level!")
end   
end
---------------------------------------------------------------------------------------------------------------------------------------------------

	local x = pokes[pokemon]
	local boosts = getItemAttribute(item.uid, "boost") or 0

	if getPlayerLevel(cid) + pokemonMaxLevelAbovePlayer < getItemAttribute(item.uid, "level") + boosts then
	   doPlayerSendCancel(cid, "Your pokemon's level is much higher than yours, you can't use him.")
	   return true
    end
    doSummonMonster(cid, pokemon)

	 local pk = getCreatureSummons(cid)[1]
	 if not isCreature(pk) then return true end
	 ------------------------passiva hitmonchan------------------------------
	 if isSummon(pk) then                                                  --alterado v2.8 \/
       if pokemon == "Shiny Hitmonchan" or pokemon == "Hitmonchan" then
          if not getItemAttribute(item.uid, "hands") then
             doSetItemAttribute(item.uid, "hands", 0)
          end
          local hands = getItemAttribute(item.uid, "hands")
          doSetCreatureOutfit(pk, {lookType = hitmonchans[pokemon][hands].out}, -1)
       end
    end
	-------------------------------------------------------------------------
    ---------movement magmar, jynx-------------
    if EFFECTS[getCreatureName(pk)] then             
       markPosEff(pk, getThingPos(pk))
       sendMovementEffect(pk, EFFECTS[getCreatureName(pk)], getThingPos(pk)) --alterado v2.5
    end
    --------------------------------------------------------------------------      

	 if getCreatureName(pk) == "Ditto" then

		local left = getItemAttribute(item.uid, "transLeft")
		local name = getItemAttribute(item.uid, "transName")

		if left and left > 0 then
			setPlayerStorageValue(pk, 1010, name)
			doSetCreatureOutfit(pk, {lookType = getItemAttribute(item.uid, "transOutfit")}, -1)
			addEvent(deTransform, left * 1000, pk, getItemAttribute(item.uid, "transTurn"))
			doItemSetAttribute(item.uid, "transBegin", os.clock())
		else
			setPlayerStorageValue(pk, 1010, "Ditto")
		end
	end

	if isGhostPokemon(pk) then doTeleportThing(pk, getPosByDir(getThingPos(cid), math.random(0, 7)), false) end

	doCreatureSetLookDir(pk, 2)

	adjustStatus(pk, item.uid, true, false, true)
	doAddPokemonInOwnList(cid, pokemon)

	doTransformItem(item.uid, item.itemid+1)

	local pokename = getPokeName(pk) --alterado v2.7 

	local mgo = gobackmsgs[math.random(1, #gobackmsgs)].go:gsub("doka", pokename)
	doCreatureSay(cid, mgo, TALKTYPE_SAY)
	doSendMagicEffect(getCreaturePosition(pk), effect)
	
	local nick = getItemAttribute(item.uid, "nick")
	if not nick then
		local name = getItemAttribute(item.uid, "poke")
		doCreatureSetNick(getCreatureSummons(cid)[1], name)
		else
	local level = getItemAttribute(item.uid, "level")
	doCreatureSetNick(getCreatureSummons(cid)[1], nick)
	end
	
	local pk = getCreatureSummons(cid)[1]
                local pb = getPlayerSlotItem(cid, 8).uid
                local look = getItemAttribute(pb,"addon")
                if not look then
                                doSetItemAttribute(pb,"addon",0) 

                end
                if look > 0 then
                                doSetCreatureOutfit(pk, {lookType = look}, -1)

                end
	
	if useOTClient then
	   doPlayerSendCancel(cid, '12//,show') --alterado v2.7
    end

else
    doPlayerSendCancel(cid, "This pokemon is fainted.")
end

	if useKpdoDlls then
		doUpdateMoves(cid)
	end
return true
end

 

 

                if not look then
                                doSetItemAttribute(pb,"addon",0) 

                end
                if look > 0 then
                                doSetCreatureOutfit(pk, {lookType = look}, -1)

                end

Deixa assim

                if look = 0 then
                                doSetItemAttribute(pb,"addon",0) 

                end
                if look > 1 then
                                doSetCreatureOutfit(pk, {lookType = look}, -1)

                end
else
Link para o comentário
Compartilhar em outros sites

                if not look then
                                doSetItemAttribute(pb,"addon",0) 

                end
                if look > 0 then
                                doSetCreatureOutfit(pk, {lookType = look}, -1)

                end

Deixa assim

                if look = 0 then
                                doSetItemAttribute(pb,"addon",0) 

                end
                if look > 1 then
                                doSetCreatureOutfit(pk, {lookType = look}, -1)

                end
else

ceetros, agr quando eu clico na ball para o poke ser summonado, n acontece nada, ele n sai da ball, nem um poke. e n da nem um erro na distro

Link para o comentário
Compartilhar em outros sites

ceetros, agr quando eu clico na ball para o poke ser summonado, n acontece nada, ele n sai da ball, nem um poke. e n da nem um erro na distro

                if look = 0 then
                                doSetItemAttribute(pb,"addon",0) 

                end
                if look > 1 then
                                doSetCreatureOutfit(pk, {lookType = look}, -1)

                end

deixa assim:

                if look > 0 then
                                doSetCreatureOutfit(pk, {lookType = look}, -1)

                end
Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...