Ir para conteúdo
  • Cadastre-se

Poketibia Erro Fatal Para Servidores (Talkactions, Lib)


Posts Recomendados

Meu servidor quando vou usar alguma spell tanto as novas q fiz quanto algumas velhas dão um lag no servidor e por 2 a 4 seg o servidor para e dps volta ao normal, estou preocupado porque quando for ligar isso vai dar um lag imenso por culpa de vários players em vários locais com diferentes pokémon e diferentes ataques.

 

Erro:

[17/04/2015 22:35:30] [Error - TalkAction Interface] 

[17/04/2015 22:35:30] In a timer event called from: 
[17/04/2015 22:35:30] data/talkactions/scripts/move1.lua:onSay
[17/04/2015 22:35:30] Description: 
[17/04/2015 22:35:30] data/lib/032-position.lua:170: bad argument #1 to 'getn' (table expected, got nil)
[17/04/2015 22:35:30] stack traceback:
[17/04/2015 22:35:30] [C]: in function 'getn'
[17/04/2015 22:35:30] data/lib/032-position.lua:170: in function 'getPosfromArea'
[17/04/2015 22:35:31] data/lib/newStatusSys.lua:909: in function <data/lib/newStatusSys.lua:906>
 
Já me falaram para colocar monster na área 0/0/10, coloquei nessa area e em todos os tiles da mesma, e isso ocorre do mesmo jeito. Queria que vocês me ajudassem porque estou querendo fazer um servidor dedicado seguindo os padrões dos jogos originais...
 
Abaixo alguns prints do meu servidor... Peço novamente, me ajudem nisso por favor! 
 
Se eu não estiver postando na área correta favor me orientar... 

post-105759-0-83904100-1429321559_thumb.

post-105759-0-69813900-1429321572_thumb.

post-105759-0-83949400-1429321603_thumb.

post-105759-0-05974300-1429321618_thumb.

Link para o post
Compartilhar em outros sites

Posta o script.

 

O tópico foi movido para a área correta, preste mais atenção da próxima vez!
Leia as regras do fórum: http://tibiaking.com/forum/topic/1281-regras-gerais/?p=7680

Este tópico foi movido:
De: "OTServAprovação de Tópicos de Conteúdos"
Para: "OTServSuporte OTServSuporte de Scripts"

Link para o post
Compartilhar em outros sites

Qual deles? 

Bem já que não sei qual vou mandar todos os q aparecem lá

 

 

Move1.lua

local msgs = {"use ", ""}
 
function doAlertReady(cid, id, movename, n, cd)
if not isCreature(cid) then return true end
local myball = getPlayerSlotItem(cid, 8)
if myball.itemid > 0 and getItemAttribute(myball.uid, cd) == "cd:"..id.."" then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, getPokeballName(myball.uid).." - "..movename.." (m"..n..") is ready!")
return true
end
local p = getPokeballsInContainer(getPlayerSlotItem(cid, 3).uid)
if not p or #p <= 0 then return true end
for a = 1, #p do
if getItemAttribute(p[a], cd) == "cd:"..id.."" then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, getPokeballName(p[a]).." - "..movename.." (m"..n..") is ready!")
return true
end
end
end
 
function onSay(cid, words, param, channel)
 
 
if param ~= "" then return true end
if string.len(words) > 3 then return true end
 
if #getCreatureSummons(cid) == 0 then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You need a pokemon to use moves.")
return 0
end
             --alterado v2.5
local mypoke = getCreatureSummons(cid)[1]
 
if getCreatureCondition(cid, CONDITION_EXHAUST) then return true end
if getCreatureName(mypoke) == "Evolution" then return true end
 
local name = getCreatureName(mypoke) == "Ditto" and getPlayerStorageValue(mypoke, 1010) or getCreatureName(mypoke)
 
local it = string.sub(words, 2, 3)
local move = movestable[name].move1
if getPlayerStorageValue(mypoke, 212123) >= 1 then
   cdzin = "cm_move"..it..""
else
   cdzin = "move"..it..""       --alterado v2.5
end
 
if it == "2" then
move = movestable[name].move2
elseif it == "3" then
move = movestable[name].move3
elseif it == "4" then
move = movestable[name].move4
elseif it == "5" then
move = movestable[name].move5
elseif it == "6" then
move = movestable[name].move6
elseif it == "7" then
move = movestable[name].move7
elseif it == "8" then
move = movestable[name].move8
elseif it == "9" then
move = movestable[name].move9
elseif it == "10" then
move = movestable[name].move10
elseif it == "11" then
move = movestable[name].move11
elseif it == "12" then
move = movestable[name].move12
elseif it == "13" then
move = movestable[name].move13
end
 
if not move then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your pokemon doesn't recognize this move.")
return true
end
 
    --if false and getLevel(mypoke) < move.level then
if getLevel(mypoke) < move.level then
doPlayerSendTextMessage(cid, 26, "Your pokemon doesn't have enough level to use this move.")
return 0
end
 
if getCD(getPlayerSlotItem(cid, 8).uid, cdzin) > 0 and getCD(getPlayerSlotItem(cid, 8).uid, cdzin) < (move.cd + 2) then
doPlayerSendCancel(cid, "[MOVE] You have to wait ["..getCD(getPlayerSlotItem(cid, 8).uid, cdzin).."] seconds to use "..move.name.." again.")
 
    return 0
end
 
if getTileInfo(getThingPos(mypoke)).protection then
doPlayerSendCancel(cid, "Your pokemon cannot use moves while in protection zone.")
return 0
end
 
if getPlayerStorageValue(mypoke, 3894) >= 1 then
    return doPlayerSendCancel(cid, "You can't attack because you is with fear") --alterado v2.3
    end
                                               
if (move.name == "Team Slice" or move.name == "Team Claw") and #getCreatureSummons(cid) < 2 then       --alterado v2.5
   doPlayerSendCancel(cid, "Your pokemon need be in a team for use this move!")
    return 0
    end
                                                                     --alterado v2.7 \/\/\/
if isCreature(getCreatureTarget(cid)) and isInArray(specialabilities["evasion"], getCreatureName(getCreatureTarget(cid))) then 
   local target = getCreatureTarget(cid)                                                                                       
   if math.random(1, 100) <= passivesChances["Evasion"][getCreatureName(target)] then 
      if isCreature(getMasterTarget(target)) then                                                                      
         doSendMagicEffect(getThingPos(target), 211)
         doSendAnimatedText(getThingPos(target), "TOO BAD", 215)                                
         doTeleportThing(target, getClosestFreeTile(target, getThingPos(mypoke)), false)
         doSendMagicEffect(getThingPos(target), 211)
         doFaceCreature(target, getThingPos(mypoke))    
         return true     
      end
   end
end
 
 
if move.target == 1 then
 
if not isCreature(getCreatureTarget(cid)) then
doPlayerSendTextMessage(cid, 25, "You don\'t have any targets.")
return 0
end
 
if getCreatureCondition(getCreatureTarget(cid), CONDITION_INVISIBLE) then
return 0
end
 
if getCreatureHealth(getCreatureTarget(cid)) <= 0 then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your have already defeated your target.")
return 0
end
 
if not isCreature(getCreatureSummons(cid)[1]) then
return true
end
 
if getDistanceBetween(getThingPos(getCreatureSummons(cid)[1]), getThingPos(getCreatureTarget(cid))) > move.dist then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Get closer to the target to use this move.")
return 0
end
 
if not isSightClear(getThingPos(getCreatureSummons(cid)[1]), getThingPos(getCreatureTarget(cid)), false) then
return 0
end
end
 
local newid = 0
 
        if isSleeping(mypoke) or isSilence(mypoke) then  --alterado v2.5
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Sorry you can't do that right now.")
return 0
else
newid = setCD(getPlayerSlotItem(cid, 8).uid, cdzin, move.cd)
end
 
doCreatureSay(cid, ""..getPokeName(mypoke)..", "..msgs[math.random(#msgs)]..""..move.name.."!", TALKTYPE_SAY)
 
    local summons = getCreatureSummons(cid) --alterado v2.6
 
addEvent(doAlertReady, move.cd * 1000, cid, newid, move.name, it, cdzin)
 
for i = 2, #summons do
       if isCreature(summons) and getPlayerStorageValue(cid, 637501) >= 1 then
          docastspell(summons, move.name)        --alterado v2.6
       end
    end 
 
    docastspell(mypoke, move.name)
doCreatureAddCondition(cid, playerexhaust)
 
if useKpdoDlls then
doUpdateCooldowns(cid)
end
 
return 0
end

 

 

 

 

 

032-position.lua

function getCreatureInRange(type, fromPos, toPos)
                                                   --alterado v2.7
local types = {
["player"] = isPlayer,
["monster"] = ehMonstro,
["npc"] = ehNPC,
["creature"] = isCreature
}
local tmp = {}
 
local type = types[type]
if(not type) then
print('[getCreatureInRange]>> Unknow type')
return false
end
 
local thing = nil
for x = fromPos.x, toPos.x do
for y = fromPos.y, toPos.y do
for z = fromPos.z, toPos.z do
for s = 1, 253 do
local position = {x = x, y = y, z = z, stackpos = s}
thing = getTileThingByPos(position)
if(type(thing.uid) == true) then
table.insert(tmp, thing.uid)
end
end
end
end
end
return tmp
end
---------------------------------------------------------------------------------------
function doRemoveItemFromPos(position, itemid, count)
    local item = getTileItemById(position, itemid)
    if(item.uid ~= 0)then
        if getItemAttribute(item.uid, "aid") == 3544 then return true end  --alterado v2.9        
        return doRemoveItem(item.uid, count or -1)
    end
    return false
end
 
function isInRange(position, fromPosition, toPosition)
return (position.x >= fromPosition.x and position.y >= fromPosition.y and position.z >= fromPosition.z and position.x <= toPosition.x and position.y <= toPosition.y and position.z <= toPosition.z)
end
 
function getDistanceBetween(fromPosition, toPosition)
local x, y = math.abs(fromPosition.x - toPosition.x), math.abs(fromPosition.y - toPosition.y)
local diff = math.max(x, y)
if(fromPosition.z ~= toPosition.z) then
diff = diff + 9 + 6
end
 
return diff
end
 
function getDirectionTo(pos1, pos2)
local dir = NORTH
if(pos1.x > pos2.x) then
dir = WEST
if(pos1.y > pos2.y) then
dir = NORTHWEST
elseif(pos1.y < pos2.y) then
dir = SOUTHWEST
end
elseif(pos1.x < pos2.x) then
dir = EAST
if(pos1.y > pos2.y) then
dir = NORTHEAST
elseif(pos1.y < pos2.y) then
dir = SOUTHEAST
end
else
if(pos1.y > pos2.y) then
dir = NORTH
elseif(pos1.y < pos2.y) then
dir = SOUTH
end
end
 
return dir
end
 
function getCreatureLookPosition(cid)
return getPosByDir(getThingPos(cid), getCreatureLookDirection(cid))
end
 
function getPositionByDirection(pos, direction, size)
local n = size or 1
local position = {}
position.x = pos.x
position.y = pos.y
position.z = pos.z
if pos.stackpos then
position.stackpos = pos.stackpos
end
if(direction == NORTH) then
position.y = position.y - n
elseif(direction == SOUTH) then
position.y = position.y + n
elseif(direction == WEST) then
position.x = position.x - n
elseif(direction == EAST) then
position.x = position.x + n
elseif(direction == NORTHWEST) then
position.y = position.y - n
position.x = position.x - n
elseif(direction == NORTHEAST) then
position.y = position.y - n
position.x = position.x + n
elseif(direction == SOUTHWEST) then
position.y = position.y + n
position.x = position.x - n
elseif(direction == SOUTHEAST) then
position.y = position.y + n
position.x = position.x + n
end
 
return position
end
 
function doComparePositions(position, positionEx)
return position.x == positionEx.x and position.y == positionEx.y and position.z == positionEx.z
end
 
function getArea(position, x, y)
local t = {}
for i = (position.x - x), (position.x + x) do
for j = (position.y - y), (position.y + y) do
table.insert(t, {x = i, y = j, z = position.z})
end
end
 
return t
end
 
function checkAreaUid(pos, area, showP, showM) -- By Wantedzin(Perdigs)
    local creaturesList = {}
    local center = {}
    center.y = math.floor(#area/2)+1
    for y = 1, #area do
        for x = 1, #area[y] do
            local number = area[y][x]
            if number > 0 then
                center.x = math.floor(table.getn(area[y])/2)+1
                local pos =  getTopCreature {x = pos.x + x - center.x, y = pos.y + y - center.y, z = pos.z, stackpos = STACKPOS_TOP_CREATURE}
                if (pos.type == 1 and showP == 1) or (pos.type == 2 and showM == 1) then
                table.insert(creaturesList, pos.uid)
                end
            end
        end
    end
    return creaturesList
end  
------------------------
function descompactar(table)
local str = ""
for i = 1, #table do
    for j = 1, #table[1] do
        str = str..(table[j] or "9")..", "
    end
    str = str.."\n"
end
return str
end
 
 
------------------ Function getPosfromArea(cid,area) by Dokmos ------------------
function getPosfromArea(cid,area)
icenter = math.floor(table.getn(area)/2)+1
jcenter = math.floor(table.getn(area[1])/2)+1
center = area[icenter]
ivar = table.getn(area)
jvar = table.getn(area[1])
i = table.getn(area)^2
j = table.getn(area[1])^2
 
local mydir = isCreature(getMasterTarget(cid)) and getCreatureDirectionToTarget(cid, getMasterTarget(cid)) or getCreatureLookDir(cid)
setPlayerStorageValue(cid, 21101, -1)  --alterado v1.6
 
   if center[jcenter] == 3 then
          if mydir == 0 then
             signal = {-1,1,1,2}
          elseif mydir == 1 then
             signal = {1,-1,2,1}
          elseif mydir == 2 then
             signal = {1,-1,1,2}
          elseif mydir == 3 then
             signal = {-1,1,2,1}
          end
   else
   signal = {-1,1,1,2}
   end
 
POSITIONS = {}  
P = 0 
   
repeat
pvar = {0,0}
I = area[ivar]
J = I[jvar]
i = i-1
j = j-1
   if J == 1 then
          if jvar < jcenter then  
          pvar[signal[3]] = signal[1]*math.abs((jcenter-jvar)) 
          elseif jvar > jcenter then  
          pvar[signal[3]] = signal[2]*math.abs((jcenter-jvar)) 
          end
          
          if ivar < icenter then  
          pvar[signal[4]] = signal[1]*math.abs((icenter-ivar)) 
          elseif ivar > icenter then
          pvar[signal[4]] = signal[2]*math.abs((icenter-ivar))
          end
   end    
   if jvar > 1 then
   jvar = (jvar-1)
   elseif ivar > 1 then
   jvar = table.getn(area[1])
   ivar = (ivar-1)
   end  
local pos = getThingPos(cid)
local areapos = {x=pos.x+(pvar[1]),y=pos.y+(pvar[2]),z=pos.z}  
 
  if pos.x ~= areapos.x or pos.y ~= areapos.y then
     P = P+1
     POSITIONS[P] = areapos
  end 
  
until i <= 0 and j <= 0
 
return POSITIONS
end

 

 

 

 

newStatusSys.lua

conds = {
["Slow"] = 3890,
["Confusion"] = 3891,  
["Burn"] = 3892,
["Poison"] = 3893,
["Fear"] = 3894,
["Stun"] = 3895,
["Paralyze"] = 3896,                               --alterado v2.6 \/ peguem o script todo!
["Leech"] = 3897,
["Buff1"] = 3898,
["Buff2"] = 3899,
["Buff3"] = 3900,
["Miss"] = 32659,   
["Silence"] = 32698,     
["Sleep"] = 98271,
}
 
injuries2 = {
[1] = {n = "slow", m = 3890},
[2] = {n = "confuse", m = 3891},  
[3] = {n = "burn", m = 3892},
[4] = {n = "poison", m = 3893},
[5] = {n = "fear", m = 3894},
[6] = {n = "stun", m = 3895},
[7] = {n = "paralyze", m = 3896},
[8] = {n = "leech", m = 3897},
[9] = {n = "Buff1", m = 3898},
[10] = {n = "Buff2", m = 3899},
[11] = {n = "Buff3", m = 3900},
[12] = {n = "miss", m = 32659},   
[13] = {n = "silence", m = 32698},     
[14] = {n = "sleep", m = 98271},
}
 
Buffs = {
[1] = {"Buff1", 3898},
[2] = {"Buff2", 3899},
[3] = {"Buff3", 3900},
}
 
paralizeArea2 = createConditionObject(CONDITION_PARALYZE)
setConditionParam(paralizeArea2, CONDITION_PARAM_TICKS, 50000)
setConditionFormula(paralizeArea2, -0.63, -0.63, -0.63, -0.63)
 
local roardirections = {
[NORTH] = {SOUTH},
[sOUTH] = {NORTH},
[WEST] = {EAST},           --edited sistema de roar
[EAST] = {WEST}}
 
function doSendSleepEffect(cid)
if not isCreature(cid) or not isSleeping(cid) then return true end
doSendMagicEffect(getThingPos(cid), 32)
addEvent(doSendSleepEffect, 1500, cid)
end
 
local outFurys = {
["Shiny Charizard"] = {outFury = 1073},  
["Shiny Blastoise"] = {outFury = 1074},    
}
 
local outImune = {
["Camouflage"] = 1445,
["Acid Armor"] = 1453,
["Iron Defense"] = 1401,
["Minimize"] = 1455,
["Future Sight"] = 1446,
}
            
local function transBack(cid)
if isCreature(cid) then
   if getPlayerStorageValue(cid, 974848) >= 1 then
      setPlayerStorageValue(cid, 974848, 0)
      doRemoveCondition(cid, CONDITION_OUTFIT)
   end
end
end
 
function doCondition2(ret)
--
function doMiss2(cid, cd, eff, check, spell)
local stg = conds["Miss"]
    if not isCreature(cid) then return true end  --is creature?
    if getPlayerStorageValue(cid, 21100) >= 1 and getPlayerStorageValue(cid, stg) <= -1 then return true end --alterado v2.6  reflect
    if not canDoMiss(cid, spell) then return true end
    if getPlayerStorageValue(cid, stg) >= 1 and cd ~= -1 then 
       setPlayerStorageValue(cid, stg, cd)    --allterado v2.8
       return true 
    end
 
    if not check and getPlayerStorageValue(cid, stg) >= 1 then
       setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd - 1)
    else
       setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd)
    end
           
    local a = getPlayerStorageValue(cid, stg)
           
    if isSummon(cid) and getPlayerStorageValue(cid, 212123) <= 0 then
       local item = getPlayerSlotItem(getCreatureMaster(cid), 8)
       doItemSetAttribute(item.uid, "miss", a)
       doItemSetAttribute(item.uid, "missEff", eff)
       doItemSetAttribute(item.uid, "missSpell", spell)
    end
 
    if a <= -1 then 
    setPlayerStorageValue(cid, stg, -1)
    return true 
    end
        
    doSendMagicEffect(getThingPos(cid), eff)
    addEvent(doMiss2, 1000, cid, -1, eff, a, spell)   
end 
 
function doSilence2(cid, cd, eff, check)
local stg = conds["Silence"]
    if not isCreature(cid) then return true end  --is creature?
    if getPlayerStorageValue(cid, stg) >= 1 and cd ~= -1 then 
       setPlayerStorageValue(cid, stg, cd)    --allterado v2.8
       return true 
    end
    
    if not check and getPlayerStorageValue(cid, stg) >= 1 then
       setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd - 1)
    else
       setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd)
    end
           
    local a = getPlayerStorageValue(cid, stg)
           
    if isSummon(cid) and getPlayerStorageValue(cid, 212123) <= 0 then
       local item = getPlayerSlotItem(getCreatureMaster(cid), 8)
       doItemSetAttribute(item.uid, "silence", a)
       doItemSetAttribute(item.uid, "silenceEff", eff)
    end
 
    if a <= -1 then 
    setPlayerStorageValue(cid, stg, -1)
    return true 
    end
        
    doSendMagicEffect(getThingPos(cid), eff)
    addEvent(doSilence2, 1000, cid, -1, eff, a)   
end       
 
function doSlow2(cid, cd, eff, check, first)
local stg = conds["Slow"]
    if not isCreature(cid) then return true end  --is creature?
    if getPlayerStorageValue(cid, stg) >= 1 and cd ~= -1 then 
       setPlayerStorageValue(cid, stg, cd)    --allterado v2.8
       return true 
    end
    
    if not check and getPlayerStorageValue(cid, stg) >= 1 then
       setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd - 1)
    else
       setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd)
    end
           
    local a = getPlayerStorageValue(cid, stg)
           
    if isSummon(cid) and getPlayerStorageValue(cid, 212123) <= 0 then
       local item = getPlayerSlotItem(getCreatureMaster(cid), 8)
       doItemSetAttribute(item.uid, "slow", a)
       doItemSetAttribute(item.uid, "slowEff", eff)
    end
 
    if a <= -1 then 
    doRemoveCondition(cid, CONDITION_PARALYZE)
    if not isSleeping(cid) and not isParalyze(cid) then
       addEvent(doRegainSpeed, 50, cid)     --alterado
    end
    setPlayerStorageValue(cid, stg, -1)
    return true 
    end
    
    if first then
       doAddCondition(cid, paralizeArea2) 
    end  
      
    doSendMagicEffect(getThingPos(cid), eff)
    addEvent(doSlow2, 1000, cid, -1, eff, a)   
end    
 
function doConfusion2(cid, cd, check)
local stg = conds["Confusion"]
    if not isCreature(cid) then return true end  --is creature?
    if getPlayerStorageValue(cid, stg) >= 1 and cd ~= -1 then 
       setPlayerStorageValue(cid, stg, cd)    --allterado v2.8
       return true 
    end
    
    if not check and getPlayerStorageValue(cid, stg) >= 1 then
       setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd - 1)
    else
       setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd)
    end
           
    local a = getPlayerStorageValue(cid, stg)
           
    if isSummon(cid) and getPlayerStorageValue(cid, 212123) <= 0 then
       local item = getPlayerSlotItem(getCreatureMaster(cid), 8)
       doItemSetAttribute(item.uid, "confuse", a)
    end
 
    if a <= -1 then 
    if getCreatureCondition(cid, CONDITION_PARALYZE) == true then
       doRemoveCondition(cid, CONDITION_PARALYZE)
  addEvent(doAddCondition, 10, cid, paralizeArea2)            
    end
    if not isSleeping(cid) and not isParalyze(cid) then
       doRegainSpeed(cid)            --alterado 
    end
    setPlayerStorageValue(cid, stg, -1)
    return true 
    end
    
    if math.random(1, 6) >= 4 then
doSendMagicEffect(getThingPos(cid), 31)
end
 
    local isTarget = isSummon(cid) and getCreatureTarget(getCreatureMaster(cid)) or getCreatureTarget(cid)
    if isCreature(isTarget) and not isSleeping(cid) and not isParalyze(cid) and getPlayerStorageValue(cid, 654878) <= 0 then --alterado v2.6
doChangeSpeed(cid, -getCreatureSpeed(cid))
doChangeSpeed(cid, 100)
        doPushCreature(cid, math.random(0, 3), 1, 0)    --alterado v2.6
doChangeSpeed(cid, -100)
end
 
local pos = getThingPos(cid)
addEvent(doSendMagicEffect, math.random(0, 450), pos, 31)
 
    addEvent(doConfusion2, 1000, cid, -1, a)   
end           
 
function doBurn2(cid, cd, check, damage)
local stg = conds["Burn"]
    if not isCreature(cid) then return true end  --is creature?
    if getPlayerStorageValue(cid, stg) >= 1 and cd ~= -1 then 
       setPlayerStorageValue(cid, stg, cd)    --allterado v2.8
       return true 
    end
    
    if not check and getPlayerStorageValue(cid, stg) >= 1 then
       setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd - 1)
    else
       setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd)
    end
           
    local a = getPlayerStorageValue(cid, stg)
           
    if isSummon(cid) and getPlayerStorageValue(cid, 212123) <= 0 then
       local item = getPlayerSlotItem(getCreatureMaster(cid), 8)
       doItemSetAttribute(item.uid, "burn", a)
       doItemSetAttribute(item.uid, "burndmg", damage)
    end
 
    if a <= -1 then 
    setPlayerStorageValue(cid, stg, -1)
    return true 
    end
    
    doCreatureAddHealth(cid, -damage, 15, COLOR_BURN)  
    addEvent(doBurn2, 3500, cid, -1, a, damage)   
end 
 
function doPoison2(cid, cd, check, damage)
local stg = conds["Poison"]
    if not isCreature(cid) then return true end  --is creature?
    ----------
    if isSummon(cid) or ehMonstro(cid) and pokes[getCreatureName(cid)] then --alterado v2.6
       local type = pokes[getCreatureName(cid)].type
       local type2 = pokes[getCreatureName(cid)].type2
       if isInArray({"poison", "steel"}, type) or isInArray({"poison", "steel"}, type2) then
          return true
       end
    end
    ---------
    if getPlayerStorageValue(cid, stg) >= 1 and cd ~= -1 then 
       setPlayerStorageValue(cid, stg, cd)    --allterado v2.8
       return true 
    end
    
    if not check and getPlayerStorageValue(cid, stg) >= 1 then
       setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd - 1)
    else
       setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd)
    end
           
    local a = getPlayerStorageValue(cid, stg)
           
    if isSummon(cid) and getPlayerStorageValue(cid, 212123) <= 0 then
       local item = getPlayerSlotItem(getCreatureMaster(cid), 8)
       doItemSetAttribute(item.uid, "poison", a)
       doItemSetAttribute(item.uid, "poisondmg", damage)
    end
 
    if a <= -1 or getCreatureHealth(cid) == 1 then 
    setPlayerStorageValue(cid, stg, -1)
    return true 
    end
   
    local dano = getCreatureHealth(cid)-damage <= 0 and getCreatureHealth(cid)-1 or damage 
    doCreatureAddHealth(cid, -dano, 8, COLOR_GRASS)  
    
    addEvent(doPoison2, 1500, cid, -1, a, damage)   
end       
 
function doFear2(cid, cd, check, skill)
local stg = conds["Fear"]
    if not isCreature(cid) then return true end  --is creature?
    if getPlayerStorageValue(cid, stg) >= 1 and cd ~= -1 then 
       setPlayerStorageValue(cid, stg, cd)    --allterado v2.8
       return true 
    end
    
    if not check and getPlayerStorageValue(cid, stg) >= 1 then
       setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd - 1)
    else
       setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd)
    end
           
    local a = getPlayerStorageValue(cid, stg)
           
    if isSummon(cid) and getPlayerStorageValue(cid, 212123) <= 0 then
       local item = getPlayerSlotItem(getCreatureMaster(cid), 8)
       doItemSetAttribute(item.uid, "fear", a)
       doItemSetAttribute(item.uid, "fearSkill", skill)
    end
 
    if a <= -1 then 
    if getCreatureCondition(cid, CONDITION_PARALYZE) == true then
       doRemoveCondition(cid, CONDITION_PARALYZE)
  addEvent(doAddCondition, 10, cid, paralizeArea2)            
    end
    if not isSleeping(cid) and not isParalyze(cid) then
       doRegainSpeed(cid)         --alterado 
    end
    setPlayerStorageValue(cid, stg, -1)
    return true 
    end
    
    if skill == "Roar" then
       eff = 244
    else                --edited Roar
       eff = 139
    end
    
    if math.random(1, 6) >= 4 then
doSendMagicEffect(getThingPos(cid), eff)
end
 
    local isTarget = isSummon(cid) and getCreatureTarget(getCreatureMaster(cid)) or getCreatureTarget(cid)
    if isCreature(isTarget) and not isSleeping(cid) and not isParalyze(cid) and getPlayerStorageValue(cid, 654878) <= 0 then --alterado v2.6
local dir = getCreatureDirectionToTarget(cid, isTarget)
        doChangeSpeed(cid, -getCreatureSpeed(cid))
doChangeSpeed(cid, 100)
        doPushCreature(cid, roardirections[dir][1], 1, 0)  --alterado v2.6
doChangeSpeed(cid, -100)
end
 
local pos = getThingPos(cid)
addEvent(doSendMagicEffect, math.random(0, 450), pos, eff)
 
    addEvent(doFear2, 1000, cid, -1, a, skill)   
end      
 
function doStun2(cid, cd, eff, check, spell)
local stg = conds["Stun"]
    if not isCreature(cid) then return true end  --is creature?
    if not canDoMiss(cid, spell) then return true end
    if getPlayerStorageValue(cid, stg) >= 1 and cd ~= -1 then 
       setPlayerStorageValue(cid, stg, cd)    --allterado v2.8
       return true 
    end
    
    if not check and getPlayerStorageValue(cid, stg) >= 1 then
       setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd - 1)
    else
       setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd)
    end
           
    local a = getPlayerStorageValue(cid, stg)
           
    if isSummon(cid) and getPlayerStorageValue(cid, 212123) <= 0 then
       local item = getPlayerSlotItem(getCreatureMaster(cid), 8)
       doItemSetAttribute(item.uid, "stun", a)
       doItemSetAttribute(item.uid, "stunEff", eff)
       doItemSetAttribute(item.uid, "stunSpell", spell)
    end
 
    if a <= -1 then
    doRemoveCondition(cid, CONDITION_PARALYZE)
    if not isSleeping(cid) and not isParalyze(cid) then
       addEvent(doRegainSpeed, 50, cid)   --alterado 
    end
    setPlayerStorageValue(cid, stg, -1)
    return true 
    end
    
    if getCreatureCondition(cid, CONDITION_PARALYZE) == false then
       doAddCondition(cid, paralizeArea2)
    end    
    doSendMagicEffect(getThingPos(cid), eff)
    addEvent(doStun2, 1000, cid, -1, eff, a, spell)   
end 
 
function doParalyze2(cid, cd, eff, check, first)
local stg = conds["Paralyze"]
    if not isCreature(cid) then return true end  --is creature?
    if getPlayerStorageValue(cid, stg) >= 1 and cd ~= -1 then 
       setPlayerStorageValue(cid, stg, cd)    --allterado v2.8
       return true 
    end
    
    if not check and getPlayerStorageValue(cid, stg) >= 1 then
       setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd - 1)
    else
       setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd)
    end
           
    local a = getPlayerStorageValue(cid, stg)
           
    if isSummon(cid) and getPlayerStorageValue(cid, 212123) <= 0 then
       local item = getPlayerSlotItem(getCreatureMaster(cid), 8)
       doItemSetAttribute(item.uid, "paralyze", a)
       doItemSetAttribute(item.uid, "paralyzeEff", eff)
    end
 
    if a <= -1 then 
    if isPlayer(cid) then
       if not isSleeping(cid) then   --alterado
          mayNotMove(cid, false)
       end
    else
       if getCreatureCondition(cid, CONDITION_PARALYZE) == true then
          doRemoveCondition(cid, CONDITION_PARALYZE)
          addEvent(doAddCondition, 10, cid, paralizeArea2)            
       end
       if not isSleeping(cid) then
          doRegainSpeed(cid)          --alterado
       end
    end   
    setPlayerStorageValue(cid, stg, -1)
    return true 
    end
    
    if isPlayer(cid) then
       mayNotMove(cid, true)
    else                        --alterado v2.6
       doChangeSpeed(cid, -2000)
    end 
    doSendMagicEffect(getThingPos(cid), eff)
    addEvent(doParalyze2, 1000, cid, -1, eff, a, false)   
end       
 
function doSleep2(cid, cd, check, first)        
local stg = conds["Sleep"]
    if not isCreature(cid) then return true end  --is creature?
    if getPlayerStorageValue(cid, stg) >= 1 and cd ~= -1 then 
       setPlayerStorageValue(cid, stg, cd)    --allterado v2.8
       return true 
    end
    
    if not isSleeping(cid) then
addEvent(doSendSleepEffect, 500, cid)
end
 
    if not check and getPlayerStorageValue(cid, stg) >= 1 then
       setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd - 1)
    else
       setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd)
    end
           
    local a = getPlayerStorageValue(cid, stg)
          
    if isSummon(cid) and getPlayerStorageValue(cid, 212123) <= 0 then
       local item = getPlayerSlotItem(getCreatureMaster(cid), 8)
       doItemSetAttribute(item.uid, "sleep", a)
    end
 
    if a <= -1 then 
    if not isPlayer(cid) then
  local dittoStg = getPlayerStorageValue(cid, 1010) 
       if getCreatureName(cid) == "Ditto" and isSummon(cid) and tostring(dittoStg) and dittoStg ~= "Ditto" then
     doSetCreatureOutfit(cid, {lookType = getItemAttribute(getPlayerSlotItem(getCreatureMaster(cid), 8).uid, "transOutfit")}, -1)
       else
     doRemoveCondition(cid, CONDITION_OUTFIT)
  end
  if getPlayerStorageValue(cid, 625877) ~= -1 then 
     doSetCreatureOutfit(cid, {lookType = getPlayerStorageValue(cid, 625877)}, -1)   --alterado v2.6
       end 
    end
    if isPlayer(cid) then
       if not isParalyze(cid) then
          mayNotMove(cid, false)   --alterado
       end
    else
       if getCreatureCondition(cid, CONDITION_PARALYZE) == true then
          doRemoveCondition(cid, CONDITION_PARALYZE)
          addEvent(doAddCondition, 10, cid, paralizeArea2)            
       end
       if not isParalyze(cid) then
          doRegainSpeed(cid)   --alterado
       end
end
    setPlayerStorageValue(cid, stg, -1)
    return true 
    end
    
    if first then 
       if getCreatureName(cid) == "Ursaring" and getCreatureCondition(cid, CONDITION_OUTFIT) == true then
             
       elseif not isPlayer(cid) then
          if isInArray({604, 605, 1015, 1016, 1183, 1184}, getCreatureOutfit(cid).lookType) then
             Info = 0                                                                            --alterado v2.6
          else
             Info = getMonsterInfo(getCreatureName(cid)).lookCorpse                
          end                
          local look = getCreatureOutfit(cid) 
          ---------
          local dittoStg = getPlayerStorageValue(cid, 1010) 
          if getCreatureName(cid) == "Ditto" and isSummon(cid) and tostring(dittoStg) and dittoStg ~= "Ditto" then
        local InfoDitto = getMonsterInfo(tostring(dittoStg)).lookCorpse
             if InfoDitto ~= 0 and look.lookType ~= 0 then             
                doSetCreatureOutfit(cid, {lookType = 0, lookTypeEx = getMonsterInfo(tostring(dittoStg)).lookCorpse}, -1)
             end   
          else
             if getCreatureName(cid) == "Shiny Golem" and getCreatureOutfit(cid).lookType == 1403 then
                doRemoveCondition(cid, CONDITION_OUTFIT)                                                                                                  
             elseif Info ~= 0 and look.lookType ~= 0 then
   doSetCreatureOutfit(cid, {lookType = 0, lookTypeEx = getMonsterInfo(getCreatureName(cid)).lookCorpse}, -1)
             end
          end
       end
    end
                                      --alterado v2.6
    if isPlayer(cid) then
       mayNotMove(cid, true)
    else
       doChangeSpeed(cid, -getCreatureSpeed(cid))
    end
    addEvent(doSleep2, 1000, cid, -1, a, false)
end   
 
function doLeech2(cid, attacker, cd, check, damage)
local stg = conds["Leech"]
    if not isCreature(cid) then return true end  --is creature?
    if attacker ~= 0 and not isCreature(attacker) then return true end  --is creature?
    if getPlayerStorageValue(cid, stg) >= 1 and cd ~= -1 then 
       setPlayerStorageValue(cid, stg, cd)    --allterado v2.8
       return true 
    end
    
    if not check and getPlayerStorageValue(cid, stg) >= 1 then
       setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd - 1)
    else
       setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd)
    end
           
    local a = getPlayerStorageValue(cid, stg)
           
    if isSummon(cid) and getPlayerStorageValue(cid, 212123) <= 0 then
       local item = getPlayerSlotItem(getCreatureMaster(cid), 8)
       doItemSetAttribute(item.uid, "leech", a)
       doItemSetAttribute(item.uid, "leechdmg", damage)
    end
 
    if a <= -1 then 
    setPlayerStorageValue(cid, stg, -1)
    return true 
    end
    
    local life = getCreatureHealth(cid)
    ------
    doCreatureAddHealth(cid, -damage)
    doSendAnimatedText(getThingPos(cid), "-"..damage.."", 144)
    doSendMagicEffect(getThingPos(cid), 45)
    ------
    local newlife = life - getCreatureHealth(cid)
    if newlife >= 1 and attacker ~= 0 then
       doSendMagicEffect(getThingPos(attacker), 14)
       doCreatureAddHealth(attacker, newlife)
       doSendAnimatedText(getThingPos(attacker), "+"..newlife.."", 32)
    end 
    addEvent(doLeech2, 2000, cid, attacker, -1, a, damage)   
end 
 
function doBuff2(cid, cd, eff, check, buff, first, attr)
    if not isCreature(cid) then return true end  --is creature?
---------------------
local atributo = attr and attr or ""
if first and atributo == "" then
for i = 1, 3 do 
    if getPlayerStorageValue(cid, Buffs[2]) <= 0 then
       atributo = Buffs[1]
       break
    end
end
end
if atributo == "" then return true end
if ehMonstro(cid) then atributo = "Buff1" end
----------------------
local stg = conds[atributo]
 
    if getPlayerStorageValue(cid, stg) >= 1 and cd ~= -1 then return true end  --n usar 2x
 
    if not check and getPlayerStorageValue(cid, stg) >= 1 then
       setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd - 1)
    else
       setPlayerStorageValue(cid, stg, getPlayerStorageValue(cid, stg) + cd)
    end
           
    local a = getPlayerStorageValue(cid, stg)
           
    if isSummon(cid) and getPlayerStorageValue(cid, 212123) <= 0 then
       local item = getPlayerSlotItem(getCreatureMaster(cid), 8)
       doItemSetAttribute(item.uid, atributo, a)
       doItemSetAttribute(item.uid, atributo.."eff", eff)
       doItemSetAttribute(item.uid, atributo.."skill", buff)
    end
 
    if a <= -1 then               --alterado v2.6
    if isInArray({"Future Sight", "Camouflage", "Acid Armor", "Iron Defense", "Minimize", "Bug Fighter", "Ancient Fury"}, buff) then
       if getCreatureName(cid) == "Ditto" and pokes[getPlayerStorageValue(cid, 1010)] and getPlayerStorageValue(cid, 1010) ~= "Ditto" then
          if isSummon(cid) then
             local item = getPlayerSlotItem(getCreatureMaster(cid), 8)
             doSetCreatureOutfit(cid, {lookType = getItemAttribute(item.uid, "transOutfit")}, -1)   --alterado v2.6.1
          end 
       elseif not isSleeping(cid) then
          doRemoveCondition(cid, CONDITION_OUTFIT)
       end
       setPlayerStorageValue(cid, 9658783, -1)
       setPlayerStorageValue(cid, 625877, -1) --alterado v2.6 
    end 
    if isInArray({"Strafe", "Agility", "Ancient Fury", "War Dog", "Fighter Spirit", "Furious Legs", "Ultimate Champion", "Bug Fighter"}, buff) then
       setPlayerStorageValue(cid, 374896, -1)   --alterado v2.6
    end                                         
    setPlayerStorageValue(cid, stg, -1)      
    return true 
    end
     
    doSendMagicEffect(getThingPos(cid), eff)
        
    if first then
    if buff == "Strafe" or buff == "Agility" then
       setPlayerStorageValue(cid, 374896, 1) --velo atk --alterado v2.6
       doRaiseStatus(cid, 0, 0, 100, a)
    elseif buff == "Tailwind" then
       doRaiseStatus(cid, 0, 0, 200, a)
    elseif buff == "Rage" then
       doRaiseStatus(cid, 2, 0, 0, a)
    elseif buff == "Harden" then
       doRaiseStatus(cid, 0, 2, 0, a)
    elseif buff == "Calm Mind" then
       doRaiseStatus(cid, 0, 2, 0, a)
    elseif buff == "Ancient Fury" then
       doSetCreatureOutfit(cid, {lookType = outFurys[getCreatureName(cid)].outFury}, a*1000)
       setPlayerStorageValue(cid, 374896, 1)  --velo atk
       if getCreatureName(cid) == "Shiny Charizard" then 
          doRaiseStatus(cid, 2, 0, 0, a)    --atk melee     --alterado v2.6
       else
          doRaiseStatus(cid, 0, 2, 0, a)    --def
       end   
       setPlayerStorageValue(cid, 625877, outFurys[getCreatureName(cid)].outFury)     --alterado v2.6
    elseif buff == "War Dog" then
       doRaiseStatus(cid, 1.5, 1.5, 0, a)
       setPlayerStorageValue(cid, 374896, 1)  --velo atk
    elseif buff == "Rest" then
       doSleep2(cid, cd, getPlayerStorageValue(cid, conds["Sleep"]), true) 
       doCreatureAddHealth(cid, getCreatureMaxHealth(cid))
    elseif isInArray({"Fighter Spirit", "Furious Legs", "Ultimate Champion"}, buff) then
       doRaiseStatus(cid, 1.5, 0, 0, a)    --atk melee    --alterado v2.6
       setPlayerStorageValue(cid, 374896, 1)  --velo atk 
       addEvent(setPlayerStorageValue, a*1000, cid, 465987, -1)                                              
    elseif isInArray({"Future Sight", "Camouflage", "Acid Armor", "Iron Defense", "Minimize"}, buff) then
       doSetCreatureOutfit(cid, {lookType = outImune[buff]}, -1)
       setPlayerStorageValue(cid, 9658783, 1)  
       setPlayerStorageValue(cid, 625877, outImune[buff]) --alterado v2.6                             
    elseif buff == "Bug Fighter" then
       setPlayerStorageValue(cid, 374896, 1)  --velo atk  --alterado v2.6
       doRaiseStatus(cid, 1.5, 1.5, 100, a)
       doSetCreatureOutfit(cid, {lookType = 1448}, a*1000)
       setPlayerStorageValue(cid, 625877, 1448)  --alterado v2.6
    end                                                                            
    end 
    addEvent(doBuff2, 1000, cid, -1, eff, a, buff, false, atributo)   
end
 
if ret.buff and ret.buff ~= "" then
   doBuff2(ret.id, ret.cd, ret.eff, ret.check, ret.buff, ret.first, (ret.attr and ret.attr or false))
end
 
if isSummon(ret.id) and getPokemonBoost(ret.id) ~= 0 and math.random(1, 100) <= getPokemonBoost(ret.id) then   --sistema "pegou no boost"
   if ret.cond and not isInArray({"Poison", "Burn", "Leech", "Fear"}, ret.cond) then   --alterado v2.6
      doSendAnimatedText(getThingPosWithDebug(ret.id), "BOOST", 215)   --alterado v2.8 
      return true
   end
end
 
if ret.cond and ret.cond == "Miss" then
doMiss2(ret.id, ret.cd, ret.eff, ret.check, ret.spell)
elseif ret.cond and ret.cond == "Silence" then
doSilence2(ret.id, ret.cd, ret.eff, ret.check)
elseif ret.cond and ret.cond == "Slow" then
doSlow2(ret.id, ret.cd, ret.eff, ret.check, ret.first)
elseif ret.cond and ret.cond == "Confusion" then
doConfusion2(ret.id, ret.cd, ret.check)
elseif ret.cond and ret.cond == "Burn" then
doBurn2(ret.id, ret.cd, ret.check, ret.damage)
elseif ret.cond and ret.cond == "Poison" then
doPoison2(ret.id, ret.cd, ret.check, ret.damage)
elseif ret.cond and ret.cond == "Fear" then
doFear2(ret.id, ret.cd, ret.check, ret.skill)
elseif ret.cond and ret.cond == "Stun" then
doStun2(ret.id, ret.cd, ret.eff, ret.check, ret.spell)
elseif ret.cond and ret.cond == "Paralyze" then
doParalyze2(ret.id, ret.cd, ret.eff, ret.check, ret.first)
elseif ret.cond and ret.cond == "Sleep" then
doSleep2(ret.id, ret.cd, ret.check, ret.first)
elseif ret.cond and ret.cond == "Leech" then
doLeech2(ret.id, ret.attacker, ret.cd, ret.check, ret.damage)
end
end
 
--------------------------------
function cleanBuffs2(item)
if item ~= 0 then
   for i = 1, 3 do
       doItemEraseAttribute(item, Buffs[1])
       doItemEraseAttribute(item, Buffs[1].."eff")
       doItemEraseAttribute(item, Buffs[1].."skill")
   end   
end
end 
--------------------------------
function doCureStatus(cid, type, playerballs)    --alterado v2.9 \/
if not isCreature(cid) then return true end
if playerballs and isPlayer(cid) then
local bp = getPlayerSlotItem(cid, CONST_SLOT_BACKPACK)
local mb = getPlayerSlotItem(cid, 8)
local balls = getPokeballsInContainer(bp.uid)
if isPokeball(mb.itemid) then
if not type or type == "all" then
for b = 1, #injuries2 do
   doItemSetAttribute(mb.uid, ""..injuries2.n.."", -1)
end
else
doItemSetAttribute(mb.uid, ""..type.."", -1)
end
end
if #balls >= 1 then
  for _, uid in ipairs(balls) do
      if not type or type == "all" then
for b = 1, #injuries2 do
doItemSetAttribute(uid, ""..injuries2.n.."", -1)
end
else
doItemSetAttribute(uid, ""..type.."", -1)
end
            end
        end    
end
if type == "all" then
for a = 1, #injuries2 do
setPlayerStorageValue(cid, injuries2[a].m, -1)
end
return true
end
for a, b in pairs (injuries2) do
if b.n == type then
setPlayerStorageValue(cid, b.m, -1)
end
end
end 
---------------------------------
function isWithCondition(cid)
for i = 1, #injuries2 do 
   if getPlayerStorageValue(cid, injuries2.m) >= 1 then
      return true
   end
end
return false
end
---------------------------------
function doCureBallStatus(item, type)
if not type or type == "all" then
for b = 1, #injuries2 do
doItemSetAttribute(item, ""..injuries2.n.."", -1)
end
else
doItemSetAttribute(item, ""..type.."", -1)
end
end
---------------------------------
function isBurning(cid)
if not isCreature(cid) then return false end
if getPlayerStorageValue(cid, conds["Burn"]) >= 0 then return true end
return false
end
 
function isPoisoned(cid)
if not isCreature(cid) then return false end
if getPlayerStorageValue(cid, conds["Poison"]) >= 0 then return true end
return false
end
 
function isSilence(cid)
    if not isCreature(cid) then return false end
    if getPlayerStorageValue(cid, conds["Silence"]) >= 0 then return true end
return false
end
 
function isParalyze(cid)      
    if not isCreature(cid) then return false end
    if getPlayerStorageValue(cid, conds["Paralyze"]) >= 0 then return true end
return false
end
    
function isSleeping(cid)
    if not isCreature(cid) then return false end
    if getPlayerStorageValue(cid, conds["Sleep"]) >= 0 then return true end
return false
end
 
function isWithFear(cid)
    if not isCreature(cid) then return false end
    if getPlayerStorageValue(cid, conds["Fear"]) >= 0 then return true end
return false
end 
-----------------------------------
function doMoveInArea2(cid, eff, area, element, min, max, spell, ret)
if not isCreature(cid) then return true end
   
   local pos = getPosfromArea(cid, area)  --alterado v1.8
   setPlayerStorageValue(cid, 21101, -1) 
   
   local skills = {"Gust"} --alterado v1.7
   local n = 0 
   local l = 0
 
while n < #pos do
if not isCreature(cid) then return true end 
if isSleeping(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end   
if isWithFear(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end
 
   n = n+1
   thing = {x=pos[n].x,y=pos[n].y,z=pos[n].z,stackpos=253}
   local pid = getThingFromPosWithProtect(thing)
   ----
   if pid ~= cid then
   if spell and isInArray(skills, spell) then
      if spell == "Stick Throw" then
         addEvent(sendEffWithProtect, l*300, cid, pos[n], eff)
         addEvent(sendMoveBack, 1200, cid, pos, eff, min, max)
         addEvent(doMoveDano2, l*300, cid, pid, element, min, max, ret, spell) --alterado v1.6  
      elseif spell and spell == "Gyro Ball" then   --alterado v1.7
         pos[n].x = pos[n].x+1
         addEvent(sendEffWithProtect, l*200, cid, pos[n], eff)
         addEvent(doMoveDano2, l*200, cid, pid, element, min, max, ret, spell) 
      else
         addEvent(sendEffWithProtect, l*200, cid, pos[n], eff)
         addEvent(doMoveDano2, l*200, cid, pid, element, min, max, ret, spell)  --alterado v1.6  
      end
   elseif spell and spell == "Epicenter" then
      local random = math.random(50, 500)   
      addEvent(sendEffWithProtect, random, cid, pos[n], eff)
      addEvent(doDanoWithProtect, random, cid, GROUNDDAMAGE, pos[n], crusher, -min, -max, 255)
   elseif spell and spell == "Shadowave" then
      posi = {x=pos[n].x, y=pos[n].y+1, z=pos[n].z}
      sendEffWithProtect(cid, posi, eff)
      doMoveDano2(cid, pid, element, min, max, ret, spell) --alterado v1.6 
   elseif spell and spell == "Surf" then
      addEvent(sendEffWithProtect, math.random(50, 500), cid, pos[n], eff)
      addEvent(doMoveDano2, 400, cid, pid, element, min, max, ret, spell)  --alterado v1.6 
   elseif spell and spell == "Sand Attack" then
      addEvent(sendEffWithProtect, n*200, cid, pos[n], eff)
      addEvent(doMoveDano2, n*200, cid, pid, element, min, max, ret, spell) --alterado v1.6 
   elseif spell and (spell == "Muddy Water" or spell == "Venom Motion") then
      local arr = {
      [1] = 0, [2] = 0, [3] = 0, [4] = 200, [5] = 200, [6] = 200, [7] = 400, [8] = 400, [9] = 400, [10] = 600, [11] = 600,
      [12] = 600, [13] = 800, [14] = 800, [15] = 800
      }
 
      local time = {0, 200, 400, 600, 800}
             
      addEvent(sendEffWithProtect, arr[n], cid, pos[n], eff)
      addEvent(doMoveDano2, arr[n], cid, pid, element, min, max, ret, spell)
   elseif spell and (spell == "Inferno" or spell == "Fissure" or spell == "Volcano Burst") then  --alterado v1.8
      addEvent(sendEffWithProtect, math.random(0, 500), cid, pos[n], eff)
      addEvent(doMoveDano2, math.random(0, 500), cid, pid, element, min, max, ret, spell)     
   else
      sendEffWithProtect(cid, pos[n], eff)
      doMoveDano2(cid, pid, element, min, max, ret, spell) 
   end
   end
   l = l+1
end
end
-------------------------------------------
function doMoveDano2(cid, pid, element, min, max, ret, spell)
if isCreature(pid) and isCreature(cid) and cid ~= pid then
   if isNpcSummon(pid) and getCreatureTarget(pid) ~= cid then
      return true                             --alterado v2.6
   end
   if ehNPC(pid) then return true end
   ---
   local canAtk = true     --alterado v2.6
   if getPlayerStorageValue(pid, 21099) >= 1 then
      doSendMagicEffect(getThingPosWithDebug(pid), 135)
      doSendAnimatedText(getThingPosWithDebug(pid), "REFLECT", COLOR_GRASS)
      addEvent(docastspell, 100, pid, spell)
      if getCreatureName(pid) == "Wobbuffet" then
         doRemoveCondition(pid, CONDITION_OUTFIT)    
      end
      canAtk = false
      setPlayerStorageValue(pid, 21099, -1)
      setPlayerStorageValue(pid, 21100, 1)
      setPlayerStorageValue(pid, 21101, cid)
      setPlayerStorageValue(pid, 21103, getTableMove(cid, getPlayerStorageValue(cid, 21102)).f)
   end
   ---   
   if isSleeping(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end
   if isWithFear(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end
      if isSummon(cid) and (ehMonstro(pid) or (isSummon(pid) and canAttackOther(cid, pid) == "Can") or (isPlayer(pid) and canAttackOther(cid, pid) == "Can" and #getCreatureSummons(pid) <= 0)) and pid ~= cid then
         if canAtk then     --alterado v2.6
            if ret and ret.cond then
               ret.id = pid
               ret.check = getPlayerStorageValue(pid, conds[ret.cond])
               doCondition2(ret)
            end
            if spell == "Selfdestruct" then
               if getPlayerStorageValue(pid, 9658783) <= 0 then
                  doSendAnimatedText(getThingPosWithDebug(pid), "-"..max.."", COLOR_NORMAL)
                  doCreatureAddHealth(pid, -max)    --alterado v2.6
               end
            else
               doTargetCombatHealth(cid, pid, element, -(math.abs(min)), -(math.abs(max)), 255)
            end
         end
      elseif ehMonstro(cid) and (isSummon(pid) or (isPlayer(pid) and #getCreatureSummons(pid) <= 0)) and pid ~= cid then
         if canAtk then    --alterado v2.6
            if ret and ret.cond then
               ret.id = pid
               ret.check = getPlayerStorageValue(pid, conds[ret.cond])
               doCondition2(ret)
            end
            if spell == "Selfdestruct" then
               if getPlayerStorageValue(pid, 9658783) <= 0 then
                  doSendAnimatedText(getThingPosWithDebug(pid), "-"..max.."", COLOR_NORMAL)
                  doCreatureAddHealth(pid, -max)    --alterado v2.6
               end
            else
               doTargetCombatHealth(cid, pid, element, -(math.abs(min)), -(math.abs(max)), 255)
            end
         end
      elseif isPlayer(cid) and ehMonstro(pid) and pid ~= cid then
         if canAtk then    --alterado v2.6
            if ret and ret.cond then
               ret.id = pid
               ret.check = getPlayerStorageValue(pid, conds[ret.cond])
               doCondition2(ret)
            end
            if spell == "Selfdestruct" then
               if getPlayerStorageValue(pid, 9658783) <= 0 then
                  doSendAnimatedText(getThingPosWithDebug(pid), "-"..max.."", COLOR_NORMAL)
                  doCreatureAddHealth(pid, -max)    --alterado v2.6
               end
            else
               doTargetCombatHealth(cid, pid, element, -(math.abs(min)), -(math.abs(max)), 255)
            end
         end
      end
end
end
--------------------------------------------------------------------------------
function sendEffWithProtect(cid, pos, eff)  --Manda algum magic effect com proteçoes 
if not isCreature(cid) then return true end
if isSleeping(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end
if isWithFear(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end
local checkpos = pos
checkpos.stackpos = 0
if not hasTile(checkpos) then
return true
end
if not canWalkOnPos2(pos, false, true, false, true, false) then --alterado v2.6
return true
end
 
   doSendMagicEffect(pos, eff)
end
---------------------------------------------------------------------------------
function getThingPosWithDebug(what)
if not isCreature(what) or getCreatureHealth(what) <= 0 then
return {x = 1, y = 1, z = 10}
end
return getThingPos(what)
end
---------------------------------------------------------------------------------
function doDanoWithProtect(cid, element, pos, area, min, max, eff)  --Da dano com proteçoes
if not isCreature(cid) then return true end
if isSleeping(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end
if isWithFear(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end
   doAreaCombatHealth(cid, element, pos, area, -(math.abs(min)), -(math.abs(max)), eff)
end
---------------------------------------------------------------------------------
function doDanoWithProtectWithDelay(cid, target, element, min, max, eff, area)
const_distance_delay = 56
if not isCreature(cid) then return true end
if isSleeping(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end
if isWithFear(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end
   if target ~= 0 and isCreature(target) and not area then
      delay = getDistanceBetween(getThingPosWithDebug(cid), getThingPosWithDebug(target)) * const_distance_delay
      addEvent(doDanoWithProtect, delay, cid, element, getThingPosWithDebug(target), 0, min, max, eff)
      return true
   end
addEvent(doDanoWithProtect, 200, cid, element, getThingPosWithDebug(target), area, min, max, eff)
end   
--------------------------------------------------------------------------------
function sendDistanceShootWithProtect(cid, frompos, topos, eff)    --Manda um efeito de distancia com proteçoes
if not isCreature(cid) then return true end
if isSleeping(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end
if isWithFear(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end
   doSendDistanceShoot(frompos, topos, eff)
end
---------------------------------------------------------------------------------
function sendMoveBack(cid, pos, eff, min, max)     --Manda o Atk do farfetchd de volta...
local m = #pos+1
for i = 1, #pos do
    if not isCreature(cid) then return true end
    ---
    m = m-1
    thing = {x=pos[m].x,y=pos[m].y,z=pos[m].z,stackpos=253}
    local pid = getThingFromPosWithProtect(thing)
    addEvent(doMoveDano2, i*200, cid, pid, FLYINGDAMAGE, min/4, max/4)  
    addEvent(sendEffWithProtect, i*200, cid, pos[m], eff)   --alterado v1.3
    -- 
end
end  
---------------------------------------------------------------------------------
function upEffect(cid, effDis)
if not isCreature(cid) then return true end
if isSleeping(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end
if isWithFear(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end
pos = getThingPos(cid)
frompos = {x = pos.x+1, y = pos.y, z = pos.z}
frompos.x = pos.x - math.random(4, 7)
frompos.y = pos.y - math.random(5, 8)
doSendDistanceShoot(getThingPos(cid), frompos, effDis)
end
---------------------------------------------------------------------------------
function fall(cid, master, element, effDis, effArea)   --Function pra jogar efeitos pra cima e cair depois... tpw falling rocks e blizzard
if isCreature(cid) then
if isWithFear(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end
if isSleeping(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end
   pos = getThingPos(cid)
   pos.x = pos.x + math.random(-4,4)
   pos.y = pos.y + math.random(-4,4)
   if isMonster(cid) or isPlayer(cid) then
      frompos = {x = pos.x+1, y = pos.y, z = pos.z}
   elseif isSummon(cid) then
      frompos = getThingPos(master)
   end
   frompos.x = pos.x - 7
   frompos.y = pos.y - 6
   if effDis ~= -1 then                --alterado!
      doSendDistanceShoot(frompos, pos, effDis)
   end
   doAreaCombatHealth(cid, element, pos, 0, 0, 0, effArea)
end
end
---------------------------------------------------------------------------------
function canDoMiss(cid, nameAtk)                                            --alterado v2.5
local atkTerra = {"Sand Attack", "Mud Shot", "Mud Bomb", "Stomp", "Crusher Stomp", "Mud Slap", "Sand Tomb"} --alterado v2.7
local atkElectric = {"Electric Storm", "Thunder Wave", "Thunder", "Electricity", "Wild Charge"}  --alterado v2.7
if not isCreature(cid) then return false end
if isPlayer(cid) then return true end
if not pokes[getCreatureName(cid)] then return true end
 
if isInArray(atkTerra, nameAtk) then
   if (pokes[getCreatureName(cid)].type == "flying") or (pokes[getCreatureName(cid)].type2 == "flying") or isInArray(specialabilities["levitate"], getCreatureName(cid))  then
      return false      
   end
elseif isInArray(atkElectric, nameAtk) then
   if (pokes[getCreatureName(cid)].type == "ground") or (pokes[getCreatureName(cid)].type2 == "ground") then
      return false      
   end
end
 
return true
end
---------------------------------------------------------------------------------
function doMoveInAreaMulti(cid, effDis, effMagic, areaEff, areaDano, element, min, max, ret)   --alterado v2.7
if not isCreature(cid) then return true end                     
local pos = getPosfromArea(cid, areaEff)
local pos2 = getPosfromArea(cid, areaDano)
local n = 0
 
while n < #pos2 do
if not isCreature(cid) then return true end
if isSleeping(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end
if isWithFear(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end
 
n = n+1
thing = {x=pos2[n].x,y=pos2[n].y,z=pos2[n].z,stackpos=253}
      if n < #pos then
         addEvent(sendDistanceShootWithProtect, 50, cid, getThingPos(cid), pos[n], effDis) --39
         addEvent(sendEffWithProtect, 100, cid, pos[n], effMagic)  -- 112
         ---                                                                                        --alterado v2.6.1
         if math.random(1, 2) == 2 then
            addEvent(sendDistanceShootWithProtect, 450, cid, getThingPos(cid), pos[n], effDis) --550
            addEvent(sendEffWithProtect, 550, cid, pos[n], effMagic)  -- 650
         end
      end   
      local pid = getThingFromPosWithProtect(thing)
      if isCreature(pid) then
         if ret and ret.id == 0 then     --alterado v2.8
            ret.id = pid
            ret.check = getPlayerStorageValue(pid, conds[ret.cond])
         end
         if not ret then ret = {} end --alterado v2.7
         doMoveDano2(cid, pid, element, min, max, ret, getPlayerStorageValue(cid, 21102))
      end
end       
end 
---------------------------------------------------------------------------------------
function doDoubleHit(cid, pid, valor, races)           --alterado v2.6
if isCreature(cid) and isCreature(pid) then
   if getPlayerStorageValue(cid, 374896) >= 1 then
      if getMasterTarget(cid) == pid then
         if isInArray({"Kadabra", "Alakazam", "Mew", "Shiny Abra", "Shiny Alakazam"}, getCreatureName(cid)) then
            doSendDistanceShoot(getThingPosWithDebug(cid), getThingPosWithDebug(pid), 39)
         end
         if isSummon(cid) then
            doTargetCombatHealth(getCreatureMaster(cid), pid, PHYSICALDAMAGE, -math.abs(valor), -math.abs(valor), 255)
         else
            doCreatureAddHealth(pid, -math.abs(valor), 3, races[getMonsterInfo(getCreatureName(pid)).race].cor)
         end
      end
   end
end
end
----------------------------------------------------------------------------------------
function doDanoInTarget(cid, target, combat, min, max, eff)   --alterado v2.7
if not isCreature(cid) or not isCreature(target) then return true end
if isSleeping(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end
if isWithFear(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end
   doTargetCombatHealth(cid, target, combat, -math.abs(min), -math.abs(max), eff)
end 
-----------------------------------------------------------------------------------------
function doDanoInTargetWithDelay(cid, target, combat, min, max, eff)     --alterado v2.7
const_distance_delay = 56
if not isCreature(cid) or not isCreature(target) then return true end
if isSleeping(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end
if isWithFear(cid) and getPlayerStorageValue(cid, 3644587) >= 1 then return true end
   local delay = getDistanceBetween(getThingPosWithDebug(cid), getThingPosWithDebug(target)) * const_distance_delay
   addEvent(doDanoInTarget, delay, cid, target, combat, min, max, eff)
end 

Alguém?  ;--;

Link para o post
Compartilhar em outros sites

Função table.getn tá recusando argumento na linha 900 e pouco do script, a tabela tem alguma coisa de errado...

Acho que é

table.getn(area[1])

A função table.getn, mede o tamanho, então não faz sentido colocar índice, a menos, que seja uma table dentro de outra, pra isso, precisamos ds função que gera a tabela com nome área...

Se quiser sua dúvida tirada, mande PM com os links, e não com a dúvida (outros podem ter a mesma dúvida, e o fórum serve para ser usado).

 

Tópicos:


 

yNlhRVC.png

 

55px-Judo_yellow_belt.svg.png

Link para o post
Compartilhar em outros sites

bom esse lance de por o poke na area 0/0/10 e verdade porque sem eles o serve acaba dando esse error msmo, como de exemplo  a magia leech seed (pelo menos aki dava esse error) agora para arrumar ele vc deve colocar os monstros na parte certa, tente pegar algum mapa de poketibia e veja se o erro passa

Minhas Gambiarras :rock:

 

 

[PDA] Pokedex Mostrando o Catch

 

http://www.tibiaking.com/forum/topic/54998-pda-arrumando-a-dex/?view=findpost&p=323041

 

Link para o post
Compartilhar em outros sites
Caronte, achei essa parte na Function getPosfromArea(cid,area) do 032-Position, então eu devo retirar o [1] ou os números no parêntese certo?
 
function getPosfromArea(cid,area)
icenter = math.floor(table.getn(area)/2)+1
jcenter = math.floor(table.getn(area[1])/2)+1
center = area[icenter]
ivar = table.getn(area)
jvar = table.getn(area[1])
i = table.getn(area)^2
j = table.getn(area[1])^2
Link para o post
Compartilhar em outros sites

Primeiro tem que ver como funciona a variável área, pois se for assim, por exemplo:

area = { {1, 2, 3}, }
Nesse caso, area[1], seria:

{1, 2, 3}
Que é uma tabela de índice 1, sem nome, dentro de uma outra, chamada área...

Como o nome da tabela é área, seria algo tipo:

{0, 1, 0},

Sendo assim, talvez tenha um elemento invalido na tabel...

Se quiser sua dúvida tirada, mande PM com os links, e não com a dúvida (outros podem ter a mesma dúvida, e o fórum serve para ser usado).

 

Tópicos:


 

yNlhRVC.png

 

55px-Judo_yellow_belt.svg.png

Link para o post
Compartilhar em outros sites
Eu editei tirando o [1] e continuou a mesma coisa...
 
A parte inteira do getPosfromArea é essa:
Onde vê essa variável?
 
function getPosfromArea(cid,area)
icenter = math.floor(table.getn(area)/2)+1
jcenter = math.floor(table.getn(area)/2)+1
center = area[icenter]
ivar = table.getn(area)
jvar = table.getn(area)
i = table.getn(area)^2
j = table.getn(area)^2
 
 
local mydir = isCreature(getMasterTarget(cid)) and getCreatureDirectionToTarget(cid, getMasterTarget(cid)) or getCreatureLookDir(cid)
setPlayerStorageValue(cid, 21101, -1)  --alterado v1.6
 
   if center[jcenter] == 3 then
          if mydir == 0 then
             signal = {-1,1,1,2}
          elseif mydir == 1 then
             signal = {1,-1,2,1}
          elseif mydir == 2 then
             signal = {1,-1,1,2}
          elseif mydir == 3 then
             signal = {-1,1,2,1}
          end
   else
   signal = {-1,1,1,2}
   end
 
POSITIONS = {}  
P = 0 
   
repeat
pvar = {0,0}
I = area[ivar]
J = I[jvar]
i = i-1
j = j-1
   if J == 1 then
          if jvar < jcenter then  
          pvar[signal[3]] = signal[1]*math.abs((jcenter-jvar)) 
          elseif jvar > jcenter then  
          pvar[signal[3]] = signal[2]*math.abs((jcenter-jvar)) 
          end
          
          if ivar < icenter then  
          pvar[signal[4]] = signal[1]*math.abs((icenter-ivar)) 
          elseif ivar > icenter then
          pvar[signal[4]] = signal[2]*math.abs((icenter-ivar))
          end
   end    
   if jvar > 1 then
   jvar = (jvar-1)
   elseif ivar > 1 then
   jvar = table.getn(area)
   ivar = (ivar-1)
   end  
local pos = getThingPos(cid)
local areapos = {x=pos.x+(pvar[1]),y=pos.y+(pvar[2]),z=pos.z}  
 
  if pos.x ~= areapos.x or pos.y ~= areapos.y then
     P = P+1
     POSITIONS[P] = areapos
  end 
  
until i <= 0 and j <= 0
 
return POSITIONS
end
Link para o post
Compartilhar em outros sites
  • 1 year later...

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 matiasz123
      [OTCLIENT SHOWOFF] Questlog Actualizado
      Updated quest log, showing quest details:
      Npc name Npc level Npc outfit Mission status Description Amount of reward experience Number of reward points Enemies you must kill Items to collect  
       

       
      When you click on the follow button, an alternative map opens that shows you the next objective of the mission and at what coordinates:


       
      If you want the system write a comment with your discord
    • Por S H I O N
      oiee, estou aqui para disponibilizar uma base bem antiga que achei nos meus arquivos, eu iria apagar ela mais preferi deixar ela aqui para caso alguem queira usar ela para alguma coisa no futuro, pq eu simplesmente peguei em 2018 por ai e nem usei mais pelo o fato de ter muitos bugs e para quem nao entende de script e sistemas ela se torna um pesadelo na vida de alguem, a maioria dos bugs q ela tem da para corrigir muito rapido mais tem uns q sao extremamente dificeis entao um conselho para quem pegar essa base... boa sorte kkkk vc vai precisar de uns meses para tirar os bugs dela mais ela e jogavel ainda. façam um bom uso dela, se caso o cara manjar bem de editar poketibias e tirar bugs e mexer com scripts, para ele vai ser facil tirar esses bugs q tem nela.
      .
      .
      .
      .
      .
      .
      .
      vamos ao que interessa, o download dela vai esta pelo o mediafire e dentro contem o servidor e o client 
      quando baixar e so trocar o ip do servidor e trocar o ip do seu client e pronto.
      .
      .
      .
      .
      .
      .
      vou deixar algumas prints abaixo.
      .
      .
      .
      espero ver um dia essa base online dnv, amava jogar, por isso nao excluir ela
      resolvi deixar aqui, acredito que vao cuidar bem dela. vlw fui.
       
    • Por spotifyy
      Olá, vou tentar não me esticar muito aqui, mas estou mexendo em uma base de poketibia(1098) para estudos
      e provavelmente em algum momento estarei oficialmente lançando.
      Aceito pessoas que também estão em aprendizado e querendo colaborar com o projeto.
      E caso você tenha muito conhecimento na área e queira colaborar também será tão bem vindo/a
      quanto alguém em aprendizado com vontade de evoluir.
       
      Algumas features
       
      >Market Global
      >Poções de XP
      >Gacha stone
      >Boost(+100)
      >Level system
      >Eggs
      >Mapa HUB
      >Eventos diários (PVP/PVE)
      >Outland
      >Shiny Hunts
      >Shiny Box Hunt
      >Area PVP
      e mais algumas outras coisas.
       
       
       
      Caso alguem tenha interesse em integrar o projeto só me chamar no discord que passo as ideias que tenho para o projeto.
       
      Discord: nenep1
       
       
       
       
       
    • Por Baryon
      Boa noite amigos, estou aqui para apresentar meu projeto.
      Estou aqui no intuito de tentar desenvolver um ats baseado em naruto full perspectiva e com uso reduzido de bot, teremos um bot próprio que ira lhe auxiliar na cura e com espaço para 1 magia com finalidade de treino, assim focando que os players possam tentar se divertir jogando na mao tanto a parte pve como pvp do game (oque eu acho mais legal).
      O Servidor ja se encontra com alguns sistema sendo eles:
      ・Passe de batalha
      ・Painel de missoes 
      ・Village war
      ・Sistema de vilas
      ・Bingo book
      ・Autoloot
      ・Ninja procurado
      ・Painel de Dungeons
      ・ World Boss
      Nossas vocaçoes sao divididas em classes sendo elas:
       ・Shooters: Deidara, Gaara, Kankuro, Tenten, Sasori, Konan.
       ・Especialistas: Shikamaru, Nagato, Hashirama, Oonoki, Orochimaru.
       ・Assassinos: Asuma, Madara, Minato, Sasuke, Obito, Kisame.
       ・Suportes: Sakura, Shizune, Ino, Tsunade.
       ・Lutadores: Naruto, Kiba, Chouji, Lee, Neji, Hinata.
             (obs: ja temos por volta de mais 10 personagens "prontos" alem desses com foco em atualizações futuras)
       Atualmente apenas eu e mais uma pessoas estamos desenvolvendo o servidor e ambos trabalham o tempo ou seja nao temos tanto tempo disponivel entao estou em buscas de novas pessoas com certa experiencia para integrar a equipe tenho em mente 4 vagas disponiveis que sao: 1 Mapper, 1 Dev, 1 Designer, 1 Moderador (ficara em contato com a staff e interagindo em nosso discord, ficando por dentro das novidades e no inicio do game ira iniciar como tutor para auxiliar os players).
       Caso alguem tenha interessa em embarcar nessa aventura favor entrar em contato cmg pelo discord 😉 em breve estarei postando mais atualizaçoes do ot aqui!

       Nosso discord: https://discord.gg/pPTkbAnNSV
      Meu contato no discord: baryon1492



    • Por LuisDias
      Olá pessoal! Estamos começando um projeto de desenvolvimento de um servidor de POKETIBIA, ainda bem no início. Gostaria de saber se é possível adicionar sistemas que não estão na base. No caso, a base utilizada será a DASH. Se for possível, gostaria de saber se alguém tem sistemas compatíveis com essa base para disponibilizar, por exemplo o MARKET. Obrigado por toda a ajuda. 
       
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo