Ir para conteúdo

BrunooMaciell

Infante
  • Total de itens

    1917
  • Registro em

  • Última visita

  • Dias Ganhos

    7

Posts postados por BrunooMaciell

  1. 12 horas atrás, Yan18 disse:

    O sistema do ícone system geralmente fica na pasta Data/Lib/IconSys.lua (na base do PokeRoxy fica lá), e o script pega a ball na bag e transforma no id com ícone. Só que tem base que só transforma a ball em ícone quando coloca a ball no slot de soltar o pokémon e tem base que pega da bag. Mas pelo que vi, nessa base pega do slot.

    Eu vi a tabela.

     

    Mas achei aqui como.

     

    Pode encerrar ^^ 

     

     

  2. Bom uma duvida relacionado ao icon system do server PokeRoxy.

     

    Queria saber como ativa ele queria testar uma coisa ate um possivel systema de paint nele.

     

    Porem nao sei como ativa o icon system.

     

    Sei que o server tem o systema de icon porem nao sei como ta e nao sei como ativa.

     

    Quem tem o server e puder me ajudar na parte de como ativa o sistema. 

     

    Rep+++

  3. 2 horas atrás, Alphapetboy disse:

    Estou fazendo muitas mudanças no jogo e meu medo é ele lançar uma versão nova e eu ter q fazer tudo dnv..

    to conseguindo resolver alguns bugs la

    A mano e o risco mas acredito EU que ele nao va atualiza isso aqui nao male male da suport =/ unica coisa que ele falo que ia fazer e trazer uma nova source mais limpa.

     

    Mas bom ja nao sei mas da pesca como eu disse tenta ver na conf.lua em skill xp 

  4. Isto ocorre quando itens desse mapa nao tem no seu server.

     

    Pode ate ter o mesmo item porem pode estar com o ID diferente.

     

    Oque eu recomendo caso queira muito este mapa nao sei se e de outro server.

     

    E apaga estes item vermelho e editar em cima.

  5. 53 minutos atrás, Alphapetboy disse:

    Sobre os erros citados no servidor e se vc vai fazer alguma update como disse, os erros que encontrei eu to tentando solucionar

    o autoloot eu não consegui ainda e nem o bug da agua transparente (não da pra pescar ou nadar) ou o bug do level do fishing que não consegui arrumar, tá upando SUPER rapido

    o level do player ta traquilo

    Queria saber se realmente vai fazer uma v2

    Sobre o XP da pesca testa aqui o 

     

    Vai na sua conf.lua 

     

    Pesquisa por >> rateSkill 

     

    Testa coloca um valor bem baixo e ve 

    18 horas atrás, Deadpool disse:

    tem um que postaram e esta 100% kk

    Vou da uma olhada!!

     

    Se pretende ainda posta uma nova source melhorada e se possivel arrumado o BUG do exe e com sistema de unique funcionando ??

     

    OPS: o bug que falo e aquele de resp da source la 

  6. 2 horas atrás, Deadpool disse:

    mt trabalho por aqui, mas fala ai, vou tentar acompanhar o topico, mas so com coisas que realmente ninguem sabe.. abrir um ot todo mundo sabe..

    po se podia da uma ajuda no auto loot do server.

     

    Ele nao funciona 

  7. 18 minutos atrás, knino disse:
     
    
    oi pessoal, muito obrigado pelo servidor deadpool.
    Como eu poderia conectar o servidor com o cliente de outro ip

    So muda o IP do clinte e do server.

     

    Coloca o mesmo IP no server - conf.lua e no cliente - entergame.lua 

  8. Estou com um BUG no exp2.0

     

    Nao sei se esta relacionado mass ...

     

    Tipo quando eu capturo 6 pokemons o 7 se eu capturar ele vem pra minha BAG e nao pro DP e os DP ta tudo configurado tudo certinho.

     

    BUG

    Spoiler


    [28/03/2020 23:34:10] [Error - CreatureScript Interface] 
    [28/03/2020 23:34:10] data/creaturescripts/scripts/exp2.0.lua:onStatsChange
    [28/03/2020 23:34:10] Description: 
    [28/03/2020 23:34:10] data/creaturescripts/scripts/exp2.0.lua:305: attempt to index field '?' (a nil value)
    [28/03/2020 23:34:10] stack traceback:
    [28/03/2020 23:34:10]     data/creaturescripts/scripts/exp2.0.lua:305: in function <data/creaturescripts/scripts/exp2.0.lua:64>

    SCRIPT

    local combats = {                         --alterado v1.6 \/
    [PSYCHICDAMAGE] = {cor = COLOR_PSYCHIC},
    [GRASSDAMAGE] = {cor = COLOR_GRASS},
    [POISONEDDAMAGE] = {cor = COLOR_GRASS},
    [FIREDAMAGE] = {cor = COLOR_FIRE2},                         
    [BURNEDDAMAGE] = {cor = COLOR_BURN},
    [WATERDAMAGE] = {cor = COLOR_WATER},
    [ICEDAMAGE] = {cor = COLOR_ICE},
    [NORMALDAMAGE] = {cor = COLOR_NORMAL},
    [FLYDAMAGE] = {cor = COLOR_FLYING},           
    [GHOSTDAMAGE] = {cor = COLOR_GHOST},
    [GROUNDDAMAGE] = {cor = COLOR_GROUND},
    [ELECTRICDAMAGE] = {cor = COLOR_ELECTRIC},
    [ROCKDAMAGE] = {cor = COLOR_ROCK},
    [BUGDAMAGE] = {cor = COLOR_BUG},
    [FIGHTDAMAGE] = {cor = COLOR_FIGHTING},
    [DRAGONDAMAGE] = {cor = COLOR_DRAGON},
    [POISONDAMAGE] = {cor = COLOR_POISON},
    [DARKDAMAGE] = {cor = COLOR_DARK},               
    [STEELDAMAGE] = {cor = COLOR_STEEL},
    [MIRACLEDAMAGE] = {cor = COLOR_PSYCHIC},  
    [DARK_EYEDAMAGE] = {cor = COLOR_GHOST},
    [SEED_BOMBDAMAGE] = {cor = COLOR_GRASS},
    [SACREDDAMAGE] = {cor = COLOR_FIRE2}, 
    [MUDBOMBDAMAGE] = {cor = COLOR_GROUND}
    }
    
    --alterado v1.5  tabelas agora estao em lib/configuration.lua
    local function sendPlayerDmgMsg(cid, text)
    	if not isCreature(cid) then return true end
    	doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, text)
    end
    
    local races = {
    [4] = {cor = COLOR_FIRE2},
    [6] = {cor = COLOR_WATER},
    [7] = {cor = COLOR_NORMAL},
    [8] = {cor = COLOR_FIRE2},
    [9] = {cor = COLOR_FIGHTING},
    [10] = {cor = COLOR_FLYING},
    [11] = {cor = COLOR_GRASS},
    [12] = {cor = COLOR_POISON},
    [13] = {cor = COLOR_ELECTRIC},
    [14] = {cor = COLOR_GROUND},
    [15] = {cor = COLOR_PSYCHIC},
    [16] = {cor = COLOR_ROCK},
    [17] = {cor = COLOR_ICE},
    [18] = {cor = COLOR_BUG},
    [19] = {cor = COLOR_DRAGON},
    [20] = {cor = COLOR_GHOST},
    [21] = {cor = COLOR_STEEL},
    [22] = {cor = COLOR_DARK},
    [1] = {cor = 180},
    [2] = {cor = 180},
    [3] = {cor = 180},
    [5] = {cor = 180},
    }
    
    local damages = {GROUNDDAMAGE, ELECTRICDAMAGE, ROCKDAMAGE, FLYDAMAGE, BUGDAMAGE, FIGHTINGDAMAGE, DRAGONDAMAGE, POISONDAMAGE, DARKDAMAGE, STEELDAMAGE}
    local fixdmgs = {PSYCHICDAMAGE, COMBAT_PHYSICALDAMAGE, GRASSDAMAGE, FIREDAMAGE, WATERDAMAGE, ICEDAMAGE, NORMALDAMAGE, GHOSTDAMAGE}
    local ignored = {POISONEDDAMAGE, BURNEDDAMAGE}                --alterado v1.6
    local cannotkill = {BURNEDDAMAGE, POISONEDDAMAGE}
    
    function onStatsChange(cid, attacker, type, combat, value)
    
    if combat == FLYSYSTEMDAMAGE then return false end
    if isPlayer(cid) and getCreatureOutfit(cid).lookType == 814 then return false end -- TV
    
    if not isCreature(attacker) then  --alterado v1.5 cid == attacker
    	if not isInArray(fixdamages, combat) and combats[combat] then
    		doSendAnimatedText(getThingPos(cid), value, combats[combat].cor)
    	end
    return true
    end
    
    local damageCombat = combat
    --------------------------------------------------
    --alterado v1.6  retirado os combats sleep_powder e poison_powder daki!
    --------------------------------------------------
    if type == STATSCHANGE_HEALTHGAIN then
    	if cid == attacker then
    	return true
    	end
    	if isSummon(cid) and isSummon(attacker) and canAttackOther(cid, attacker) == "Cant" then
    	return false
    	end
    return true
    end
    --------------------------------------------------
    if isMonster(cid) then
    local valor = value
       if not pokes[getCreatureName(cid)] and damageCombat == COMBAT_PHYSICALDAMAGE then
          valor = getOffense(attacker) * playerDamageReduction
          doCreatureAddHealth(cid, -math.abs(valor), 3, races[7].cor)                       --alterado v1.6 dano nos npcs
          return false
       elseif not pokes[getCreatureName(cid)] and damageCombat ~= COMBAT_PHYSICALDAMAGE then
          doCreatureAddHealth(cid, -math.abs(valor), 3, combats[damageCombat].cor)
          return false
       end
    end
    --------------------------------------------------
    if isPlayer(attacker) then
    
    	local valor = value
    	if valor > getCreatureHealth(cid) then
    		valor = getCreatureHealth(cid)
    	end
    
    	if combat == COMBAT_PHYSICALDAMAGE then
    	return false
    	end
    
    	if combat == PHYSICALDAMAGE then
    	doSendMagicEffect(getThingPos(cid), 3)
    	doSendAnimatedText(getThingPos(cid), valor, races[getMonsterInfo(getCreatureName(cid)).race].cor)
    	end
    
    	if combats[damageCombat] and not isInArray(fixdmgs, damageCombat) then
    	doSendAnimatedText(getThingPos(cid), valor, combats[damageCombat].cor)
    	end
    
    	if #getCreatureSummons(attacker) >= 1 and not isInArray({POISONEDDAMAGE, BURNEDDAMAGE}, combat) then
    		--doPlayerSendTextMessage(attacker, cid, 20, "Seu "..getPokeName(getCreatureSummons(attacker)[1]).." causou "..valor.." de dano no "..getSomeoneDescription(cid)..".")
    	end
    
    return true
    end
    --------------------------------------------------
    if isPlayer(cid) and #getCreatureSummons(cid) >= 1 and type == STATSCHANGE_HEALTHLOSS then
    --if ehMonstro(attacker) and getClosestFreeTile(getCreatureSummons(cid)[1]) >= 1 then
    --doSendAnimatedText(getThingPosWithDebug(attacker), "Hmpfg!", 215)
    --doMonsterSetTarget(attacker, getCreatureSummons(cid)[1])
    --end
    return false
    end
    --if isPlayer(cid) and #getCreatureSummons(cid) >= 1 and type == STATSCHANGE_HEALTHLOSS then
    --if ehMonstro(attacker) and getClosestFreeTile(getCreatureSummons(cid)[1]) <= 0 then
    --doSendAnimatedText(getThingPosWithDebug(attacker), "Grrr!", 215)
    --doMonsterSetTarget(attacker, cid)
    --end
    --return true
    --end
    --------------------------------------------------
    if isPlayer(cid) and #getCreatureSummons(cid) <= 0 and type == STATSCHANGE_HEALTHLOSS then
    
    if isSummon(attacker) or isPlayer(attacker) then
       if canAttackOther(cid, attacker) == "Cant" then return false end
    end
    
    	local valor = 0
    		if combat == COMBAT_PHYSICALDAMAGE then
    			valor = getOffense(attacker)
    		else
    			valor = getSpecialAttack(attacker)
    		end
    
    	valor = valor * playerDamageReduction
    	valor = valor * math.random(83, 117) / 100
    
    	if valor >= getCreatureHealth(cid) then
    		valor = getCreatureHealth(cid)
    	end
    
    	valor = math.floor(valor)
    
        if valor >= getCreatureHealth(cid) then
           if getPlayerStorageValue(cid, 6598754) >= 1 or getPlayerStorageValue(cid, 6598755) >= 1 then
              setPlayerStorageValue(cid, 6598754, -1)
              setPlayerStorageValue(cid, 6598755, -1)
              doRemoveCondition(cid, CONDITION_OUTFIT)
    		  doTeleportThing(cid, {x = 1001, y = 1026, z = 14}, false)
              doCreatureAddHealth(cid, getCreatureMaxHealth(cid))
              return false --alterado v1.8		  	  
    	  elseif getPlayerStorageValue(cid, 577869) >= 1 then
    	  setPlayerStorageValue(cid, 577869, 0)
    	  doTeleportThing(cid, {x = 1009, y = 1084, z = 14}, false)
    	  doCreatureAddHealth(cid, getCreatureMaxHealth(cid))
    	  return false
    	  elseif getPlayerStorageValue(cid, 20000) >= 1 then
    	  setPlayerStorageValue(cid, 20000, 0)
          setPlayerStorageValue(cid,30,0)	  
    			 doTeleportThing(cid, {x = 1172, y = 1366, z = 7}, false)
    			 doCreatureAddHealth(cid, getCreatureMaxHealth(cid))
           doPlayerSendTextMessage(cid, 20, "Você morreu no Saffari por Favor volte mais tarde!")
    	   return false
    	   elseif getPlayerStorageValue(cid, 20001) >= 1 then
    	  setPlayerStorageValue(cid,20001,0) 
    			 doTeleportThing(cid, {x = 1371, y = 1240, z = 7}, false)
    	  doCreatureAddHealth(cid, getCreatureMaxHealth(cid))
    	  doRemoveCondition(cid, CONDITION_OUTFIT)
           doPlayerSendTextMessage(cid, 20, "You are died in demon room, please come back!")
    	  return false
          end 	  
    		  -------------------------------------------     ---
    	  if getPlayerStorageValue(cid, 18) >= 1 then
    	  setPlayerStorageValue(cid,18,0) 
          doRemoveCondition(cid, CONDITION_OUTFIT)
    	  end
    	 ------------Saffari----------------------------------
           if getPlayerStorageValue(cid, 17001) >= 1 or getPlayerStorageValue(cid, 17000) >= 1 or getPlayerStorageValue(cid, 63215) >= 1 then
              doRemoveCondition(cid, CONDITION_OUTFIT)
              setPlayerStorageValue(cid, 17000, 0)
              setPlayerStorageValue(cid, 17001, 0)
              setPlayerStorageValue(cid, 63215, -1) 
              doChangeSpeed(cid, PlayerSpeed)
    local item = getPlayerSlotItem(cid, 8)
    local btype = getPokeballType(item.itemid)
          if #getCreatureSummons(cid) <= 0 then
    		if isInArray(pokeballs[btype].all, item.itemid) then
    			doTransformItem(item.uid, pokeballs[btype].off)
    			doItemSetAttribute(item.uid, "hp", 0)
    		end
          end
          end
          ------------Edited Golden Arena------------------
          if getPlayerStorageValue(cid, 22545) == 1 then
             if getGlobalStorageValue(22550) == 1 then
                doPlayerSendTextMessage(cid, 20, "Você foi o último sobrevivente da Golden Arena! Tome sua recompensa!")
                doPlayerAddItem(cid, 2160, getPlayerStorageValue(cid, 22551)*30/4) 
                doPlayerAddExperience(cid, 1000, getPlayerStorageValue(cid, 22551)*30) 
                setPlayerStorageValue(cid, 22545, -1)
                doTeleportThing(cid, getClosestFreeTile(cid, getClosestFreeTile(cid, posBackGolden)), false)  
                doCreatureAddHealth(cid, getCreatureMaxHealth(cid)-getCreatureHealth(cid))
                --setPlayerRecordWaves(cid)     
                endGoldenArena()
                return false --alterado v1.8           
             else
                 setGlobalStorageValue(22550, getGlobalStorageValue(22550)-1)
                 setPlayerStorageValue(cid, 22545, -1)
                 doTeleportThing(cid, getClosestFreeTile(cid, posBackGolden), false) 
                 doPlayerAddItem(cid, 2152, getPlayerStorageValue(cid, 22551)*5)   
                 doCreatureAddHealth(cid, getCreatureMaxHealth(cid)-getCreatureHealth(cid))
                 --setPlayerRecordWaves(cid)     
                 return true
             end 
         end
        ----------------------------------
    	 if getPlayerSex(cid) == 1 then
         local corpse = doCreateItem(3058, 1, getThingPos(cid))
         doDecayItem(corpse)
    	 doItemSetAttribute(corpse, "name", "dead human (Vol:8). You recognize ".. getCreatureName(cid) ..". He was killed by a ".. getCreatureName(attacker) .."")
         elseif getPlayerSex(cid) == 0 then	 
         local corpse = doCreateItem(3065, 1, getThingPos(cid))
    	 doDecayItem(corpse)
    	 doItemSetAttribute(corpse, "name", "dead human (Vol:8). You recognize ".. getCreatureName(cid) ..". She was killed by a ".. getCreatureName(attacker) .."")
        end
        end
    	doCreatureAddHealth(cid, -valor, 3, 180)
    	if not isPlayer(cid) then
    	addEvent(sendPlayerDmgMsg, 5, cid, "Você perdeu "..valor.." em pontos de vida por um attack de "..getSomeoneDescription(attacker)..".")
    	end
    return false
    end
    --------------------------------------------------
    --if isMonster(attacker) and getPlayerStorageValue(attacker, 201) ~= -1 then
    --	if isPlayer(cid) then
    --	return false
    --	end
    --	if getPlayerStorageValue(getCreatureMaster(cid), ginasios[getPlayerStorageValue(attacker, 201)].storage) ~= 1 then
    --	return false
    --	end
    --end
    ---------------------------------------------------
    --if isMonster(cid) and getPlayerStorageValue(cid, 201) ~= -1 then
    --	if getPlayerStorageValue(getCreatureMaster(attacker), ginasios[getPlayerStorageValue(cid, 201)].storage) ~= 1 then
    --	return false
    --	end
    --end
    --------------------------------------------------
    if ehMonstro(cid) and ehMonstro(attacker) then 
    return false                                          --edited monstro nao atacar monstro
    end
    --------------------------------------------------
    --------------------REFLECT-----------------------
    if getPlayerStorageValue(cid, 21099) >= 1 and combat ~= COMBAT_PHYSICALDAMAGE then
       if not isInArray({"Team Claw", "Team Slice"}, getPlayerStorageValue(attacker, 21102)) then
          doSendMagicEffect(getThingPosWithDebug(cid), 135)
          doSendAnimatedText(getThingPosWithDebug(cid), "REFLECT", COLOR_GRASS)
          addEvent(docastspell, 100, cid, getPlayerStorageValue(attacker, 21102))
          if getCreatureName(cid) == "Wobbuffet" then
             doRemoveCondition(cid, CONDITION_OUTFIT)    
          end
          setPlayerStorageValue(cid, 21099, -1)                    --alterado v1.6
          setPlayerStorageValue(cid, 21100, 1)
          setPlayerStorageValue(cid, 21101, attacker)
          setPlayerStorageValue(cid, 21103, getTableMove(attacker, getPlayerStorageValue(attacker, 21102)).f)
          setPlayerStorageValue(cid, 21104, getCreatureOutfit(attacker).lookType)
          return false
       end
    end
    -------------------------------------------------
    
    local multiplier = 1
    
       if isCreature(cid) then
          poketype1 = pokes[getCreatureName(cid)].type        --alterado v1.6
          poketype2 = pokes[getCreatureName(cid)].type2
       end
       if not poketype1 or not poketype2 then return false end  --alterado v1.6 
       
    	if getCreatureCondition(cid, CONDITION_INVISIBLE) then
    	return false
    	end
    if damageCombat ~= COMBAT_PHYSICALDAMAGE and not isInArray(ignored, damageCombat) then
    	if isInArray(effectiveness[damageCombat].super, poketype1) then
    		multiplier = multiplier + 0.5
    	end
    	if isInArray(effectiveness[damageCombat].super, poketype2) then
    		multiplier = multiplier + 0.5
    	end
    	if isInArray(effectiveness[damageCombat].weak, poketype1) then    --Edited effetivenes = pxg... ;p
    		multiplier = multiplier - 0.25
    	end
    	if isInArray(effectiveness[damageCombat].weak, poketype2) then
    		multiplier = multiplier - 0.25
    	end
    	if isInArray(effectiveness[damageCombat].non, poketype1) or isInArray(effectiveness[damageCombat].non, poketype2) then
          if isInArray(specialabilities["foresight"], getCreatureName(attacker)) then   --alterado v1.5
             multiplier = 0.5                 
          end                         --alterado v1.6
        end
    	-- X-Attack --
        if isSummon(attacker) and isPlayer(getCreatureMaster(attacker)) then
        local TierArray = {8, 9, 10, 11, 12, 13, 14}
        local Tiers = {
    [8] = {bonus = AtkBonus1},
    [9] = {bonus = AtkBonus2},
    [10] = {bonus = AtkBonus3},
    [11] = {bonus = AtkBonus4},
    [12] = {bonus = AtkBonus5},
    [13] = {bonus = AtkBonus6},
    [14] = {bonus = AtkBonus7},
    }
     local ball = getPlayerSlotItem(getCreatureMaster(attacker), 8)
    local Tier = getItemAttribute(ball.uid, "heldx")
        local bonusatk = {}
        if isInArray(TierArray, getItemAttribute(ball.uid, "heldx")) then
        bonusatk = Tiers[Tier].bonus
        else
        bonusatk = 1
        end
            multiplier = multiplier * bonusatk
        end
        -- X-Attack --
    elseif combat == COMBAT_PHYSICALDAMAGE then
    	if isGhostPokemon(cid) then               --alterado v1.3
           if not isInArray(specialabilities["foresight"], getCreatureName(attacker)) then  --passiva Foresight!!
              doSendMagicEffect(getThingPos(cid), 3)     
    	      return false
           end
        end
    		local cd = getPlayerStorageValue(attacker, conds["Miss"])
            local cd2 = getPlayerStorageValue(attacker, conds["Confusion"]) 
            local cd3 = getPlayerStorageValue(attacker, conds["Stun"]) 
            if cd >= 0 or cd2 >= 0 or cd3 >= 0 then
               if math.random(1, 100) > 50 then  --Edited miss system  -- 50% chance de da miss no atk fisico
    		      doSendMagicEffect(getThingPos(cid), 211)
    		      doSendAnimatedText(getThingPos(attacker), "MISS", 215)         --alterado v1.5
    		      return false
               end
            end
    end
    --------------------------------------------------
    local valor = value
    
    	if multiplier == 1.5 and poketype2 == "no type" then
            multiplier = 2                                         --alterado v1.6
        elseif multiplier == 1.5 and poketype2 ~= "no type" then	
        	multiplier = 1.75       
    	elseif multiplier == 1.25 then    --edited effetivines = pxg
    		multiplier = 1    
    	end
    
    --------------------------------------------------
        if isSummon(cid) and isSummon(attacker) then
            if getCreatureMaster(cid) == getCreatureMaster(attacker) then
               return false
            end
    		if canAttackOther(cid, attacker) == "Cant" then
               return false
            end
    	end
    
    	valor = valor * multiplier
    
    	if isSummon(attacker) then
    		valor = valor * getHappinessRate(attacker)
    	else
    		valor = valor * summonReduction
    	end
    
    	valor = math.floor(valor)
    	
    	if combat == COMBAT_PHYSICALDAMAGE then
           block = 1 - (getDefense(cid) / (getOffense(attacker) + getDefense(cid)))
    	   valor = getOffense(attacker) * block
    	   
           if isInArray(specialabilities["counter"], getCreatureName(cid)) then
              if math.random(1, 100) <= 10 then
                 doCreatureAddHealth(attacker, -valor, 3, 180)    
                 valor = 0
                 doSendAnimatedText(getThingPosWithDebug(cid), "COUNTER", 215)
              end
           end   
    -- Return --        
    if isSummon(cid) and isPlayer(getCreatureMaster(cid)) then
    local returnbonus = {}
    local ball = getPlayerSlotItem(getCreatureMaster(cid), 8)
    local Tiers = {
    [15] = {bonus = DmgReturn1},
    [16] = {bonus = DmgReturn2},
    [17] = {bonus = DmgReturn3},
    [18] = {bonus = DmgReturn4},
    [19] = {bonus = DmgReturn5},
    [20] = {bonus = DmgReturn6},
    [21] = {bonus = DmgReturn7},
    }
    local Tier = getItemAttribute(ball.uid, "heldx")
    if Tier and Tier > 14 and Tier < 22 then
    returnbonus = math.floor((valor * Tiers[Tier].bonus))
    elseif not isInArray(Tiers, Tier) then
    returnbonus = 0
    end
    doCreatureAddHealth(attacker, -returnbonus)
    end
    -- Return --
    else
    -- Return --        
    if isSummon(cid) and isPlayer(getCreatureMaster(cid)) then
    local returnbonus = {}
    local ball = getPlayerSlotItem(getCreatureMaster(cid), 8)
    local Tiers = {
    [15] = {bonus = DmgReturn1},
    [16] = {bonus = DmgReturn2},
    [17] = {bonus = DmgReturn3},
    [18] = {bonus = DmgReturn4},
    [19] = {bonus = DmgReturn5},
    [20] = {bonus = DmgReturn6},
    [21] = {bonus = DmgReturn7},
    }
    local Tier = getItemAttribute(ball.uid, "heldx")
    if Tier and Tier > 14 and Tier < 22 then
    returnbonus = math.floor((valor * Tiers[Tier].bonus))
    elseif not isInArray(Tiers, Tier) then
    returnbonus = 0
    end
    doCreatureAddHealth(attacker, -returnbonus)
    end
    -- Return --
    valor = valor / getDefense(cid)
    end
        
        -------------------------Edited CLAN SYSTEM-----------------------------------
        if isSummon(attacker) and getPlayerStorageValue(getCreatureMaster(attacker), 86228) >= 1 then
           valor = valor*getClanPorcent(getCreatureMaster(attacker), combat, "atk")                           --alterado v1.3
        elseif isSummon(cid) and getPlayerStorageValue(getCreatureMaster(cid), 86228) >= 1 then
           valor = valor - (valor*getClanPorcent(getCreatureMaster(cid), combat, "def", pokes[getCreatureName(cid)].type, pokes[getCreatureName(cid)].type2))
        end
        -----------------------------------------------------------------------
        ---------------------- FEAR / ROAR ------------------------------------
        if getPlayerStorageValue(attacker, conds["Fear"]) >= 1 then         --alterado!!
        return true
        end
    --------------------------------------------------------------------------
    if damageCombat ~= COMBAT_PHYSICALDAMAGE and not isInArray(ignored, damageCombat) then
       if isInArray(effectiveness[damageCombat].non, poketype1) or isInArray(effectiveness[damageCombat].non, poketype2) then
          if not isInArray(specialabilities["foresight"], getCreatureName(attacker)) then     --alterado v1.6
             valor = valor * 0                      --alterado v1.5
          end
       end
    end
    
    if damageCombat == GROUNDDAMAGE then
       if isInArray(specialabilities["levitate"], getCreatureName(cid)) then
          valor = 0                      --alterado v1.5
       end
    end
    -----------------------------------------------------------------------------
    local p = getThingPos(cid)                     
    if p.x == 1 and p.y == 1 and p.z == 10 then
    return false                                    
    end
    
    if getPlayerStorageValue(cid, 9658783) == 1 then
    return false     --imune
    end
    -----------------------------------------------------------------------------
    	if valor >= getCreatureHealth(cid) then
    		if isInArray(cannotKill, combat) and isPlayer(cid) then
    			valor = getCreatureHealth(cid) - 1
    		else
    			valor = getCreatureHealth(cid)
    		end
    	end
    	valor = math.floor(valor)             --alterado v1.6
    	
    ------------------ SKILLs Q CURAM O ATTACKER ---------------------------------
    local function doHeal(cid, amount)
    if (getCreatureHealth(cid) + amount) >= getCreatureMaxHealth(cid) then
       amount = math.abs(getCreatureHealth(cid)-getCreatureMaxHealth(cid))
    end
    if getCreatureHealth(cid) ~= getCreatureMaxHealth(cid) then           --alterado v1.6
       doCreatureAddHealth(cid, amount)
       doSendAnimatedText(getThingPosWithDebug(cid), "+"..amount.."", 65) 
    end
    end
              
    if damageCombat == PSYCHICDAMAGE or damageCombat == MIRACLEDAMAGE then
       if getPlayerStorageValue(attacker, 95487) >= 1 then
          doHeal(attacker, valor)
          setPlayerStorageValue(attacker, 95487, -1)                  --alterado v1.6
       end
    elseif damageCombat == SEED_BOMBDAMAGE then
       doHeal(attacker, valor)
    end
    --------------------------------------------
    ----------SACRED FIRE-----------------------
    if combat == SACREDDAMAGE and not ehNPC(cid) then    --alterado v1.6
       local ret = {}
       ret.id = cid
       ret.cd = 9
       ret.check = getPlayerStorageValue(cid, conds["Silence"])
       ret.eff = 39
       ret.cond = "Silence"
    
       doCondition2(ret)
    end
    ---------------------------------------------
    
    --------------Passiva Lifesteal Clobat------------
    if combat == COMBAT_PHYSICALDAMAGE then
       if getCreatureName(attacker) == "Crobat" then                    --alterado v1.4
          doCreatureAddHealth(attacker, math.floor(valor))
          doSendAnimatedText(getThingPos(attacker), "+ "..math.floor(valor), 30)
       end
    end
    --------------------------------------------
    
    --------------Passiva Lifesteal Clobat------------
    if combat == COMBAT_PHYSICALDAMAGE then
       if getCreatureName(attacker) == "Golbat" then                    --alterado v1.4
          doCreatureAddHealth(attacker, math.floor(valor))
          doSendAnimatedText(getThingPos(attacker), "+ "..math.floor(valor), 30)
       end
    end
    --------------------------------------------
    
    --------------Passiva Lifesteal Clobat------------
    if combat == COMBAT_PHYSICALDAMAGE then
       if getCreatureName(attacker) == "Zubat" then                    --alterado v1.4
          doCreatureAddHealth(attacker, math.floor(valor))
          doSendAnimatedText(getThingPos(attacker), "+ "..math.floor(valor), 30)
       end
    end
    --------------------------------------------
    
    --------------Passiva Lifesteal Clobat------------
    if combat == COMBAT_PHYSICALDAMAGE then
       if getCreatureName(attacker) == "Shiny Crobat" then                    --alterado v1.4
          doCreatureAddHealth(attacker, math.floor(valor))
          doSendAnimatedText(getThingPos(attacker), "+ "..math.floor(valor), 30)
       end
    end
    --------------------------------------------
    
    --------------Passiva Lifesteal Clobat------------
    if combat == COMBAT_PHYSICALDAMAGE then
       if getCreatureName(attacker) == "Shiny Golbat" then                    --alterado v1.4
          doCreatureAddHealth(attacker, math.floor(valor))
          doSendAnimatedText(getThingPos(attacker), "+ "..math.floor(valor), 30)
       end
    end
    --------------------------------------------
    
    --------------Passiva Lifesteal Clobat------------
    if combat == COMBAT_PHYSICALDAMAGE then
       if getCreatureName(attacker) == "Shiny Zubat" then                    --alterado v1.4
          doCreatureAddHealth(attacker, math.floor(valor))
          doSendAnimatedText(getThingPos(attacker), "+ "..math.floor(valor), 30)
       end
    end
    --------------------------------------------
        valor = math.abs(valor)    --alterado v1.9
    	if isSummon(cid) and valor >= getCreatureHealth(cid) then
        onPokeHealthChange(getCreatureMaster(cid), true)
         elseif isSummon(cid) then
        onPokeHealthChange(getCreatureMaster(cid))
        end 
        if isSummon(attacker) then
    		if combat == COMBAT_PHYSICALDAMAGE then
    			doTargetCombatHealth(getCreatureMaster(attacker), cid, PHYSICALDAMAGE, -valor, -valor, 255)
    			addEvent(doDoubleHit, 1000, attacker, cid, valor, races)      --alterado v1.6
    		else
    			doTargetCombatHealth(getCreatureMaster(attacker), cid, damageCombat, -valor, -valor, 255)
    		end
    	else
    		if combat ~= COMBAT_PHYSICALDAMAGE then
    			doCreatureAddHealth(cid, -math.abs(valor), 3, combats[damageCombat].cor)
    		else
                doCreatureAddHealth(cid, -math.abs(valor), 3, races[getMonsterInfo(getCreatureName(cid)).race].cor)
                addEvent(doDoubleHit, 1000, attacker, cid, valor, races)   --alterado v1.6
            end
    
    		if isSummon(cid) and valor ~= 0 then
    			--addEvent(sendPlayerDmgMsg, 5, getCreatureMaster(cid), "Seu "..getCreatureName(cid).." perdeu "..valor.." de vida pelo attack do "..getSomeoneDescription(attacker)..".")
    		end
    
    	end
    	
       if damageCombat == FIREDAMAGE and not isBurning(cid) then
    	   local ret = {}
    	   ret.id = cid
    	   ret.cd = math.random(5, 12)
    	   ret.check = getPlayerStorageValue(cid, conds["Burn"])
    	   ret.damage = isSummon(attacker) and getMasterLevel(attacker)+getPokemonBoost(attacker) or getPokemonLevel(attacker)
    	   ret.cond = "Burn"
    
    	   doCondition2(ret)
        elseif damageCombat == POISONDAMAGE and not isPoisoned(cid) then
           local ret = {}
    	   ret.id = cid
    	   ret.cd = math.random(6, 15)
    	   ret.check = getPlayerStorageValue(cid, conds["Poison"])
    	   local lvl = isSummon(attacker) and getMasterLevel(attacker) or getPokemonLevel(attacker)
           ret.damage = math.floor((getPokemonLevel(attacker)+lvl)/2)
    	   ret.cond = "Poison"
    
    	   doCondition2(ret)
        end
    --[[---------------CD BAR-----------------------
    if isSummon(cid) then
       doCreatureExecuteTalkAction(getCreatureMaster(cid), "/pokeread")
    end  ]]
    ------------------------------------POTIONS-------------------------------------------
    if isSummon(cid) and type == STATSCHANGE_HEALTHLOSS then
       if getPlayerStorageValue(cid, 173) >= 1 then
          if damageCombat ~= BURNEDDAMAGE and damageCombat ~= POISONEDDAMAGE then
             setPlayerStorageValue(cid, 173, -1)  --alterado v1.6
             doSendAnimatedText(getThingPos(cid), "LOST HEAL", 144)
          end
       end
    end
    ----------------------------------------PASSIVAS-------------------------------------  
    -------------------------------------------Counter Helix------------------------------------
    if passivesChances["Helix"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Helix"][getCreatureName(cid)] then
       docastspell(cid, "Counter Helix")
    end
    -------------------------------------------Lava Counter----------------------------
    if passivesChances["Lava"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Lava"][getCreatureName(cid)] then
       docastspell(cid, "Lava-Counter")
    end
    ---------------------------------------Stunning Confusion-----------------------------------------
    if passivesChances["Stunning Confusion"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Stunning Confusion"][getCreatureName(cid)] then 
       docastspell(cid, "Stunning Confusion")
    end
    -----------------------------------------Shock-Counter-----------------------------------
    if passivesChances["Shock"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Shock"][getCreatureName(cid)] then
       docastspell(cid, "Shock-Counter")
    end
    --------------------------------------Electric Charge---------------------------------------------
    if passivesChances["Electric Charge"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Electric Charge"][getCreatureName(cid)] then
       docastspell(cid, "Electric Charge", 0, 0)
    end
    -------------------------------------Melody------------------------------------
    if passivesChances["Melody"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Melody"][getCreatureName(cid)] then 
       docastspell(cid, "Melody")
    end
    ------------------------------------- Dragon Fury / Fury ---------------------------------------
    if passivesChances["Dragon Fury"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Dragon Fury"][getCreatureName(cid)] then
       docastspell(cid, "Dragon Fury", 0, 0)
    end
    ------------------------------------- Mega Drain ---------------------------------------
    if passivesChances["Mega Drain"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Mega Drain"][getCreatureName(cid)] then
       docastspell(cid, "Mega Drain")
    end
    ------------------------------------- Spores Reaction ---------------------------------------
    if passivesChances["Spores Reaction"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Spores Reaction"][getCreatureName(cid)] then
       docastspell(cid, "Spores Reaction")
    end
    ------------------------------------ Amnesia ----------------------------------------   
    if passivesChances["Amnesia"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Amnesia"][getCreatureName(cid)] then 
       docastspell(cid, "Amnesia", 0, 0)
    end
    ----------------------------------- Zen Mind -----------------------------------------
    if passivesChances["Zen Mind"][getCreatureName(cid)] and isWithCondition(cid) and math.random(1, 100) <= passivesChances["Zen Mind"][getCreatureName(cid)] then
       docastspell(cid, "Zen Mind", 0, 0)
    end
    ---------------------------------- Bone-Spin ---------------------------------------
    if passivesChances["Bone"][getCreatureName(cid)] and math.random(1, 100) <= passivesChances["Bone"][getCreatureName(cid)] then
       docastspell(cid, "Bone-Spin")
    end
    --------------------------------- Illusion -----------------------------------------
    return false
    end

    Eu queria caso o 7 pokemon for capturado va pra DP normal.

     

    Porem deu este erro no meio do teste nao sei se tem a ver.

     

    Rep+++

  9. 8 horas atrás, nociam disse:

    A linha do erro já postei a correção :    if #getCreatureSummons(_target) > 0 then

     

    Outra coisa tem uma source ai rolando que tem sua próprio configuração exemplo os métodos abaixo, além disso precisa ajustar o método doDano2 algo assim por causa dele os danos não batem fora que o monstro criado pelo npc não pega os eventos do spaw.lua etc......

     

        doSetMonsterGym(summon, focus)    
        doSetGym(summon, 1)
        doSetAttackGym(summon, focus)

     

    Se tiver o servidor limpo o método passado deve funcionar se tiver o serve cheio de adaptação igual ao que baixei para teste precisa procurar os problemas

     

    https://i.gyazo.com/94b9ef1c0b210078b4577246b934199e.gif

     

    image.png.88605aa9fb9c30f6d49538ea279fa9ee.png

    No caso esta linha >> getCreatureSummons(_target)[1])

     

    Muda pra este >> if #getCreatureSummons(_target) > 0 then  

     

    ??

  10. 1 hora atrás, Yan18 disse:

    Na condicional if estava com 1 igual.  Testa assim:

    
    ------------------------------ FUNÇÃO LOCAL selfAttackCrature() ---------------------------
    
    local function selfAttackCreature()
    if #getCreatureSummons(getNpcCid()) > 0 and not isCreature(getCreatureTarget(getCreatureSummons(getNpcCid())[1])) then
    	local list = getSpectators(getCreaturePosition(getNpcCid()), 7, 7, false)
    	for i=0, table.getn(list) do
    		local _target = list[i]
    		if(_target ~= 0) then
    			if isPlayer(_target) and not getTileInfo(getThingPos(_target)).protection then
    				if #getCreatureSummfighting == falseons(_target) > 0 then
    					doMonsterSetTarget(getCreatureSummons(getNpcCid())[1], getCreatureSummons(_target)[1])
    					setPlayerStorageValue(getCreatureSummons(getNpcCid())[1], 99856201, getNpcCid())
    				else
    				  fighting = false
    				end
    				target = _target
    				break
    			end
    		end
    	end
    end
    
    end
    
    
    ----------------------------------------------------- CÓDIGO -----------------------------------------------------
    
    local focus = 0
    local max_distance = 8
    local talk_start = 0
    local conv = 0
    local fighting = false
    local challenger = 0
    local afk_limit_time = 300	-- seconds
    local afk_time = 0		-- don't change
    local battle_turn = 1		-- don't change
    local challenger_turn = 0	-- don't change
    
    local pokemons = {
    {name = "Alakazam", optionalLevel = 400, sex = SEX_MALE, nick = "", ball = "normal"},
    {name = "Shiny Hypno", optionalLevel = 400, sex = SEX_MALE, nick = "", ball = "normal"},
    {name = "Mr. Mime", optionalLevel = 400, sex = SEX_FEMALE, nick = "", ball = "normal"},
    {name = "Porygon", optionalLevel = 400, sex = SEX_FEMALE, nick = "", ball = "normal"},
    {name = "Espeon", optionalLevel = 400, sex = SEX_FEMALE, nick = "", ball = "normal"},
    }
    
    
    local function doSummonGymPokemon(npc)
    	local this = npc
    	if #getCreatureSummons(this) >= 1 or focus == 0 then return true end
    	local it = pokemons[battle_turn]
    	doSummonMonster(this, it.name)
    	local summon = getCreatureSummons(this)[1]
    	local balleffect = pokeballs["normal"].effect
    		if it.ball and pokeballs[it.ball] then
    			balleffect = pokeballs[it.ball].effect
    		end
    	doSendMagicEffect(getThingPos(summon), balleffect)
    	setPlayerStorageValue(summon, 10000, balleffect)
    	setPlayerStorageValue(summon, 10001, gobackmsgs[math.random(#gobackmsgs)].back:gsub("doka", it.nick ~= "" and it.nick or it.name))
    	setPlayerStorageValue(summon, 1007, it.nick ~= "" and it.nick or it.name)
    	doSetMonsterGym(summon, focus)
    	addEvent(adjustWildPoke, 15, summon, it.optionalLevel)
    	local name = it.nick ~= "" and it.nick or getCreatureName(this).."s "..it.name
    	doCreatureSay(this, gobackmsgs[math.random(#gobackmsgs)].go:gsub("doka", getPlayerStorageValue(summon, 1007)), 1)
    	fighting = true
    	battle_turn = battle_turn + 1
    end
    
    local function doWinDuel(cid, npc)
    	if not isCreature(cid) then return true end
    	local this = npc
    	local a = gymbadges[getCreatureName(this)] + 8
    	doCreatureSay(npc, "You won the duel! Congratulations, take this "..getItemNameById(a - 8).." as a prize.", 1)
    	local b = getPlayerItemById(cid, true, a)
    	if b.uid > 0 then doTransformItem(b.uid, b.itemid - 8) end
    doPlayerSendCancel(cid, "#getBadges# "..getCreatureName(this).." "..getPlayerItemCount(cid, gymbadges[getCreatureName(this)]))
    end
    
    function onCreatureSay(cid, type, msg)
    
    	local msg = string.lower(msg)
    
    	if focus == cid then
    		talk_start = os.clock()
    	end
    
    	if msgcontains(msg, 'hi') and focus == 0 and getDistanceToCreature(cid) <= 4 then
    		focus = cid
    		talk_start = os.clock()
    		conv = 1
    		selfSay("Hello "..getCreatureName(cid)..", my name is Sabrina and I'm Saffron's Gym Leader. How may I help you?")
    	return true
    	end
    
    	if isDuelMsg(msg) and conv == 1 and focus == cid then
    
    		--if getPlayerItemCount(cid, gymbadges[getCreatureName(getThis())]) >= 1 then
    		--	selfSay("You have already won my Marsh Badge, maybe some other day we can fight.")
    		--	focus = 0
    		--return true
    		--end
    
    		if not hasPokemon(cid) then
    			selfSay("To battle agains't a gym leader you need pokemons.")
    		return true
    		end
    
    		selfSay("You are challenging me to a battle. It will be a "..#pokemons.." pokemon limit battle, let's start?")
    		conv = 2
    
    	return true
    	end
    
    	if isConfirmMsg(msg) and conv == 2 and focus == cid then
    
    		challenger = focus
    		setPlayerStorageValue(cid, 990, 1)
    		selfSay("Yea, let's fight!")
    		talk_start = os.clock()
    		addEvent(doSummonGymPokemon, 850, getThis())
    		conv = 3
    
    	return true
    	end
    
    	if isNegMsg(msg) and conv == 2 and focus == cid then
    
    		focus = 0
    		selfSay("It is better for you to refuse a battle against me!")
    
    	return true
    	end
    
    	if msgcontains(msg, 'bye') and focus == cid then
    		selfSay('Bye and do your best trainer!')
    		setPlayerStorageValue(focus, 990, -1)
    		focus = 0
    	return true
    	end
    end
    
    local afk_warning = false
    
    function onThink()
    
    	--doSendAnimatedText(getThingPos(getThis()), getCreatureName(getThis()), 215)
    
    	if focus == 0 then
    		selfTurn(2)
    		fighting = false
    		challenger = 0
    		challenger_turn = 0
    		battle_turn = 1
    		afk_time = 0
    		afk_warning = false
    
    		if #getCreatureSummons(getThis()) >= 1 then
    			setPlayerStorageValue(getCreatureSummons(getThis())[1], 1006, 0)
    			doCreatureAddHealth(getCreatureSummons(getThis())[1], -getCreatureMaxHealth(getCreatureSummons(getThis())[1]))
    		end
    
    	return true
    	else
    
    	if not isCreature(focus) then
    		focus = 0
    	return true
    	end
    
    	if fighting then
    
    		talk_start = os.clock()
    
    		if not isCreature(getCreatureTarget(getThis())) then
    			if #getCreatureSummons(challenger) >= 1 then
    				if getCreatureOutfit(getCreatureSummons(challenger)[1]).lookType ~= 2 then --alterado v1.6
    				  selfAttackCreature()
    				  challenger_turn = challenger_turn + 1
    				  afk_time = 0
    	            end
    			else
    				afk_time = afk_time + 0.5
    			end
    		end
    
    		if afk_time > afk_limit_time then
    			setPlayerStorageValue(focus, 990, -1)
    			focus = 0
    			selfSay("I have waited too long, come back when you are ready!")
    		return true
    		end
    
    		if not afk_warning and afk_time > afk_limit_time / 2 then
    			selfSay("Where's your pokemon? Let's fight!")
    			afk_warning = true
    		end
    
    
    		if #getCreatureSummons(getThis()) == 0 then
    			if battle_turn > #pokemons then
    				addEvent(doWinDuel, 1000, focus, getThis())
    				setPlayerStorageValue(focus, 990, -1)
    				focus = 0
    			return true
    			end
    			addEvent(doSummonGymPokemon, 1000, getThis())
    		end
    
    		if not hasPokemon(challenger) or challenger_turn >= 7 or challenger_turn > #pokemons then
    			selfSay("You lost our duel! Maybe some other time you'll defeat me.")
    			setPlayerStorageValue(focus, 990, -1)
    			focus = 0
    		return true
    		end
    
    	end
    
    		local npcpos = getThingPos(getThis())
    		local focpos = getThingPos(focus)
    
    		if npcpos.z ~= focpos.z then
    			setPlayerStorageValue(focus, 990, -1)
    			focus = 0
    			selfSay("Bye then.")
    		return true
    		end
    
    		if (os.clock() - talk_start) > 30 then
    			selfSay("Good bye and keep training!")
    			setPlayerStorageValue(focus, 990, -1)
    			focus = 0
    		end
    
    		if getDistanceToCreature(focus) > max_distance then
    			setPlayerStorageValue(focus, 990, -1)
    			focus = 0
    		return true
    		end
    
    		local dir = doRedirectDirection(getDirectionTo(npcpos, focpos))	
    		selfTurn(dir)
    	end
    return true
    end

     

    Deu este BUG

    Spoiler

    [25/03/2020 15:55:00] [Error - Npc interface] 
    [25/03/2020 15:55:00] data/npc/scripts/gym/sabrina.lua:onThink
    [25/03/2020 15:55:00] Description: 
    [25/03/2020 15:55:00] data/npc/scripts/gym/sabrina.lua:10: attempt to get length of global 'getCreatureSummfighting' (a nil value)
    [25/03/2020 15:55:00] stack traceback:
    [25/03/2020 15:55:00]     data/npc/scripts/gym/sabrina.lua:10: in function 'selfAttackCreature'
    [25/03/2020 15:55:00]     data/npc/scripts/gym/sabrina.lua:178: in function <data/npc/scripts/gym/sabrina.lua:145>

     

  11. 12 horas atrás, Yan18 disse:

    @BrunoMaciel

     

    Coloquei a função local selfAttackCrature que o nociam mandou, teste o código:

    
    ------------------------------ FUNÇÃO LOCAL selfAttackCrature() ---------------------------
    
    local function selfAttackCreature()
    if #getCreatureSummons(getNpcCid()) > 0 and not isCreature(getCreatureTarget(getCreatureSummons(getNpcCid())[1])) then
    	local list = getSpectators(getCreaturePosition(getNpcCid()), 7, 7, false)
    	for i=0, table.getn(list) do
    		local _target = list[i]
    		if(_target ~= 0) then
    			if isPlayer(_target) and not getTileInfo(getThingPos(_target)).protection then
    				if #getCreatureSummfighting = falseons(_target) > 0 then
    					doMonsterSetTarget(getCreatureSummons(getNpcCid())[1], getCreatureSummons(_target)[1])
    					setPlayerStorageValue(getCreatureSummons(getNpcCid())[1], 99856201, getNpcCid())
    				else
    				  fighting = false
    				end
    				target = _target
    				break
    			end
    		end
    	end
    end
    
    end
    
    
    ----------------------------------------------------- CÓDIGO -----------------------------------------------------
    
    local focus = 0
    local max_distance = 8
    local talk_start = 0
    local conv = 0
    local fighting = false
    local challenger = 0
    local afk_limit_time = 300	-- seconds
    local afk_time = 0		-- don't change
    local battle_turn = 1		-- don't change
    local challenger_turn = 0	-- don't change
    
    local pokemons = {
    {name = "Alakazam", optionalLevel = 400, sex = SEX_MALE, nick = "", ball = "normal"},
    {name = "Shiny Hypno", optionalLevel = 400, sex = SEX_MALE, nick = "", ball = "normal"},
    {name = "Mr. Mime", optionalLevel = 400, sex = SEX_FEMALE, nick = "", ball = "normal"},
    {name = "Porygon", optionalLevel = 400, sex = SEX_FEMALE, nick = "", ball = "normal"},
    {name = "Espeon", optionalLevel = 400, sex = SEX_FEMALE, nick = "", ball = "normal"},
    }
    
    
    local function doSummonGymPokemon(npc)
    	local this = npc
    	if #getCreatureSummons(this) >= 1 or focus == 0 then return true end
    	local it = pokemons[battle_turn]
    	doSummonMonster(this, it.name)
    	local summon = getCreatureSummons(this)[1]
    	local balleffect = pokeballs["normal"].effect
    		if it.ball and pokeballs[it.ball] then
    			balleffect = pokeballs[it.ball].effect
    		end
    	doSendMagicEffect(getThingPos(summon), balleffect)
    	setPlayerStorageValue(summon, 10000, balleffect)
    	setPlayerStorageValue(summon, 10001, gobackmsgs[math.random(#gobackmsgs)].back:gsub("doka", it.nick ~= "" and it.nick or it.name))
    	setPlayerStorageValue(summon, 1007, it.nick ~= "" and it.nick or it.name)
    	doSetMonsterGym(summon, focus)
    	addEvent(adjustWildPoke, 15, summon, it.optionalLevel)
    	local name = it.nick ~= "" and it.nick or getCreatureName(this).."s "..it.name
    	doCreatureSay(this, gobackmsgs[math.random(#gobackmsgs)].go:gsub("doka", getPlayerStorageValue(summon, 1007)), 1)
    	fighting = true
    	battle_turn = battle_turn + 1
    end
    
    local function doWinDuel(cid, npc)
    	if not isCreature(cid) then return true end
    	local this = npc
    	local a = gymbadges[getCreatureName(this)] + 8
    	doCreatureSay(npc, "You won the duel! Congratulations, take this "..getItemNameById(a - 8).." as a prize.", 1)
    	local b = getPlayerItemById(cid, true, a)
    	if b.uid > 0 then doTransformItem(b.uid, b.itemid - 8) end
    doPlayerSendCancel(cid, "#getBadges# "..getCreatureName(this).." "..getPlayerItemCount(cid, gymbadges[getCreatureName(this)]))
    end
    
    function onCreatureSay(cid, type, msg)
    
    	local msg = string.lower(msg)
    
    	if focus == cid then
    		talk_start = os.clock()
    	end
    
    	if msgcontains(msg, 'hi') and focus == 0 and getDistanceToCreature(cid) <= 4 then
    		focus = cid
    		talk_start = os.clock()
    		conv = 1
    		selfSay("Hello "..getCreatureName(cid)..", my name is Sabrina and I'm Saffron's Gym Leader. How may I help you?")
    	return true
    	end
    
    	if isDuelMsg(msg) and conv == 1 and focus == cid then
    
    		--if getPlayerItemCount(cid, gymbadges[getCreatureName(getThis())]) >= 1 then
    		--	selfSay("You have already won my Marsh Badge, maybe some other day we can fight.")
    		--	focus = 0
    		--return true
    		--end
    
    		if not hasPokemon(cid) then
    			selfSay("To battle agains't a gym leader you need pokemons.")
    		return true
    		end
    
    		selfSay("You are challenging me to a battle. It will be a "..#pokemons.." pokemon limit battle, let's start?")
    		conv = 2
    
    	return true
    	end
    
    	if isConfirmMsg(msg) and conv == 2 and focus == cid then
    
    		challenger = focus
    		setPlayerStorageValue(cid, 990, 1)
    		selfSay("Yea, let's fight!")
    		talk_start = os.clock()
    		addEvent(doSummonGymPokemon, 850, getThis())
    		conv = 3
    
    	return true
    	end
    
    	if isNegMsg(msg) and conv == 2 and focus == cid then
    
    		focus = 0
    		selfSay("It is better for you to refuse a battle against me!")
    
    	return true
    	end
    
    	if msgcontains(msg, 'bye') and focus == cid then
    		selfSay('Bye and do your best trainer!')
    		setPlayerStorageValue(focus, 990, -1)
    		focus = 0
    	return true
    	end
    end
    
    local afk_warning = false
    
    function onThink()
    
    	--doSendAnimatedText(getThingPos(getThis()), getCreatureName(getThis()), 215)
    
    	if focus == 0 then
    		selfTurn(2)
    		fighting = false
    		challenger = 0
    		challenger_turn = 0
    		battle_turn = 1
    		afk_time = 0
    		afk_warning = false
    
    		if #getCreatureSummons(getThis()) >= 1 then
    			setPlayerStorageValue(getCreatureSummons(getThis())[1], 1006, 0)
    			doCreatureAddHealth(getCreatureSummons(getThis())[1], -getCreatureMaxHealth(getCreatureSummons(getThis())[1]))
    		end
    
    	return true
    	else
    
    	if not isCreature(focus) then
    		focus = 0
    	return true
    	end
    
    	if fighting then
    
    		talk_start = os.clock()
    
    		if not isCreature(getCreatureTarget(getThis())) then
    			if #getCreatureSummons(challenger) >= 1 then
    				if getCreatureOutfit(getCreatureSummons(challenger)[1]).lookType ~= 2 then --alterado v1.6
    				  selfAttackCreature()
    				  challenger_turn = challenger_turn + 1
    				  afk_time = 0
    	            end
    			else
    				afk_time = afk_time + 0.5
    			end
    		end
    
    		if afk_time > afk_limit_time then
    			setPlayerStorageValue(focus, 990, -1)
    			focus = 0
    			selfSay("I have waited too long, come back when you are ready!")
    		return true
    		end
    
    		if not afk_warning and afk_time > afk_limit_time / 2 then
    			selfSay("Where's your pokemon? Let's fight!")
    			afk_warning = true
    		end
    
    
    		if #getCreatureSummons(getThis()) == 0 then
    			if battle_turn > #pokemons then
    				addEvent(doWinDuel, 1000, focus, getThis())
    				setPlayerStorageValue(focus, 990, -1)
    				focus = 0
    			return true
    			end
    			addEvent(doSummonGymPokemon, 1000, getThis())
    		end
    
    		if not hasPokemon(challenger) or challenger_turn >= 7 or challenger_turn > #pokemons then
    			selfSay("You lost our duel! Maybe some other time you'll defeat me.")
    			setPlayerStorageValue(focus, 990, -1)
    			focus = 0
    		return true
    		end
    
    	end
    
    		local npcpos = getThingPos(getThis())
    		local focpos = getThingPos(focus)
    
    		if npcpos.z ~= focpos.z then
    			setPlayerStorageValue(focus, 990, -1)
    			focus = 0
    			selfSay("Bye then.")
    		return true
    		end
    
    		if (os.clock() - talk_start) > 30 then
    			selfSay("Good bye and keep training!")
    			setPlayerStorageValue(focus, 990, -1)
    			focus = 0
    		end
    
    		if getDistanceToCreature(focus) > max_distance then
    			setPlayerStorageValue(focus, 990, -1)
    			focus = 0
    		return true
    		end
    
    		local dir = doRedirectDirection(getDirectionTo(npcpos, focpos))	
    		selfTurn(dir)
    	end
    return true
    end

    OBS: Eu não testei, apenas inseri a função que o amigo mandou para ver se soluciona o problema. 

     

    Teste e veja se funciona, se der certo, dê rep+ para o @nociam

    Deu este ERRO

    Spoiler

    [25/03/2020 13:07:19] [Error - LuaScriptInterface::loadFile] data/npc/scripts/gym/sabrina.lua:10: 'then' expected near '='
    [25/03/2020 13:07:19] [Warning - NpcScript::NpcScript] Cannot load script: data/npc/scripts/gym/sabrina.lua
    [25/03/2020 13:07:19] data/npc/scripts/gym/sabrina.lua:10: 'then' expected near '='

     

  12. 1 hora atrás, Deadpool disse:

    Então, qual o erro/bug no catch?

    pokemon dusknoir o cath dele nao esta funcionando a ball nao vai nele porem eu vi e re-vi a configuration a pasta monster onde ele esta eu nao achei erro tinha 2 um com nome errado outro com nome certo porem deletei o errado e o certa esta certo e na configuration onde vi esta certo !!

     

    Aii o ERRO dele e se mata ele ai fica o corps dele no chao porem nao da pra joga a ball nele.

     

    Ai ate onde sei e so ele bugado nao sei se tem mais assim 

  13. 6 minutos atrás, Alphapetboy disse:

    Sim... Infelizmente eu não consigo resolver nenhum error.. e essa baseé muito boa

    triste

    oque eu recomendo irmao..

     

    E tu pergunta aqui e fazer um topico do bug.

     

    Eu no momento to quebrando cabeça com o cath.

     

    Ate onde eu sei o poekmon >> pokemon dusknoir  <<  ta bugado o cath dele porem a configuração dele ta certa e um bug bem estranho 

  14. 47 minutos atrás, Alphapetboy disse:

    @Deadpool Você vai atualizar o tópico sem esses erros listados? ainda estou tendo bastante problema no catch e nos outros.. se puder

    Assim mano nao querendo te desanimar nem nada disso.

     

    Mas acredito que ele nao vai da suport ao server nao.

     

    Assim ele posto um server maneiro server bom porem cheio de bugs mas server em si e bom.

     

    Oque me desanimo com ele:

     

    E que deadpool fez muita promesa mas numca comprio nesse termo creio eu que ele nao vai da suport ao server.

     

    Assim 

     

    - Ele falo que ia posta uma nova source melhorada do que esta que tem 

     

    Ate hoje nada 

     

    Eu uma fez troquei mensagem com ele no privado do xtibia ele diz que ia ajuda com os itens tentando descobrir quais sao os 2 itens que esta dando ERRO no exe do server.

     

    Ate hoje nada.

     

    Assim eu mesmo agradeço muito ele pela postagem do server porem tem uma amigo em algum post do server aqui mesmo que diz que o deadpool so fala mas nao faz assim nisso concordo com ele =/

     

    e o deadpool diz mesmo que nao vai da mas suport ao server.

     

    Entaooo ...

  15. 54 minutos atrás, Ayron5 disse:

    Testei aqui, a npc solta o poke e depois de 1 segundo ela chama ele de volta e fala que perdi o duelo .-.

    
    22:13 Sabrina: Sim, vamos lutar!
    22:13 Sabrina: Alakazam, vamos a batalha!
    22:13 Sabrina: Voce perdeu o duelo! Talvez algum outro momento voce vai me derrotar.
    22:14 Sabrina: Voce foi otimo, Alakazam!

    sabrina.lua

      Mostrar conteúdo oculto
    
    
    local focus = 0 
    local max_distance = 8
    local talk_start = 0
    local conv = 0
    local fighting = false
    local challenger = 0
    local afk_limit_time = 30	-- seconds
    local afk_time = 0		-- don't change
    local battle_turn = 1		-- don't change
    local challenger_turn = 0	-- don't change
    
    local pokemons = {
    {name = "Alakazam", optionalLevel = 120, sex = SEX_MALE, nick = "", ball = "normal"},
    {name = "Hypno", optionalLevel = 90, sex = SEX_MALE, nick = "", ball = "normal"},
    {name = "Mr. Mime", optionalLevel = 90, sex = SEX_FEMALE, nick = "", ball = "normal"},
    {name = "Porygon", optionalLevel = 80, sex = SEX_FEMALE, nick = "", ball = "normal"},
    {name = "Shiny Alakazam", optionalLevel = 120, sex = SEX_FEMALE, nick = "", ball = "normal"},
    {name = "Shiny hypno", optionalLevel = 120, sex = SEX_FEMALE, nick = "", ball = "normal"},
    }
    
    local function selfAttackCreature()
    if #getCreatureSummons(getNpcCid()) > 0 and not isCreature(getCreatureTarget(getCreatureSummons(getNpcCid())[1])) then
        local list = getSpectators(getCreaturePosition(getNpcCid()), 7, 7, false)
        for i=0, table.getn(list) do
            local _target = list[i]
            if(_target ~= 0) then
                if isPlayer(_target) and not getTileInfo(getThingPos(_target)).protection then
                    if #getCreatureSummons(_target) > 0 then
                        doMonsterSetTarget(getCreatureSummons(getNpcCid())[1], getCreatureSummons(_target)[1])
                        setPlayerStorageValue(getCreatureSummons(getNpcCid())[1], 99856201, getNpcCid())
                    else
                      fighting = false
                    end
                    target = _target
                    break
                end
            end
        end
    end
    
    end
    
    local function doSummonGymPokemon(npc)
    	local this = npc
    	if #getCreatureSummons(this) >= 1 or focus == 0 then return true end
    	local it = pokemons[battle_turn]
    	doSummonMonster(this, it.name)
    	local summon = getCreatureSummons(this)[1]
    	local balleffect = pokeballs["normal"].effect
    		if it.ball and pokeballs[it.ball] then
    			balleffect = pokeballs[it.ball].effect
    		end
    	doSendMagicEffect(getThingPos(summon), balleffect)
    	setPlayerStorageValue(summon, 10000, balleffect)
    	setPlayerStorageValue(summon, 10001, gobackmsgs[math.random(#gobackmsgs)].back:gsub("doka", it.nick ~= "" and it.nick or it.name))
    	setPlayerStorageValue(summon, 1007, it.nick ~= "" and it.nick or it.name)
    	doSetMonsterGym(summon, focus)
    	addEvent(adjustWildPoke, 15, summon, it.optionalLevel)
    	local name = it.nick ~= "" and it.nick or getCreatureName(this).."s "..it.name
    	doCreatureSay(this, gobackmsgs[math.random(#gobackmsgs)].go:gsub("doka", getPlayerStorageValue(summon, 1007)), 1)
    	fighting = true
    	battle_turn = battle_turn + 1
    	selfAttackCreature()
    end
    
    local function doWinDuel(cid, npc)
    	if not isCreature(cid) then return true end
    	local this = npc
    	local a = gymbadges[getCreatureName(this)] + 8
    	doCreatureSay(npc, "You won the duel! Congratulations, take this "..getItemNameById(a - 8).." as a prize.", 1)
    	local b = getPlayerItemById(cid, true, a)
    	if b.uid > 0 then doTransformItem(b.uid, b.itemid - 8) end
            doPlayerSendCancel(cid, "#getBadges# "..getCreatureName(this).." "..getPlayerItemCount(cid, gymbadges[getCreatureName(this)]))
    end
    
    function onCreatureSay(cid, type, msg)
    
    	local msg = string.lower(msg)
    
    	if focus == cid then
    		talk_start = os.clock()
    	end
    
    	if msgcontains(msg, 'oi') and focus == 0 and getDistanceToCreature(cid) <= 4 then
    		focus = cid
    		talk_start = os.clock()
    		conv = 1
    		selfSay("Ola "..getCreatureName(cid)..", Meu nome e Sabrina e eu sou o Lider do Gym Saffron. Como posso ajuda-lo?")
    	return true
    	end
    
    	if isDuelMsg(msg) and conv == 1 and focus == cid then
    
    		--if getPlayerItemCount(cid, gymbadges[getCreatureName(getThis())]) >= 1 then
    		--	selfSay("You have already won my Marsh Badge, maybe some other day we can fight.")
    		--	focus = 0
    		--return true
    		--end
    
    		if not hasPokemon(cid) then
    			selfSay("Para lutar com um lider de ginasio, voce precisa de pokemons.")
    		return true
    		end
    
    		selfSay("Voce esta me desafiando a uma batalha. Sera uma "..#pokemons.." Pokemon Limite a batalha, vamos comecar?")
    		conv = 2
    
    	return true
    	end
    
    	if isConfirmMsg(msg) and conv == 2 and focus == cid then
    
    		challenger = focus
    		setPlayerStorageValue(cid, 990, 1)
    		selfSay("Sim, vamos lutar!")
    		talk_start = os.clock()
    		addEvent(doSummonGymPokemon, 850, getThis())
    		conv = 3
    
    	return true
    	end
    
    	if isNegMsg(msg) and conv == 2 and focus == cid then
    
    		focus = 0
    		selfSay("E melhor voce recusar uma batalha contra mim!")
    
    	return true
    	end
    
    	if msgcontains(msg, 'tchau') and focus == cid then
    		selfSay('Tchau e faca o seu melhor, treinador!')
    		setPlayerStorageValue(focus, 990, -1)
    		focus = 0
    	return true
    	end
    end
    
    local afk_warning = false
    
    function onThink()
    
    	--doSendAnimatedText(getThingPos(getThis()), getCreatureName(getThis()), 215)
    
    	if focus == 0 then
    		selfTurn(2)
    		fighting = false
    		challenger = 0
    		challenger_turn = 0
    		battle_turn = 1
    		afk_time = 0
    		afk_warning = false
    
    		if #getCreatureSummons(getThis()) >= 1 then
    			setPlayerStorageValue(getCreatureSummons(getThis())[1], 1006, 0)
    			doCreatureAddHealth(getCreatureSummons(getThis())[1], -getCreatureMaxHealth(getCreatureSummons(getThis())[1]))
    		end
    
    	return true
    	else
    
    	if not isCreature(focus) then
    		focus = 0
    	return true
    	end
    
    	if fighting then
    
    		talk_start = os.clock()
    
    		if not isCreature(getCreatureTarget(getThis())) then
    			if #getCreatureSummons(challenger) >= 1 then
    				if getCreatureOutfit(getCreatureSummons(challenger)[1]).lookType ~= 2 then --alterado v1.6
    				  selfAttackCreature()
    				  challenger_turn = challenger_turn + 1
    				  afk_time = 0
    	            end
    			else
    				afk_time = afk_time + 0.5
    			end
    		end
    
    		if afk_time > afk_limit_time then
    			setPlayerStorageValue(focus, 990, -1)
    			focus = 0
    			selfSay("Eu aguardei muito tempo, volte quando estiver pronto!")
    		return true
    		end
    
    		if not afk_warning and afk_time > afk_limit_time / 2 then
    			selfSay("Onde esta o seu pokemon? Vamos lutar!")
    			afk_warning = true
    		end
    
    
    		if #getCreatureSummons(getThis()) == 0 then
    			if battle_turn > #pokemons then
    				addEvent(doWinDuel, 1000, focus, getThis())
    				setPlayerStorageValue(focus, 990, -1)
    				focus = 0
    			return true
    			end
    			addEvent(doSummonGymPokemon, 1000, getThis())
    		end
    
    		if not hasPokemon(challenger) or challenger_turn >= 7 or challenger_turn > #pokemons then
    			selfSay("Voce perdeu o duelo! Talvez algum outro momento voce vai me derrotar.")
    			setPlayerStorageValue(focus, 990, -1)
    			focus = 0
    		return true
    		end
    
    	end
    
    		local npcpos = getThingPos(getThis())
    		local focpos = getThingPos(focus)
    
    		if npcpos.z ~= focpos.z then
    			setPlayerStorageValue(focus, 990, -1)
    			focus = 0
    			selfSay("Entao tchau.")
    		return true
    		end
    
    		if (os.clock() - talk_start) > 30 then
    			selfSay("Adeus e continue treinando!")
    			setPlayerStorageValue(focus, 990, -1)
    			focus = 0
    		end
    
    		if getDistanceToCreature(focus) > max_distance then
    			setPlayerStorageValue(focus, 990, -1)
    			focus = 0
    		return true
    		end
    
    		local dir = doRedirectDirection(getDirectionTo(npcpos, focpos))	
    		selfTurn(dir)
    	end
    return true
    end

     

     

    GYM system ta bugado kkkkkkkk creio eu de muito servers ta assim bugadao kkkk 

     

    Ta Complicado =/ 

  16. 22 minutos atrás, nociam disse:

    linha 131 para min não faz sentido.

     

    image.thumb.png.635a71f63cd05b7a85e327dd098554ab.png

    mas sabe onde pode ser este erro eu mudei aqui nao sei se foi a errada mais aque deu erro mudei aii começa da este erro da foto no EXE do server 

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...