Ir para conteúdo
  • Cadastre-se

Posts Recomendados

ENTÃO GENTE O ORDER ESTA FUNCIONANDO, POREM SE EU ESTIVER ATACANDO UM POKEMON E QUEIRA USAR O ORDER PARA QUE MEU POKEMON FIQUE DE FRENTE PARA USAR UMA HABILIDADE QUE QUE SO DE DANO EM LINHA RETA ELE NÃO SE MOVE SE EU TENTAR MANDAR PRA LONGE TAMBÉM ELE NÃO SE MOVE

DE TODO MODO SE EU COLOCAR PRA ATACAR O ORDER DEIXA DE FUNCIONAR SE EU QUIZER MOVER TENHO QUE TIRAR O ATACK POR GENTILEZA ME AJUDEM COM ISSO, EXISTEM 2 ARQUIVOS COM NOME ORDER VOU POSTA-LOS

LIB/ORDER

Spoiler

function doPushCreatureTo(uid, direction, distance, speed)   --//doPushCreature(creature,getPlayerLookDir(cid))
-- Desenvolvido por Dokmos 30/01/2009
-- Apoio Dinastias
local pos = getThingPos(uid)
local PARAM = {{1}, {500}}
local DIRECTION = {
{{0,0},{6,7},{1,3}}, {{1,1},{5,7},{0,2}}, {{2,2},{4,5},{1,3}}, {{3,3},{4,6},{0,2}},
{{4,4},{2,3}}, {{5,5}, {1,2}}, {{6,6},{0,1}}, {{7,7},{0,3}}
}
table.insert(PARAM[1], distance)
table.insert(PARAM[2], speed)

        for dvar = 1, #DIRECTION[direction+1] do
        rand = math.random(2)
        d = DIRECTION[direction+1][dvar][rand]
        dir = {x = (math.fmod(d,2)*(-(d-2))+math.floor(d/4)*math.fmod(d,2)*d-math.floor(d/4)), y = (((d-1)*(d-1-(d-1)*math.abs(d-2))*(1-math.floor(d/4)))-(math.floor(d/4)*(math.floor(d/6)*2-1)))}
        newtile = {x = (pos.x+dir.x), y = (pos.y+dir.y), z = pos.z}
                if  (getTileThingByPos(newtile).uid ~= 0) and (hasProperty(getTileThingByPos(newtile).uid,3) == FALSE) and (queryTileAddThing(uid,newtile) == 1) then break end
        rand = (math.fmod(rand,2)+1)
        d = DIRECTION[direction+1][dvar][rand]
        dir = {x = (math.fmod(d,2)*(-(d-2))+math.floor(d/4)*math.fmod(d,2)*d-math.floor(d/4)), y = (((d-1)*(d-1-(d-1)*math.abs(d-2))*(1-math.floor(d/4)))-(math.floor(d/4)*(math.floor(d/6)*2-1)))}
        newtile = {x = (pos.x+dir.x), y = (pos.y+dir.y), z = pos.z}
                if  (getTileThingByPos(newtile).uid ~= 0) and (hasProperty(getTileThingByPos(newtile).uid,3) == FALSE) and (queryTileAddThing(uid,newtile) == 1) then break end
                if (dvar == #DIRECTION[direction+1]) then
                newtile = pos
                end
        end
        
        doTeleportThing(uid, newtile, true)
        if (PARAM[1][#PARAM[1]] > 1) then
        addEvent(doPushCreature, PARAM[2][#PARAM[2]], uid, direction, (distance-1), speed)
        end     
end
--///////////////////////////////////////////////////////////////////////////////////////////////////////--
local dirpref = {
[1] =  {[NORTH] = {[1] = {NORTH}, [2] = {EAST, WEST}, [3] = {NORTHEAST, NORTHWEST}},
    [EAST] = {[1] = {EAST}, [2] = {NORTH, SOUTH}, [3] = {NORTHEAST, SOUTHEAST}},
    [SOUTH] = {[1] = {SOUTH}, [2] = {EAST, WEST}, [3] = {SOUTHEAST, SOUTHWEST}},
    [WEST] = {[1] = {WEST}, [2] = {SOUTH, NORTH}, [3] = {NORTHWEST, SOUTHWEST}},
    [NORTHEAST] = {[1] = {NORTH, EAST}, [2] = {NORTHEAST}, [3] = {SOUTH, WEST}},
    [SOUTHEAST] = {[1] = {SOUTH, EAST}, [2] = {SOUTHEAST}, [3] = {NORTH, WEST}},
    [SOUTHWEST] = {[1] = {SOUTH, WEST}, [2] = {SOUTHWEST}, [3] = {NORTH, EAST}},
    [NORTHWEST] = {[1] = {NORTH, WEST}, [2] = {NORTHWEST}, [3] = {EAST, SOUTH}}},
[2] =  {[NORTH] = {[1] = {NORTH}, [2] = {WEST, EAST}, [3] = {NORTHWEST, NORTHEAST}},
    [EAST] = {[1] = {EAST}, [2] = {SOUTH, NORTH}, [3] = {SOUTHEAST, NORTHEAST}},
    [SOUTH] = {[1] = {SOUTH}, [2] = {WEST, EAST}, [3] = {SOUTHWEST, SOUTHEAST}},
    [WEST] = {[1] = {WEST}, [2] = {NORTH, SOUTH}, [3] = {SOUTHWEST, NORTHWEST}},
    [NORTHEAST] = {[1] = {EAST, NORTH}, [2] = {NORTHEAST}, [3] = {WEST, SOUTH}},
    [SOUTHEAST] = {[1] = {EAST, SOUTH}, [2] = {SOUTHEAST}, [3] = {WEST, NORTH}},
    [SOUTHWEST] = {[1] = {WEST, SOUTH}, [2] = {SOUTHWEST}, [3] = {EAST, NORTH}},
    [NORTHWEST] = {[1] = {WEST, NORTH}, [2] = {NORTHWEST}, [3] = {SOUTH, EAST}}},
}

function doPushCreature(uid,direction,distance,time)
   if isCreature(uid) == TRUE then
      local rand = (2*math.random(0,1))-1
      local rand2 = math.random(-1,0)
      if direction == 0 then
         signal = {0,rand,-rand,rand,-rand,0,-1,-1,-1,0,0,0}
      elseif direction == 1 then
         signal = {1,1,1,0,0,0,0,rand,-rand,rand,-rand,0}
      elseif direction == 2 then
         signal = {0,rand,-rand,rand,-rand,0,1,1,1,0,0,0}
      elseif direction == 3 then
         signal = {-1,-1,-1,0,0,0,0,rand,-rand,rand,-rand,0}
      elseif direction == 4 then
         signal = {-1,rand2,(-rand2)-1,0,1,rand2+1,rand2,0}
      elseif direction == 5 then
         signal = {1,-rand2,-((-rand2)-1),0,1,rand2+1,rand2,0}
      elseif direction == 6 then
         signal = {-1,rand2,(-rand2)-1,0,-1,(-rand2)-1,rand2,0}
      else
         signal = {1,-rand2,-((-rand2)-1),0,-1,(-rand2)-1,rand2,0}
      end
      local pos = getThingPos(uid)
      nsig = #signal
      nvar = 0

      repeat
         nvar = nvar+1
         newpos = {x=pos.x+(signal[nvar]),y=pos.y+(signal[(nsig/2)+nvar]),z=pos.z}
         newtile = {x=newpos.x,y=newpos.y,z=newpos.z,stackpos=0}
      until getTileThingByPos(newtile).uid ~= 0 and hasProperty(getTileThingByPos(newtile).uid,3) == FALSE and canWalkOnPos(newtile, true, false, true, true, false) and queryTileAddThing(uid,newpos) == 1 or nvar == (nsig/2)
                                                                                                                   --alterado v1.5
      if distance == nil or distance == 1 then
         doTeleportThing(uid,newpos,TRUE)   
      else
         distance = distance-1
         doTeleportThing(uid,newpos,TRUE)
         if time ~= nil then
            addEvent(doPushCreature,time,uid,direction,distance,time)
         else
            addEvent(doPushCreature,500,uid,direction,distance,500)
         end       
      end
   end  
end

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

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

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

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

        if not finalpos then
        return false
        end

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

local random = math.random(1, 2)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

doRegainSpeed(sid)

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

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

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

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

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

 

ACTIONS/ORDER

 
Spoiler

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

if getCreatureCondition(cid, CONDITION_EXHAUST) or isWatchingTv(cid) then return true end
doAddCondition(cid, ordercondition)

local pPos = getThingPos(cid)
      pPos.stackpos = 0
local pos = getThingFromPos(pPos)
      
if isSurf(cid) or isInArray(11756, item2.itemid) or item2.itemid == 11756 or isInArray(11756, pos.itemid) or pos.itemid == 11756 or isInArray({11756, 11675, 11676, 460}, pos.itemid) then
   return doPlayerSendCancel(cid, MSG_NAO_E_POSSIVEL)
end

if item2.uid == cid then -- demound poke
    if isPlayer(item2.uid) and isInDuel(item2.uid) then
       return doPlayerSendCancel(cid, MSG_NAO_E_POSSIVEL)
    end
   if isRiderOrFlyOrSurf(cid) then 
      local ball = getPlayerSlotItem(cid, ?
            doGoPokemonInOrder(cid, ball, false)
            doRemoveCondition(cid, CONDITION_OUTFIT)
            doPlayerSay(cid, getCreatureNick(getCreatureSummons(cid)[1]) .. orderTalks["downability"].talks[math.random(#orderTalks["downability"].talks)])
            
            doRegainSpeed(cid)
            
            setPlayerStorageValue(cid, orderTalks["ride"].storage, -1)
            setPlayerStorageValue(cid, orderTalks["fly"].storage, -1)
            doPlayerSendCancel(cid, '12//,show')
      return true
   end
end
--- ride/fly retirada


if isRiderOrFlyOrSurf(cid) then
   return doPlayerSendCancel(cid, MSG_NAO_E_POSSIVEL)
end
   
if #getCreatureSummons(cid) == 0 then
  return doPlayerSendCancel(cid, "Você precisa de um pokemon para usar o order.")
end
    
local poke = getCreatureSummons(cid)[1]
local pokeName = getCreatureNick(poke)
local habilidades = getPokemonSkills(getCreatureName(poke))  
  
if item2.uid == cid then

   if isFight(cid) then  -- Edição pra ficar igual pxg.. nao dar fly ou ride com fight
       setMoveSummon(cid, false)
       addEvent(doMovePokeToPos, 5, poke, getThingPos(cid))
       return true 
   end 
   
   if isMega(poke) then
     return doPlayerSendCancel(cid, "Pokemons megas não tem habilidades de fly/ride.")
   end
 
    local pb = getPlayerSlotItem(cid, 8).uid
    
    if flyAdd then
        if getItemAttribute(pb, "addon") > 1 then
            doSetCreatureOutfit(pk, {lookType = getItemAttribute (pb, "addon")}, -1)
        end
    elseif rideAdd then
        if getItemAttribute(pb, "addon") > 1 then
            doSetCreatureOutfit(pk, {lookType = getItemAttribute (pb, "addon")}, -1)
        end
    end
   
    if isPlayer(item2.uid) and (isInDuel(item2.uid) or getCreatureSkullType(item2.uid) == SKULL_WHITE or getCreatureSkullType(item2.uid) == 1 or getCreatureSkullType(item2.uid) == 2) then
       return doPlayerSendCancel(cid, MSG_NAO_E_POSSIVEL)
    end
   
   if not (getThingPos(poke) or getThingPos(item2.uid)) then -- correção de um erro.
      return true
   end
   local dist = getDistanceBetween(getThingPos(poke), getThingPos(item2.uid))   
   --- ride
   if string.find(habilidades, "ride") then
      doPlayerSay(cid, pokeName..orderTalks["ride"].talks[math.random(#orderTalks["ride"].talks)])
      
      if dist == 1 then
        doUp(cid, poke, "ride")
      return true
      end
      
      setMoveSummon(cid, false)
      addEvent(doMovePokeToPos, 200, poke, topos)
      setPlayerStorageValue(poke, orderTalks["ride"].storage, 1)
      
   elseif string.find(habilidades, "fly") or string.find(habilidades, "levitate") then
   
       if string.find(habilidades, "levitate") then
          doPlayerSay(cid, pokeName..orderTalks["levitate"].talks[math.random(#orderTalks["levitate"].talks)])
       else
          doPlayerSay(cid, pokeName..orderTalks["fly"].talks[math.random(#orderTalks["fly"].talks)])
       end
       
       if dist == 1 then
        doUp(cid, poke, "fly")
       return true
       end
       
      setMoveSummon(cid, false)
      addEvent(doMovePokeToPos, 200, poke, topos)
      setPlayerStorageValue(poke, orderTalks["fly"].storage, 1)
   end  
----------------- Ditto ----------------- 
elseif isMonster(item2.uid) and isInArray({"Shiny Ditto", "Ditto"}, getItemAttribute(getPlayerSlotItem(cid, 8).uid, "poke"))  then
       local listaproibidos = {"Mew", "Mewtwo"}
       if isInArray(listaproibidos, getCreatureName(item2.uid)) then 
            doSendMsg(cid, "Seu ditto não pode se transformar nesse pokemon.")
         return true
       end  
       
       if isPlayer(item2.uid) and isInDuel(item2.uid) then
         return doPlayerSendCancel(cid, MSG_NAO_E_POSSIVEL)
       end
       
       local listaproibidos = {"Mew", "Mewtwo", "groudon", "suicune", "raiko", "entei", "moltres", "articuno", "zapdos", "rayquaza"}
       if isInArray(listaproibidos, getCreatureName(item2.uid)) then 
            doSendMsg(cid, "Seu ditto não pode se transformar nesse pokemon.")
         return true
       end
       
       if isPlayerSummon(cid, item2.uid) and isInArray({"Shiny Ditto", "Ditto"}, getItemAttribute(getPlayerSlotItem(cid, 8).uid, "poke")) and not isInArray({"Shiny Ditto", "Ditto"}, getItemAttribute(getPlayerSlotItem(cid, 8).uid, "copyName")) then 
       
          doCopyPokemon(poke, getItemAttribute(getPlayerSlotItem(cid, 8).uid, "poke"), true)
          doPlayerSay(cid, getCreatureNick(getCreatureSummons(cid)[1])..", reverta-se.")
          return true
          
       elseif not isPlayerSummon(cid, item2.uid) and getPokeName(item2.uid) ~= getPokeName(poke) then    

        if isSummon(item2.uid) then
           if getPlayerSlotItem(getCreatureMaster(item2.uid), 8).uid ~= 0 and isInArray({"Shiny Ditto", "Ditto"}, getItemAttribute(getPlayerSlotItem(getCreatureMaster(item2.uid), 8).uid, "poke")) then
              doSendMsg(cid, "Você não pode fazer uma copia de um outro ditto.")
              return true 
           end
        end
           
       local thingName = doCorrectString(getCreatureName(item2.uid))
                if pokes[thingName].level > getPlayerLevel(cid) then
                    doSendMsg(cid, "Você não tem level para copiar este pokémon.")
                    return true 
                end
                 doCopyPokemon(poke, thingName, true)
                 return true 
                 
       end
                 
      
----------------- Mover ----------------- 
elseif not isCreature(item2.uid) then
    
    setMoveSummon(cid, false)
    doEreaseUsingOrder(poke)
    local oldTopos = getThingPos(item2.uid)
    local oldTopos_2 = topos
    local x, y = 0, 0
         
    if (topos.x - getThingPos(poke).x)  > 0 then
       topos.x = topos.x +1
    elseif (topos.x - getThingPos(poke).x)  < 0 then
       topos.x = topos.x -1
    end
    if (topos.y - getThingPos(poke).y)  > 0 then
       topos.y = topos.y +1    
    elseif (topos.y - getThingPos(poke).y)  < 0 then
       topos.y = topos.y -1
    end  
    
    
    
    setPlayerStorageValue(poke, 505, getThingPos(cid).x)
    setPlayerStorageValue(poke, 506, getThingPos(cid).y)
    
    addEvent(doMovePokeToPos, 5, poke, topos)
    doWalkAgain(poke)
    
    
    ----- Edições dig/cut/rock smash/headbutt/blink
    local buracos = {468, 481, 483} 
    local arvores = {2767, 2768}    
    local pedras = {1285, 3634, 3632, 3667}  
    local headbutt = {2707}   

    if item2.uid == 0 then return true end
    local pos = getThingPos(item2.uid)
    local dist = getDistanceBetween(getThingPos(poke), getThingPos(item2.uid)) 
    
       
       
          if isInArray(buracos, item2.itemid) then   ----------------------- DIG
          
             if not string.find(habilidades, "dig") then
                return doPlayerSendCancel(cid, "Esse pokemon não tem a habilidade de cavar.")
             end
             
             doMarkedPos(poke, getThingPos(item2.uid))
             doEreaseUsingOrder(cid)
             setPlayerStorageValue(poke, orderTalks["dig"].storage, 1)
             setMoveSummon(cid, false)
             if dist == 1 then
                recheck(poke, "cut", getThingPos(item2.uid))
             else 
                addEvent(doMovePokeToPos, 200, poke, topos)
             end
             doPlayerSay(cid, getCreatureNick(poke)..orderTalks["dig"].talks[math.random(#orderTalks["dig"].talks)])
             
             return true
          elseif isInArray(arvores, item2.itemid) then   ----------------------- CUT
          
             if not string.find(habilidades, "cut") then
                return doPlayerSendCancel(cid, "Esse pokemon não tem a habilidade de cortar.")
             end
             
                doMarkedPos(poke, getThingPos(item2.uid))
                doEreaseUsingOrder(cid)
                setPlayerStorageValue(poke, orderTalks["cut"].storage, 1)
                setMoveSummon(cid, false)
                if dist == 1 then
                  addEvent(recheck, (1000 - (2.3*getCreatureSpeed(poke))) * dist, poke, "cut", getThingPos(item2.uid))
                else 
                  addEvent(doMovePokeToPos, 200, poke, topos)
                end
                doPlayerSay(cid, getCreatureNick(poke)..orderTalks["cut"].talks[math.random(#orderTalks["cut"].talks)])
                return true
          elseif isInArray(pedras, item2.itemid) then   ----------------------- ROCK
          
             if not string.find(habilidades, "rock smash") then
                return doPlayerSendCancel(cid, "Esse pokemon não tem a habilidade de quebrar.")
             end
             
             local pos = getThingPos(item2.uid)
                doMarkedPos(poke, getThingPos(item2.uid))
                doEreaseUsingOrder(cid)
                setPlayerStorageValue(poke, orderTalks["rock"].storage, 1)
                setMoveSummon(cid, false)
                if dist == 1 then
                  addEvent(recheck, (1000 - (2.3*getCreatureSpeed(poke))) * dist, poke, "rock", getThingPos(item2.uid))
                else 
                  addEvent(doMovePokeToPos, 200, poke, topos)
                end
                doPlayerSay(cid, getCreatureNick(poke)..orderTalks["rock"].talks[math.random(#orderTalks["rock"].talks)])
                return true
                
          elseif isInArray(headbutt, item2.itemid) then   ----------------------- HEAD
          
             if not string.find(habilidades, "headbutt") then
                return doPlayerSendCancel(cid, "Esse pokemon nao tem a habilidade de balancar Arvores.")
             end
             
            local pos = getThingPos(item2.uid)
                doMarkedPos(poke, getThingPos(item2.uid))
                doEreaseUsingOrder(cid)
                setPlayerStorageValue(poke, orderTalks["headbutt"].storage, 1)
                setMoveSummon(cid, false)
                if dist <= 1 then
                  addEvent(recheck, (1000 - (2.3*getCreatureSpeed(poke))) * dist, poke, "headbutt", getThingPos(item2.uid))
                else 
                  addEvent(doMovePokeToPos, 200, poke, topos)
                end
                doPlayerSay(cid, getCreatureNick(poke)..orderTalks["headbutt"].talks[math.random(#orderTalks["headbutt"].talks)])
                
             return true
          end
          
          if string.find(habilidades, "blink") then
                  if os.time() < getPlayerStorageValue(poke, storages.blink) and not isGod(cid) then
                     doPlayerSay(cid, getCreatureNick(poke)..orderTalks["move"].talks[math.random(#orderTalks["move"].talks)])
                     return true
                  elseif (getCreatureSkullType(cid) == SKULL_WHITE or isInDuel(cid)) and getTileInfo(getThingPos(item2.uid)).protection then 
                     doSendMsg(cid, "Você não pode usar blink em protection zone quando está em duelo.")
                     return true
                  end
                       setPlayerStorageValue(poke, storages.blink, os.time()+7)
                       doSendMagicEffect(getThingPos(poke), 134)  
                       doTeleportThing(poke, getThingPos(item2.uid), false)
                       doSendMagicEffect(getThingPos(poke), 134)
                       doPlayerSay(cid, getCreatureNick(poke)..orderTalks["blink"].talks[math.random(#orderTalks["blink"].talks)])
          
              return true
          end
         
         doPlayerSay(cid, getCreatureNick(poke)..orderTalks["move"].talks[math.random(#orderTalks["move"].talks)])
    
end    
    return true
end

function isGhost(cid)
local hab = getPokemonSkills(string.lower(getPokeName(cid)))
   if string.find(hab, "ghost")  then
      return true
   end
  return false
end
 

 

Link para o post
Compartilhar em outros sites

Qual base/distro você está utilizando? DxP?

Contribuições:
 

=> Distribuições/Servidores

  1. [8.60] The Forgotten Server 1.3 (COMPILADO WIN x64)

 

=> Scripts/Códigos/Tutoriais

  1. Pokemon pescado aparece em volta do seu pokemon
  2. [Gesior]Dobrar pontos PagSeguro a partir de x valor doado

 

 Gostou de alguma contribuição? Rep +?

Link para o post
Compartilhar em outros sites
Em 13/10/2019 em 07:24, Rayo disse:

Qual base/distro você está utilizando? DxP?

 

3,6 Pokémon Mythology (V3.1) aparentemente é sim a mesma source do DXP

Editado por wevertonvrb (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
7 minutos atrás, wevertonvrb disse:

@Vodkart poderia dar uma força aqui por favor sei q n é sua area mas pra quem sabe n deve ser algo difícil obg desde ja

 

Alguma coisa da source foi editada, quando é bug chato assim é melhor procurar outra source, muita gente edita essas coisas e posta só de sacanagem.
Deve ser alguma função de Summon Atk

Ou talvez alguém tentou colocar a função follow attack e ficou pelas metades (Seguir o alvo ao atacar)

Link para o post
Compartilhar em outros sites
14 horas atrás, braisvilela disse:

Alguma coisa da source foi editada, quando é bug chato assim é melhor procurar outra source, muita gente edita essas coisas e posta só de sacanagem.
Deve ser alguma função de Summon Atk

Ou talvez alguém tentou colocar a função follow attack e ficou pelas metades (Seguir o alvo ao atacar)

 

poderia me dizer onde na source eu corrijo isso por favor?? obs: eles seguem o alvo normamente apenas o order n funciona obs: o script tem uma linha que fala algo sobre order com battle
que foi colocado para não poder usar fly, ride com battle acredito que isso possa estar dando conflito

Link para o post
Compartilhar em outros sites
Em 11/10/2019 em 18:13, wevertonvrb disse:

ENTÃO GENTE O ORDER ESTA FUNCIONANDO, POREM SE EU ESTIVER ATACANDO UM POKEMON E QUEIRA USAR O ORDER PARA QUE MEU POKEMON FIQUE DE FRENTE PARA USAR UMA HABILIDADE QUE QUE SO DE DANO EM LINHA RETA ELE NÃO SE MOVE SE EU TENTAR MANDAR PRA LONGE TAMBÉM ELE NÃO SE MOVE

DE TODO MODO SE EU COLOCAR PRA ATACAR O ORDER DEIXA DE FUNCIONAR SE EU QUIZER MOVER TENHO QUE TIRAR O ATACK POR GENTILEZA ME AJUDEM COM ISSO, EXISTEM 2 ARQUIVOS COM NOME ORDER VOU POSTA-LOS

LIB/ORDER

  Mostrar conteúdo oculto

function doPushCreatureTo(uid, direction, distance, speed)   --//doPushCreature(creature,getPlayerLookDir(cid))
-- Desenvolvido por Dokmos 30/01/2009
-- Apoio Dinastias
local pos = getThingPos(uid)
local PARAM = {{1}, {500}}
local DIRECTION = {
{{0,0},{6,7},{1,3}}, {{1,1},{5,7},{0,2}}, {{2,2},{4,5},{1,3}}, {{3,3},{4,6},{0,2}},
{{4,4},{2,3}}, {{5,5}, {1,2}}, {{6,6},{0,1}}, {{7,7},{0,3}}
}
table.insert(PARAM[1], distance)
table.insert(PARAM[2], speed)

        for dvar = 1, #DIRECTION[direction+1] do
        rand = math.random(2)
        d = DIRECTION[direction+1][dvar][rand]
        dir = {x = (math.fmod(d,2)*(-(d-2))+math.floor(d/4)*math.fmod(d,2)*d-math.floor(d/4)), y = (((d-1)*(d-1-(d-1)*math.abs(d-2))*(1-math.floor(d/4)))-(math.floor(d/4)*(math.floor(d/6)*2-1)))}
        newtile = {x = (pos.x+dir.x), y = (pos.y+dir.y), z = pos.z}
                if  (getTileThingByPos(newtile).uid ~= 0) and (hasProperty(getTileThingByPos(newtile).uid,3) == FALSE) and (queryTileAddThing(uid,newtile) == 1) then break end
        rand = (math.fmod(rand,2)+1)
        d = DIRECTION[direction+1][dvar][rand]
        dir = {x = (math.fmod(d,2)*(-(d-2))+math.floor(d/4)*math.fmod(d,2)*d-math.floor(d/4)), y = (((d-1)*(d-1-(d-1)*math.abs(d-2))*(1-math.floor(d/4)))-(math.floor(d/4)*(math.floor(d/6)*2-1)))}
        newtile = {x = (pos.x+dir.x), y = (pos.y+dir.y), z = pos.z}
                if  (getTileThingByPos(newtile).uid ~= 0) and (hasProperty(getTileThingByPos(newtile).uid,3) == FALSE) and (queryTileAddThing(uid,newtile) == 1) then break end
                if (dvar == #DIRECTION[direction+1]) then
                newtile = pos
                end
        end
        
        doTeleportThing(uid, newtile, true)
        if (PARAM[1][#PARAM[1]] > 1) then
        addEvent(doPushCreature, PARAM[2][#PARAM[2]], uid, direction, (distance-1), speed)
        end     
end
--///////////////////////////////////////////////////////////////////////////////////////////////////////--
local dirpref = {
[1] =  {[NORTH] = {[1] = {NORTH}, [2] = {EAST, WEST}, [3] = {NORTHEAST, NORTHWEST}},
    [EAST] = {[1] = {EAST}, [2] = {NORTH, SOUTH}, [3] = {NORTHEAST, SOUTHEAST}},
    [SOUTH] = {[1] = {SOUTH}, [2] = {EAST, WEST}, [3] = {SOUTHEAST, SOUTHWEST}},
    [WEST] = {[1] = {WEST}, [2] = {SOUTH, NORTH}, [3] = {NORTHWEST, SOUTHWEST}},
    [NORTHEAST] = {[1] = {NORTH, EAST}, [2] = {NORTHEAST}, [3] = {SOUTH, WEST}},
    [SOUTHEAST] = {[1] = {SOUTH, EAST}, [2] = {SOUTHEAST}, [3] = {NORTH, WEST}},
    [SOUTHWEST] = {[1] = {SOUTH, WEST}, [2] = {SOUTHWEST}, [3] = {NORTH, EAST}},
    [NORTHWEST] = {[1] = {NORTH, WEST}, [2] = {NORTHWEST}, [3] = {EAST, SOUTH}}},
[2] =  {[NORTH] = {[1] = {NORTH}, [2] = {WEST, EAST}, [3] = {NORTHWEST, NORTHEAST}},
    [EAST] = {[1] = {EAST}, [2] = {SOUTH, NORTH}, [3] = {SOUTHEAST, NORTHEAST}},
    [SOUTH] = {[1] = {SOUTH}, [2] = {WEST, EAST}, [3] = {SOUTHWEST, SOUTHEAST}},
    [WEST] = {[1] = {WEST}, [2] = {NORTH, SOUTH}, [3] = {SOUTHWEST, NORTHWEST}},
    [NORTHEAST] = {[1] = {EAST, NORTH}, [2] = {NORTHEAST}, [3] = {WEST, SOUTH}},
    [SOUTHEAST] = {[1] = {EAST, SOUTH}, [2] = {SOUTHEAST}, [3] = {WEST, NORTH}},
    [SOUTHWEST] = {[1] = {WEST, SOUTH}, [2] = {SOUTHWEST}, [3] = {EAST, NORTH}},
    [NORTHWEST] = {[1] = {WEST, NORTH}, [2] = {NORTHWEST}, [3] = {SOUTH, EAST}}},
}

function doPushCreature(uid,direction,distance,time)
   if isCreature(uid) == TRUE then
      local rand = (2*math.random(0,1))-1
      local rand2 = math.random(-1,0)
      if direction == 0 then
         signal = {0,rand,-rand,rand,-rand,0,-1,-1,-1,0,0,0}
      elseif direction == 1 then
         signal = {1,1,1,0,0,0,0,rand,-rand,rand,-rand,0}
      elseif direction == 2 then
         signal = {0,rand,-rand,rand,-rand,0,1,1,1,0,0,0}
      elseif direction == 3 then
         signal = {-1,-1,-1,0,0,0,0,rand,-rand,rand,-rand,0}
      elseif direction == 4 then
         signal = {-1,rand2,(-rand2)-1,0,1,rand2+1,rand2,0}
      elseif direction == 5 then
         signal = {1,-rand2,-((-rand2)-1),0,1,rand2+1,rand2,0}
      elseif direction == 6 then
         signal = {-1,rand2,(-rand2)-1,0,-1,(-rand2)-1,rand2,0}
      else
         signal = {1,-rand2,-((-rand2)-1),0,-1,(-rand2)-1,rand2,0}
      end
      local pos = getThingPos(uid)
      nsig = #signal
      nvar = 0

      repeat
         nvar = nvar+1
         newpos = {x=pos.x+(signal[nvar]),y=pos.y+(signal[(nsig/2)+nvar]),z=pos.z}
         newtile = {x=newpos.x,y=newpos.y,z=newpos.z,stackpos=0}
      until getTileThingByPos(newtile).uid ~= 0 and hasProperty(getTileThingByPos(newtile).uid,3) == FALSE and canWalkOnPos(newtile, true, false, true, true, false) and queryTileAddThing(uid,newpos) == 1 or nvar == (nsig/2)
                                                                                                                   --alterado v1.5
      if distance == nil or distance == 1 then
         doTeleportThing(uid,newpos,TRUE)   
      else
         distance = distance-1
         doTeleportThing(uid,newpos,TRUE)
         if time ~= nil then
            addEvent(doPushCreature,time,uid,direction,distance,time)
         else
            addEvent(doPushCreature,500,uid,direction,distance,500)
         end       
      end
   end  
end

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

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

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

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

        if not finalpos then
        return false
        end

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

local random = math.random(1, 2)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

doRegainSpeed(sid)

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

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

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

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

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

 

ACTIONS/ORDER

  Mostrar conteúdo oculto
  Mostrar conteúdo oculto

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

if getCreatureCondition(cid, CONDITION_EXHAUST) or isWatchingTv(cid) then return true end
doAddCondition(cid, ordercondition)

local pPos = getThingPos(cid)
      pPos.stackpos = 0
local pos = getThingFromPos(pPos)
      
if isSurf(cid) or isInArray(11756, item2.itemid) or item2.itemid == 11756 or isInArray(11756, pos.itemid) or pos.itemid == 11756 or isInArray({11756, 11675, 11676, 460}, pos.itemid) then
   return doPlayerSendCancel(cid, MSG_NAO_E_POSSIVEL)
end

if item2.uid == cid then -- demound poke
    if isPlayer(item2.uid) and isInDuel(item2.uid) then
       return doPlayerSendCancel(cid, MSG_NAO_E_POSSIVEL)
    end
   if isRiderOrFlyOrSurf(cid) then 
      local ball = getPlayerSlotItem(cid, ?
            doGoPokemonInOrder(cid, ball, false)
            doRemoveCondition(cid, CONDITION_OUTFIT)
            doPlayerSay(cid, getCreatureNick(getCreatureSummons(cid)[1]) .. orderTalks["downability"].talks[math.random(#orderTalks["downability"].talks)])
            
            doRegainSpeed(cid)
            
            setPlayerStorageValue(cid, orderTalks["ride"].storage, -1)
            setPlayerStorageValue(cid, orderTalks["fly"].storage, -1)
            doPlayerSendCancel(cid, '12//,show')
      return true
   end
end
--- ride/fly retirada


if isRiderOrFlyOrSurf(cid) then
   return doPlayerSendCancel(cid, MSG_NAO_E_POSSIVEL)
end
   
if #getCreatureSummons(cid) == 0 then
  return doPlayerSendCancel(cid, "Você precisa de um pokemon para usar o order.")
end
    
local poke = getCreatureSummons(cid)[1]
local pokeName = getCreatureNick(poke)
local habilidades = getPokemonSkills(getCreatureName(poke))  
  
if item2.uid == cid then

   if isFight(cid) then  -- Edição pra ficar igual pxg.. nao dar fly ou ride com fight
       setMoveSummon(cid, false)
       addEvent(doMovePokeToPos, 5, poke, getThingPos(cid))
       return true 
   end 
   
   if isMega(poke) then
     return doPlayerSendCancel(cid, "Pokemons megas não tem habilidades de fly/ride.")
   end
 
    local pb = getPlayerSlotItem(cid, 8).uid
    
    if flyAdd then
        if getItemAttribute(pb, "addon") > 1 then
            doSetCreatureOutfit(pk, {lookType = getItemAttribute (pb, "addon")}, -1)
        end
    elseif rideAdd then
        if getItemAttribute(pb, "addon") > 1 then
            doSetCreatureOutfit(pk, {lookType = getItemAttribute (pb, "addon")}, -1)
        end
    end
   
    if isPlayer(item2.uid) and (isInDuel(item2.uid) or getCreatureSkullType(item2.uid) == SKULL_WHITE or getCreatureSkullType(item2.uid) == 1 or getCreatureSkullType(item2.uid) == 2) then
       return doPlayerSendCancel(cid, MSG_NAO_E_POSSIVEL)
    end
   
   if not (getThingPos(poke) or getThingPos(item2.uid)) then -- correção de um erro.
      return true
   end
   local dist = getDistanceBetween(getThingPos(poke), getThingPos(item2.uid))   
   --- ride
   if string.find(habilidades, "ride") then
      doPlayerSay(cid, pokeName..orderTalks["ride"].talks[math.random(#orderTalks["ride"].talks)])
      
      if dist == 1 then
        doUp(cid, poke, "ride")
      return true
      end
      
      setMoveSummon(cid, false)
      addEvent(doMovePokeToPos, 200, poke, topos)
      setPlayerStorageValue(poke, orderTalks["ride"].storage, 1)
      
   elseif string.find(habilidades, "fly") or string.find(habilidades, "levitate") then
   
       if string.find(habilidades, "levitate") then
          doPlayerSay(cid, pokeName..orderTalks["levitate"].talks[math.random(#orderTalks["levitate"].talks)])
       else
          doPlayerSay(cid, pokeName..orderTalks["fly"].talks[math.random(#orderTalks["fly"].talks)])
       end
       
       if dist == 1 then
        doUp(cid, poke, "fly")
       return true
       end
       
      setMoveSummon(cid, false)
      addEvent(doMovePokeToPos, 200, poke, topos)
      setPlayerStorageValue(poke, orderTalks["fly"].storage, 1)
   end  
----------------- Ditto ----------------- 
elseif isMonster(item2.uid) and isInArray({"Shiny Ditto", "Ditto"}, getItemAttribute(getPlayerSlotItem(cid, 8).uid, "poke"))  then
       local listaproibidos = {"Mew", "Mewtwo"}
       if isInArray(listaproibidos, getCreatureName(item2.uid)) then 
            doSendMsg(cid, "Seu ditto não pode se transformar nesse pokemon.")
         return true
       end  
       
       if isPlayer(item2.uid) and isInDuel(item2.uid) then
         return doPlayerSendCancel(cid, MSG_NAO_E_POSSIVEL)
       end
       
       local listaproibidos = {"Mew", "Mewtwo", "groudon", "suicune", "raiko", "entei", "moltres", "articuno", "zapdos", "rayquaza"}
       if isInArray(listaproibidos, getCreatureName(item2.uid)) then 
            doSendMsg(cid, "Seu ditto não pode se transformar nesse pokemon.")
         return true
       end
       
       if isPlayerSummon(cid, item2.uid) and isInArray({"Shiny Ditto", "Ditto"}, getItemAttribute(getPlayerSlotItem(cid, 8).uid, "poke")) and not isInArray({"Shiny Ditto", "Ditto"}, getItemAttribute(getPlayerSlotItem(cid, 8).uid, "copyName")) then 
       
          doCopyPokemon(poke, getItemAttribute(getPlayerSlotItem(cid, 8).uid, "poke"), true)
          doPlayerSay(cid, getCreatureNick(getCreatureSummons(cid)[1])..", reverta-se.")
          return true
          
       elseif not isPlayerSummon(cid, item2.uid) and getPokeName(item2.uid) ~= getPokeName(poke) then    

        if isSummon(item2.uid) then
           if getPlayerSlotItem(getCreatureMaster(item2.uid), 8).uid ~= 0 and isInArray({"Shiny Ditto", "Ditto"}, getItemAttribute(getPlayerSlotItem(getCreatureMaster(item2.uid), 8).uid, "poke")) then
              doSendMsg(cid, "Você não pode fazer uma copia de um outro ditto.")
              return true 
           end
        end
           
       local thingName = doCorrectString(getCreatureName(item2.uid))
                if pokes[thingName].level > getPlayerLevel(cid) then
                    doSendMsg(cid, "Você não tem level para copiar este pokémon.")
                    return true 
                end
                 doCopyPokemon(poke, thingName, true)
                 return true 
                 
       end
                 
      
----------------- Mover ----------------- 
elseif not isCreature(item2.uid) then
    
    setMoveSummon(cid, false)
    doEreaseUsingOrder(poke)
    local oldTopos = getThingPos(item2.uid)
    local oldTopos_2 = topos
    local x, y = 0, 0
         
    if (topos.x - getThingPos(poke).x)  > 0 then
       topos.x = topos.x +1
    elseif (topos.x - getThingPos(poke).x)  < 0 then
       topos.x = topos.x -1
    end
    if (topos.y - getThingPos(poke).y)  > 0 then
       topos.y = topos.y +1    
    elseif (topos.y - getThingPos(poke).y)  < 0 then
       topos.y = topos.y -1
    end  
    
    
    
    setPlayerStorageValue(poke, 505, getThingPos(cid).x)
    setPlayerStorageValue(poke, 506, getThingPos(cid).y)
    
    addEvent(doMovePokeToPos, 5, poke, topos)
    doWalkAgain(poke)
    
    
    ----- Edições dig/cut/rock smash/headbutt/blink
    local buracos = {468, 481, 483} 
    local arvores = {2767, 2768}    
    local pedras = {1285, 3634, 3632, 3667}  
    local headbutt = {2707}   

    if item2.uid == 0 then return true end
    local pos = getThingPos(item2.uid)
    local dist = getDistanceBetween(getThingPos(poke), getThingPos(item2.uid)) 
    
       
       
          if isInArray(buracos, item2.itemid) then   ----------------------- DIG
          
             if not string.find(habilidades, "dig") then
                return doPlayerSendCancel(cid, "Esse pokemon não tem a habilidade de cavar.")
             end
             
             doMarkedPos(poke, getThingPos(item2.uid))
             doEreaseUsingOrder(cid)
             setPlayerStorageValue(poke, orderTalks["dig"].storage, 1)
             setMoveSummon(cid, false)
             if dist == 1 then
                recheck(poke, "cut", getThingPos(item2.uid))
             else 
                addEvent(doMovePokeToPos, 200, poke, topos)
             end
             doPlayerSay(cid, getCreatureNick(poke)..orderTalks["dig"].talks[math.random(#orderTalks["dig"].talks)])
             
             return true
          elseif isInArray(arvores, item2.itemid) then   ----------------------- CUT
          
             if not string.find(habilidades, "cut") then
                return doPlayerSendCancel(cid, "Esse pokemon não tem a habilidade de cortar.")
             end
             
                doMarkedPos(poke, getThingPos(item2.uid))
                doEreaseUsingOrder(cid)
                setPlayerStorageValue(poke, orderTalks["cut"].storage, 1)
                setMoveSummon(cid, false)
                if dist == 1 then
                  addEvent(recheck, (1000 - (2.3*getCreatureSpeed(poke))) * dist, poke, "cut", getThingPos(item2.uid))
                else 
                  addEvent(doMovePokeToPos, 200, poke, topos)
                end
                doPlayerSay(cid, getCreatureNick(poke)..orderTalks["cut"].talks[math.random(#orderTalks["cut"].talks)])
                return true
          elseif isInArray(pedras, item2.itemid) then   ----------------------- ROCK
          
             if not string.find(habilidades, "rock smash") then
                return doPlayerSendCancel(cid, "Esse pokemon não tem a habilidade de quebrar.")
             end
             
             local pos = getThingPos(item2.uid)
                doMarkedPos(poke, getThingPos(item2.uid))
                doEreaseUsingOrder(cid)
                setPlayerStorageValue(poke, orderTalks["rock"].storage, 1)
                setMoveSummon(cid, false)
                if dist == 1 then
                  addEvent(recheck, (1000 - (2.3*getCreatureSpeed(poke))) * dist, poke, "rock", getThingPos(item2.uid))
                else 
                  addEvent(doMovePokeToPos, 200, poke, topos)
                end
                doPlayerSay(cid, getCreatureNick(poke)..orderTalks["rock"].talks[math.random(#orderTalks["rock"].talks)])
                return true
                
          elseif isInArray(headbutt, item2.itemid) then   ----------------------- HEAD
          
             if not string.find(habilidades, "headbutt") then
                return doPlayerSendCancel(cid, "Esse pokemon nao tem a habilidade de balancar Arvores.")
             end
             
            local pos = getThingPos(item2.uid)
                doMarkedPos(poke, getThingPos(item2.uid))
                doEreaseUsingOrder(cid)
                setPlayerStorageValue(poke, orderTalks["headbutt"].storage, 1)
                setMoveSummon(cid, false)
                if dist <= 1 then
                  addEvent(recheck, (1000 - (2.3*getCreatureSpeed(poke))) * dist, poke, "headbutt", getThingPos(item2.uid))
                else 
                  addEvent(doMovePokeToPos, 200, poke, topos)
                end
                doPlayerSay(cid, getCreatureNick(poke)..orderTalks["headbutt"].talks[math.random(#orderTalks["headbutt"].talks)])
                
             return true
          end
          
          if string.find(habilidades, "blink") then
                  if os.time() < getPlayerStorageValue(poke, storages.blink) and not isGod(cid) then
                     doPlayerSay(cid, getCreatureNick(poke)..orderTalks["move"].talks[math.random(#orderTalks["move"].talks)])
                     return true
                  elseif (getCreatureSkullType(cid) == SKULL_WHITE or isInDuel(cid)) and getTileInfo(getThingPos(item2.uid)).protection then 
                     doSendMsg(cid, "Você não pode usar blink em protection zone quando está em duelo.")
                     return true
                  end
                       setPlayerStorageValue(poke, storages.blink, os.time()+7)
                       doSendMagicEffect(getThingPos(poke), 134)  
                       doTeleportThing(poke, getThingPos(item2.uid), false)
                       doSendMagicEffect(getThingPos(poke), 134)
                       doPlayerSay(cid, getCreatureNick(poke)..orderTalks["blink"].talks[math.random(#orderTalks["blink"].talks)])
          
              return true
          end
         
         doPlayerSay(cid, getCreatureNick(poke)..orderTalks["move"].talks[math.random(#orderTalks["move"].talks)])
    
end    
    return true
end

function isGhost(cid)
local hab = getPokemonSkills(string.lower(getPokeName(cid)))
   if string.find(hab, "ghost")  then
      return true
   end
  return false
end
 

 

 

Um Print do momento exato do erro seria bom 

 

 

1465691620_TwyIHBJ(2).png.61e5ef8e0cd4a73e66aa174832d027ae.png

 

Site

https://pokezbr.com/

Fã Page

https://facebook.com/pokezbr

Youtube

https://www.youtube.com/channel/UCCGEYknwLtDfyoah-jiNfsA

1465691620_TwyIHBJ(2).png.61e5ef8e0cd4a73e66aa174832d027ae.png

Eu sou:

Scripter: 25%

Mapper: 85%

Programador: 40%

Website : 36%

1465691620_TwyIHBJ(2).png.61e5ef8e0cd4a73e66aa174832d027ae.png

 

Link para o post
Compartilhar em outros sites
30 minutos atrás, wevertonvrb disse:

poderia me dizer onde na source eu corrijo isso por favor?? obs: eles seguem o alvo normamente apenas o order n funciona obs: o script tem uma linha que fala algo sobre order com battle
que foi colocado para não poder usar fly, ride com battle acredito que isso possa estar dando conflito

 

Amigo usa a DXP HUATSON V3, essa mythology foi editada com vários bugs.

Obs: Quando for usar a HUATSON com XAMPP, tem que baixar XAMPP antigo... Ou então arrumar outro site pra base.

Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.


  • Conteúdo Similar

    • Por cloudrun2023
      CloudRun - Sua Melhor Escolha para Hospedagem de OTServer!
      Você está procurando a solução definitiva para hospedar seu OTServer com desempenho imbatível e segurança inigualável? Não procure mais! Apresentamos a CloudRun, sua parceira confiável em serviços de hospedagem na nuvem.
       
      Recursos Exclusivos - Proteção DDoS Avançada:
      Mantenha seu OTServer online e seguro com nossa robusta proteção DDoS, garantindo uma experiência de jogo ininterrupta para seus jogadores.
       
      Servidores Ryzen 7 Poderosos: Desfrute do poder de processamento superior dos servidores Ryzen 7 para garantir um desempenho excepcional do seu OTServer. Velocidade e estabilidade garantidas!
       
      Armazenamento NVMe de Alta Velocidade:
      Reduza o tempo de carregamento do jogo com nosso armazenamento NVMe ultrarrápido. Seus jogadores vão adorar a rapidez com que podem explorar o mundo do seu OTServer.
       
      Uplink de até 1GB:
      Oferecemos uma conexão de alta velocidade com até 1GB de largura de banda, garantindo uma experiência de jogo suave e livre de lag para todos os seus jogadores, mesmo nos momentos de pico.
       
      Suporte 24 Horas:
      Estamos sempre aqui para você! Nossa equipe de suporte está disponível 24 horas por dia, 7 dias por semana, para resolver qualquer problema ou responder a qualquer pergunta que você possa ter. Sua satisfação é a nossa prioridade.
       
      Fácil e Rápido de Começar:
      Configurar seu OTServer na CloudRun é simples e rápido. Concentre-se no desenvolvimento do seu jogo enquanto cuidamos da hospedagem.
       
      Entre em Contato Agora!
      Website: https://central.cloudrun.com.br/index.php?rp=/store/cloud-ryzen-brasil
      Email: [email protected]
      Telefone: (47) 99902-5147

      Não comprometa a qualidade da hospedagem do seu OTServer. Escolha a CloudRun e ofereça aos seus jogadores a melhor experiência de jogo possível. Visite nosso site hoje mesmo para conhecer nossos planos e começar!
       
      https://central.cloudrun.com.br/index.php?rp=/store/cloud-ryzen-brasil
       
      CloudRun - Onde a Velocidade Encontra a Confiabilidade!
       

    • Por FeeTads
      SALVE rapaziada do TK, esses dias vim pensando em novos scripts pro meu OT, e em um deles eu precisava que determinada area não contasse frag pro player que matasse outros, PORÉM eu precisava que os players que morressem nessa area ainda assim tivessem as penalidades da sua morte, procurei por ai, achei alguns scripts que apenas tiravam o SKULL e não realmente o FRAG do player.

      **script atualizado 22/10/2023** - melhorado e otimizado, levei o script pra puxar as infos por .lua / creatureScripts

      vou disponibilizar o code aqui, e o que fazer pra determinada area não contar frag.

      SOURCE OTX 2 / TFS 0.x, Funciona em TFS 1.x mudando as tags e ajeitando as sintaxes.

      vá em creatureevent.cpp

      procure por:
      else if(type == "preparedeath") _type = CREATURE_EVENT_PREPAREDEATH;
      Adiciona abaixo:
      else if(type == "nocountfrag") _type = CREATURE_EVENT_NOCOUNTFRAG;

      procure por:
      case CREATURE_EVENT_PREPAREDEATH: return "onPrepareDeath";  
      Adicione abaixo: 
      case CREATURE_EVENT_NOCOUNTFRAG: return "noCountFragArea";

      procure por:
      case CREATURE_EVENT_PREPAREDEATH: return "cid, deathList";
      Adicione abaixo:
      case CREATURE_EVENT_NOCOUNTFRAG: return "cid, target";

      agora no mesmo arquivo, vá até o final do arquivo e adicione essa função:
      uint32_t CreatureEvent::executeNoCountFragArea(Creature* creature, Creature* target) { //noCountFragArea(cid, target) if(m_interface->reserveEnv()) { ScriptEnviroment* env = m_interface->getEnv(); if(m_scripted == EVENT_SCRIPT_BUFFER) { env->setRealPos(creature->getPosition()); std::ostringstream scriptstream; scriptstream << "local cid = " << env->addThing(creature) << std::endl; scriptstream << "local target = " << env->addThing(target) << std::endl; if(m_scriptData) scriptstream << *m_scriptData; bool result = true; if(m_interface->loadBuffer(scriptstream.str())) { lua_State* L = m_interface->getState(); result = m_interface->getGlobalBool(L, "_result", true); } m_interface->releaseEnv(); return result; } else { #ifdef __DEBUG_LUASCRIPTS__ std::ostringstream desc; desc << creature->getName(); env->setEvent(desc.str()); #endif env->setScriptId(m_scriptId, m_interface); env->setRealPos(creature->getPosition()); lua_State* L = m_interface->getState(); m_interface->pushFunction(m_scriptId); lua_pushnumber(L, env->addThing(creature)); lua_pushnumber(L, env->addThing(target)); bool result = m_interface->callFunction(2); m_interface->releaseEnv(); return result; } } else { std::clog << "[Error - CreatureEvent::noCountFragArea] Call stack overflow." << std::endl; return 0; } }

      agora vá em creatureevent.h

      procure por:
      CREATURE_EVENT_PREPAREDEATH
      adicione abaixo:
      CREATURE_EVENT_NOCOUNTFRAG

      procure por:
      uint32_t executePrepareDeath(Creature* creature, DeathList deathList);
      Adicione abaixo:
      uint32_t executeNoCountFragArea(Creature* creature, Creature* target);

      agora vá em player.cpp

      procure por:
      bool Player::onKilledCreature(Creature* target, DeathEntry& entry)
      abaixo de:
      War_t enemy; if(targetPlayer->getEnemy(this, enemy)) { if(entry.isLast()) IOGuild::getInstance()->updateWar(enemy); entry.setWar(enemy); }
      Adicione o seguinte código:
      if (targetPlayer){ CreatureEventList killEvents = getCreatureEvents(CREATURE_EVENT_NOCOUNTFRAG); for (const auto &event : killEvents) { if (!event->executeNoCountFragArea(this, target)) { return true; } } }

      //

      Feito isso, tudo completo na sua source, agora é necessário adicionar o creaturescript dentro do servidor

      vá até creaturescripts/scripts
      crie um arquivo chamado, "noCountFragInArea.lua"
      e dentro dele cole o código:
       
      --[[ script feito por feetads / TibiaKing ]]-- --[[ discord: feetads / FeeTads#0246 ]]-- -- Add positions here for which you do not want to count frags local areas = { [1] = {from = {x = 91, y = 122, z = 7}, to = {x = 98, y = 127, z = 7}}, -- from = area superior esquerda / to = area inferior direita (formando um quadrado) } local onlyKillerInArea = false -- only killer need to be in area? function noCountFragArea(cid, target) if not isCreature(cid) or not isCreature(target) then return true end local posKiller = getPlayerPosition(cid) local posTarget = getPlayerPosition(target) for i = 1, #areas do local area = areas[i] if isInArea(posKiller, area.from, area.to) then if onlyKillerInArea then return false elseif isInArea(posTarget, area.from, area.to) then return false end end end return true end
      agora em creaturescripts.xml
      <event type="nocountfrag" name="fragarea" event="script" value="noCountFragInArea.lua"/>
      agora em creaturescripts/scripts/login.lua
       procure por OU semelhante a esse:
      registerCreatureEvent(cid, "AdvanceSave")
      e abaixo adicione:
      registerCreatureEvent(cid, "fragarea")

      //


      Agora tudo certo, quando quiser adiciona uma area que não pega frag, vá até o script e apenas coloque a area, igual o demonstrado no script

      Exemplo:
      local areas = { [1] = {from = {x = 91, y = 122, z = 7}, to = {x = 98, y = 127, z = 7}}, [2] = {from = {x = 1000, y = 1000, z = 7}, to = {x = 1100, y = 1100, z = 7}}, }
      assim somente colocando a area no script e abrindo o server ou dando /reload, já funcionará a area como não pegar frag.
      Esse sistema pode ser bom pra areas de pvp ativo, onde você ainda quer que o player que morrer perca os atributos, como se fosse uma morte normal, porém não conta frag pra quem matar.
      Bom pra sistemas tipo castle 48h (guild war), onde há diversas mortes e risco de pegar red, atrapalhando a war.

      Façam bom proveito dos scripts, e deixem os créditos no script rsrs

      **Eu fiz as alterações e o simples código por isso vim disponibilizar, créditos meus**
    • Por Muvuka
      Abri canal a força creaturescript acho que funcione no creaturescript cria script creaturescript
       
      <channel id="9" name="HELP" logged="yes"/>
      <channel id="12" name="Report Bugs" logged="yes"/>
      <channel id="13" name="Loot" logged="yes"/>
      <channel id="14" name="Report Character Rules Tibia Rules" logged="yes"/>
      <channel id="15" name="Death Channel"/>
      <channel id="6548" name="DexSoft" level="1"/>
      <channel id="7" name="Reports" logged="yes"/>
       
      antes de 
              if(lastLogin > 0) then adicione isso:
                      doPlayerOpenChannel(cid, CHANNEL_HELP) doPlayerOpenChannel(cid, 1,  2, 3) = 1,2 ,3 Channels, entendeu? NÃO FUNCIONA EU QUERO UM MEIO DE ABRI SEM USA A SOURCE
       
      EU NÃO CONSEGUI ABRI EU NÃO TENHO SOURCE
       
       
    • Por bolachapancao
      Rapaziada seguinte preciso de um script que ao utilizar uma alavanca para até 4 jogadores.
      Os jogadores serão teleportados para hunt durante uma hora e depois de uma hora os jogadores serão teleportados de volta para o templo.
       
      Observação: caso o jogador morra ou saia da hunt o evento hunt é cancelado.

      Estou a base canary
      GitHub - opentibiabr/canary: Canary Server 13.x for OpenTibia community.
       
    • Por RAJADAO
      .Qual servidor ou website você utiliza como base? 
      Sabrehaven 8.0
      Qual o motivo deste tópico? 
      Ajuda com novos efeitos
       
      Olá amigos, gostaria de ajuda para introduzir os seguintes efeitos no meu servidor (usando o Sabrehaven 8.0 como base), adicionei algumas runas novas (avalanche, icicle, míssil sagrado, stoneshower & Thunderstorm) e alguns novos feitiços (exevo mas san, exori san, exori tera, exori frigo, exevo gran mas frigo, exevo gran mas tera, exevo tera hur, exevo frigo hur) mas nenhum dos efeitos dessas magias parece existir no servidor, alguém tem um link para um tutorial ou algo assim para que eu possa fazer isso funcionar?
      Desculpe pelo mau inglês, sou brasileiro.

      Obrigado!


      AVALANCHE RUNE id:3161 \/
      (COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
      (COMBAT_PARAM_EFFECT, CONST_ME_ICEAREA)
      (COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ICE)

      STONESHOWER RUNE id:3175 \/
      (COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
      (COMBAT_PARAM_EFFECT, CONST_ME_STONES)
      (COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_EARTH)

      THUNDERSTORM RUNE id:3202 \/
      (COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
      (COMBAT_PARAM_EFFECT, CONST_ME_E NERGYHIT)
      (COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGYBALL)

      ICICLE RUNE id:3158 \/
      COMBAT_ICEDAMAGE
      CONST_ME_ICEAREA
      CONST_ANI_ICE

      SANTO MÍSSIL RUNA id:3182 \/
      (COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
      (COMBAT_PARAM_EFFECT, CONST_ME_HOLYDAMAGE)
      (COMBAT_PARAM_EFFECT, CONST_ME_HOLYAREA)
      (COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_HOLY)

      CONST_ME_PLANTATTACK (exevo gran mas tera)
      CONST_ME_ICETORNADO (exevo gran mas frigo)
      CONST_ME_SMALLPLANTS (exevo tera hur)
      CONST_ME_ICEAREA (exevo frigo hur)
      CONST_ME_ICEATTACK (exori frigo)
      CONST_ME_CARNIPHILA (exori tera)

      EXORI SAN \/
      (COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_SMALLHOLY)
      CONST_ME_HOLYDAM IDADE

      EXEVO MAS SAN \/
      CONST_ME_HOLYAREA
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo