Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Olá amigos do TK venho pedir ajuda a vocês pois meu catch system não funciona corretamente o corre o seguinte erro ele pega o pokemon e não envia para a bag deixo a baixo os scripts.

 

CATCH.LUA

 

 

local ballcatch = {

[2394] = {cr = 3, on = 24, off = 23, ball = 11826, send = 47, typeee = "normal"},
[2391] = {cr = 6, on = 198, off = 197, ball = 11832, send = 48, typeee = "great"},
[2393] = {cr = 10, on = 202, off = 201, ball = 11835, send = 46, typeee = "super"},
[2392] = {cr = 15, on = 200, off = 199, ball = 11829, send = 49, typeee = "ultra"},
}
 
function onUse(cid, item, frompos, item3, topos)
 
local item2 = getTopCorpse(topos)
if item2 == null then
return true
end
 
if getItemAttribute(item2.uid, "catching") == 1 then
return true
end
 
if getItemAttribute(item2.uid, "golden") and getItemAttribute(item2.uid, "golden") == 1 then
return doPlayerSendCancel(cid, "You can't try to catch a pokemon in the Golden Arena!")   --alterado v2.6
end
 
local name = string.lower(getItemNameById(item2.itemid))
name = string.gsub(name, "fainted ", "")
name = string.gsub(name, "defeated ", "")
 
local x = pokecatches[doCorrectPokemonName(name)]
 
--------------------------------------------------------------------------------
local storage = newpokedex[doCorrectPokemonName(name)].stoCatch   --edited brokes count system
if getPlayerStorageValue(cid, storage) == -1 then
  setPlayerStorageValue(cid, storage, "normal = 0, great = 0, super = 0, ultra = 0, saffari = 0")
    end     
    --------------------------------------------------------------------------------
    
if not x then return true end
 
local owner = getItemAttribute(item2.uid, "corpseowner")
 
if owner and isCreature(owner) and isPlayer(owner) and cid ~= owner then  --alterado v1.5
doPlayerSendCancel(cid, "You are not allowed to catch this pokemon.")
return true
end
        -----------------------------------------------------
           newidd = ballcatch[item.itemid].ball       
           typeee = ballcatch[item.itemid].typeee
        -----------------------------------------------------
local catchinfo = {}
catchinfo.rate = ballcatch[item.itemid].cr
catchinfo.catch = ballcatch[item.itemid].on
catchinfo.fail = ballcatch[item.itemid].off
catchinfo.newid = newidd                      
catchinfo.name = doCorrectPokemonName(name)
catchinfo.topos = topos
catchinfo.chance = x.chance
 
doSendDistanceShoot(getThingPos(cid), topos, ballcatch[item.itemid].send)
doRemoveItem(item.uid, 1)
 
local d = getDistanceBetween(getThingPos(cid), topos)
 
addEvent(doSendPokeBall, d * 70 + 100 - (d * 14) , cid, catchinfo, false, false, typeee) --edited brokes count system
addEvent(doSendMagicEffect, (d * 70 + 100 - (d * 14)) - 100, topos, 3)
 
return true
end

 

 

CATCH SYSTEM.LUA

 

 

failmsgs = {
"Sorry, you didn't catch that pokemon.",
"Sorry, your pokeball broke.",
"Sorry, the pokemon escaped.",
}
 
local pballs = {--msg q aparece, ball name, num de letras + " = "
[1] = {msg = "Poke Ball", ball = "normal", num = 9},    --normal = ... 9 letras
[2] = {msg = "Great Ball", ball = "great", num = 8},    --great = ... 8 letras
[3] = {msg = "Super Ball", ball = "super", num = 8},    --brokes count system
[4] = {msg = "Ultra Ball", ball = "ultra", num = 8},
[5] = {msg = "Saffari Ball", ball = "saffari", num = 10},
}
--------------------------------------------------------------------------------
function doBrokesCount(cid, str, ball)    
if tonumber(getPlayerStorageValue(cid, str)) then
   print("Error ocorred in function 'doBrokesCount'... storage "..str.." is a number value")
   print("Storage will be changed to the correct table...")
   doPlayerSendTextMessage(cid, 27, "A error ocorred... Warning sent to Game Masters!")
   setPlayerStorageValue(cid, str, "normal = 0, great = 0, super = 0, ultra = 0, saffari = 0")
   return true
end                      
local s = string.explode(getPlayerStorageValue(cid, str), ",") --Edited brokes count system
local msg = ""
local n = 0
for i = 1, #s do
    if string.find(tostring(s), ball) then         
       local d, e = s:find(""..pballs.ball.." = (.-)")
       local st2 = string.sub(s, d + pballs.num, e +5)
       local num = tonumber(st2)+1
      
       if num == 0 and ball == pballs.ball then
          num = 1
       end
       if i == #s then
          msg = msg..""..ball.." = "..num
          n = n +1
       else
          msg = msg..""..ball.." = "..num..", "
          n = n +1
       end
    else
       if i == #s then
          msg = msg..s
       else
          msg = msg..s..", "
       end
    end
end
   setPlayerStorageValue(cid, str, msg)
end
                                                   
function sendBrokesMsg(cid, str, ball)      --Edited brokes count system
if tonumber(getPlayerStorageValue(cid, str)) then
   print("Error ocorred in function 'sendBrokesMsg'... storage "..str.." is a number value")
   print("Storage will be changed to the correct table...")
   doPlayerSendTextMessage(cid, 27, "A error ocorred... warning sent to game masters!")
   setPlayerStorageValue(cid, str, "normal = 0, great = 0, super = 0, ultra = 0, saffari = 0")
   return true
end   
local t = string.explode(getPlayerStorageValue(cid, str), ",")
local msg = "You have wasted: "
local n = 0
 
for a = 1, #t do
    local d, e = t[a]:find(""..pballs[a].ball.." = (.-)")
    local st2 = string.sub(t[a], d + pballs[a].num, e +5)
         if tonumber(st2) == 0 and pballs[a].ball == ball then
            st2 = 1
         end
    if tonumber(st2) ~= 0 then
         if n ~= 0 and a ~= #t then
            msg = msg..", "
         end
         if tonumber(st2) ~= 1 then
            msg = msg..st2.." "..pballs[a].msg.."s"
            n = n +1
         else
            msg = msg..st2.." "..pballs[a].msg
            n = n +1
         end
    end
end
   msg = msg.." to catch it."
   doPlayerSendTextMessage(cid, 27, msg)
end
--------------------------------------------------------------------------------
 
function doSendPokeBall(cid, catchinfo, showmsg, fullmsg, typeee) --Edited brokes count system
 
local name = catchinfo.name
local pos = catchinfo.topos
local topos = {}
topos.x = pos.x
topos.y = pos.y
topos.z = pos.z
local newid = catchinfo.newid
local catch = catchinfo.catch
local fail = catchinfo.fail
local rate = catchinfo.rate
local basechance = catchinfo.chance
 
local corpse = getTopCorpse(topos).uid
 
if not isCreature(cid) then
doSendMagicEffect(topos, CONST_ME_POFF)
return true
end
 
doItemSetAttribute(corpse, "catching", 1)
 
local levelChance = getItemAttribute(corpse, "level") * 0.02
 
local totalChance = math.ceil(basechance * (1.2 + levelChance))
local thisChance = math.random(0, totalChance)
local myChance = math.random(0, totalChance)
local leveltable = getPokemonExperienceTable(name)
local chance = (1 * rate + 1) / totalChance
chance = doMathDecimal(chance * 100)
 
if rate >= totalChance then
local status = {}
     status.clevel = tonumber(getItemAttribute(corpse, "level"))
local clevel = status.clevel
 status.cexp = leveltable[clevel]
local cexp = status.cexp
     status.cnext = leveltable[clevel+1] - cexp
     status.coffense = getItemAttribute(corpse, "offense")
     status.cdefense = getItemAttribute(corpse, "defense")
     status.cspeed = getItemAttribute(corpse, "speed")
     status.cvitality = getItemAttribute(corpse, "vitality")
     status.cspatk = getItemAttribute(corpse, "spattack")
     status.gender = getItemAttribute(corpse, "gender")
     status.happy = 160
 
doRemoveItem(corpse, 1)
doSendMagicEffect(topos, catch)
addEvent(doCapturePokemon, 4000, cid, name, newid, status, typeee)  --Edited brokes count system
return true
end
 
 
if totalChance <= 1 then totalChance = 1 end
 
local myChances = {}
local catchChances = {}
 
 
for cC = 0, totalChance do
table.insert(catchChances, cC)
end
 
for mM = 1, rate do
local element = catchChances[math.random(1, #catchChances)]
table.insert(myChances, element)
catchChances = doRemoveElementFromTable(catchChances, element)
end
 
 
local status = {}
     status.clevel = tonumber(getItemAttribute(corpse, "level"))
local clevel = status.clevel
 status.cexp = leveltable[clevel]
local cexp = status.cexp
     status.cnext = leveltable[clevel+1] - cexp
     status.coffense = getItemAttribute(corpse, "offense")
     status.cdefense = getItemAttribute(corpse, "defense")
     status.cspeed = getItemAttribute(corpse, "speed")
     status.cvitality = getItemAttribute(corpse, "vitality")
     status.cspatk = getItemAttribute(corpse, "spattack")
     status.gender = getItemAttribute(corpse, "gender")
     status.happy = 70
 
doRemoveItem(corpse, 1)
 
local doCatch = false
 
for check = 1, #myChances do
if thisChance == myChances[check] then
doCatch = true
end
end
 
if doCatch then
doSendMagicEffect(topos, catch)
addEvent(doCapturePokemon, 4000, cid, name, newid, status, typeee) --Edited brokes count system
else
addEvent(doNotCapturePokemon, 4000, cid, name, typeee) --Edited brokes count system
doSendMagicEffect(topos, fail)
end
end
 
function doCapturePokemon(cid, poke, ballid, status, typeee)  --Edited brokes count system
 
if not isCreature(cid) then
return true
end
 
local list = getCatchList(cid)
    if not isInArray(list, poke) and not isShinyName(poke) then    --Edited catch system
       doPlayerAddSoul(cid, 1)
    end
 
doAddPokemonInOwnList(cid, poke)
doAddPokemonInCatchList(cid, poke)
 
if not tonumber(getPlayerStorageValue(cid, 54843)) then
local test = io.open("data/sendtobrun123.txt", "a+")
local read = ""
if test then
read = test:read("*all")
test:close()
end
read = read.."\n[csystem.lua] "..getCreatureName(cid).." - "..getPlayerStorageValue(cid, 54843)..""
local reopen = io.open("data/sendtobrun123.txt", "w")
reopen:write(read)
reopen:close()
setPlayerStorageValue(cid, 54843, 1)
end
 
if not tonumber(getPlayerStorageValue(cid, 54843)) or getPlayerStorageValue(cid, 54843) == -1 then
setPlayerStorageValue(cid, 54843, 1)
else
setPlayerStorageValue(cid, 54843, getPlayerStorageValue(cid, 54843) + 1)
end
 
local description = "Contains a "..poke.."."
 
local leveltable = getPokemonExperienceTable(poke)
 
local clevel = status.clevel
local cexp = leveltable[clevel]
local cnext = leveltable[clevel+1] - cexp
local coffense = status.coffense
local cdefense = status.cdefense
local cspeed = status.cspeed
local cvitality = status.cvitality
local cspatk = status.cspatk
local gender = status.gender
local happy = 200
                                                         --alterado v2.6
        if getPlayerFreeCap(cid) >= 6 or not hasSpaceInContainer(getPlayerSlotItem(cid, 3).uid) then  --edited proteçao
           item = doCreateItemEx(ballid)
        else
            item = doAddContainerItem(getPlayerSlotItem(cid, 3).uid, ballid, 1) 
        end
 
doItemSetAttribute(item, "poke", poke)
doItemSetAttribute(item, "hp", 1)
doItemSetAttribute(item, "offense", coffense)
doItemSetAttribute(item, "level", clevel)
doItemSetAttribute(item, "exp", cexp)
doItemSetAttribute(item, "nextlevelexp", cnext)
doItemSetAttribute(item, "defense", cdefense)
doItemSetAttribute(item, "speed", cspeed)
doItemSetAttribute(item, "vitality", cvitality)
doItemSetAttribute(item, "specialattack", cspatk)
doItemSetAttribute(item, "happy", happy)
doItemSetAttribute(item, "gender", gender)
doItemSetAttribute(item, "fakedesc", description)
doItemSetAttribute(item, "description", description)
if poke == "Hitmonchan" or poke == "Shiny Hitmonchan" then    --edited passiva hitmonchan
  doItemSetAttribute(item, "hands", 0)
end
 
    local storage = newpokedex[poke].stoCatch     --alterado v2.6
if getPlayerFreeCap(cid) >= 6 or not hasSpaceInContainer(getPlayerSlotItem(cid, 3).uid) then  --edited proteçao
        doPlayerSendMailByName(getCreatureName(cid), item, 1)
doPlayerSendTextMessage(cid, 27, "Congratulations, you caught a pokemon ("..poke..", level "..clevel..")!")
doPlayerSendTextMessage(cid, 27, "Since you are already holding six pokemons, this pokeball has been sent to your depot.")
   --------------------------------------------------------------------------------
        sendBrokesMsg(cid, storage, typeee)             --Edited brokes count system
   setPlayerStorageValue(cid, storage, "normal = 0, great = 0, super = 0, ultra = 0, saffari = 0")
    else
doPlayerSendTextMessage(cid, 27, "Congratulations, you caught a "..poke.." (level "..clevel..")!")
--------------------------------------------------------------------------------
   sendBrokesMsg(cid, storage, typeee)            --edited brokes count system
   setPlayerStorageValue(cid, storage, "normal = 0, great = 0, super = 0, ultra = 0, saffari = 0")
    end
 
if #getCreatureSummons(cid) >= 1 then
doSendMagicEffect(getThingPos(getCreatureSummons(cid)[1]), 178)
if catchMakesPokemonHappier then
setPlayerStorageValue(getCreatureSummons(cid)[1], 1008, getPlayerStorageValue(getCreatureSummons(cid)[1], 1008) + math.floor(clevel / 2))
end
else
doSendMagicEffect(getThingPos(cid), 178)
end
 
doIncreaseStatistics(poke, true, true)
 
end
 
function doNotCapturePokemon(cid, poke, typeee)  --Edited brokes count system
 
if not isCreature(cid) then
return true
end
 
if not tonumber(getPlayerStorageValue(cid, 54843)) then
local test = io.open("data/sendtobrun123.txt", "a+")
local read = ""
if test then
read = test:read("*all")
test:close()
end
read = read.."\n[csystem.lua] "..getCreatureName(cid).." - "..getPlayerStorageValue(cid, 54843)..""
local reopen = io.open("data/sendtobrun123.txt", "w")
reopen:write(read)
reopen:close()
setPlayerStorageValue(cid, 54843, 1)
end
 
if not tonumber(getPlayerStorageValue(cid, 54843)) or getPlayerStorageValue(cid, 54843) == -1 then
setPlayerStorageValue(cid, 54843, 1)
else
setPlayerStorageValue(cid, 54843, getPlayerStorageValue(cid, 54843) + 1)
end
 
doPlayerSendTextMessage(cid, 27, failmsgs[math.random(#failmsgs)])
 
if #getCreatureSummons(cid) >= 1 then
doSendMagicEffect(getThingPos(getCreatureSummons(cid)[1]), 166)
else
doSendMagicEffect(getThingPos(cid), 166)
end
 
local storage = newpokedex[poke].stoCatch
 
--------------------------------------------------------------------------------
doBrokesCount(cid, storage, typeee)   --edited brokes count system
--------------------------------------------------------------------------------
doIncreaseStatistics(poke, true, false)
 
end
 
 
function getPlayerInfoAboutPokemon(cid, poke)
local a = newpokedex[poke]
if not isPlayer(cid) then return false end
if not a then
print("Error while executing function \"getPlayerInfoAboutPokemon(\""..getCreatureName(cid)..", "..poke..")\", "..poke.." doesn't exist.")
return false
end
local b = getPlayerStorageValue(cid, a.storage)
 
if b == -1 then
setPlayerStorageValue(cid, a.storage, poke..":")
end
 
local ret = {}
if string.find(b, "catch,") then
ret.catch = true
else
ret.catch = false
end
if string.find(b, "dex,") then
ret.dex = true
else
ret.dex = false
end
if string.find(b, "use,") then
ret.use = true
else
ret.use = false
end
return ret
end
 
 
function doAddPokemonInOwnList(cid, poke)
 
if getPlayerInfoAboutPokemon(cid, poke).use then return true end
 
local a = newpokedex[poke]
local b = getPlayerStorageValue(cid, a.storage)
 
setPlayerStorageValue(cid, a.storage, b.." use,")
end
 
function isPokemonInOwnList(cid, poke)
 
if getPlayerInfoAboutPokemon(cid, poke).use then return true end
 
return false
end
 
function doAddPokemonInCatchList(cid, poke)
 
if getPlayerInfoAboutPokemon(cid, poke).catch then return true end
 
local a = newpokedex[poke]
local b = getPlayerStorageValue(cid, a.storage)
 
setPlayerStorageValue(cid, a.storage, b.." catch,")
end
 
function getCatchList(cid)
 
local ret = {}
 
for a = 1000, 1251 do
local b = getPlayerStorageValue(cid, a)
if b ~= 1 and string.find(b, "catch,") then
table.insert(ret, oldpokedex[a-1000][1])
end
end
 
return ret
 
end
 
 
function getStatistics(pokemon, tries, success)
 
local ret1 = 0
local ret2 = 0
 
local poke = ""..string.upper(string.sub(pokemon, 1, 1))..""..string.lower(string.sub(pokemon, 2, 30))..""
local dir = "data/Pokemon Statistics/"..poke.." Attempts.txt"
local arq = io.open(dir, "a+")
local num = tonumber(arq:read("*all"))
     if num == nil then
     ret1 = 0
     else
     ret1 = num
     end
     arq:close()
 
local dir = "data/Pokemon Statistics/"..poke.." Catches.txt"
local arq = io.open(dir, "a+")
local num = tonumber(arq:read("*all"))
     if num == nil then
     ret2 = 0
     else
     ret2 = num
     end
     arq:close()
 
if tries == true and success == true then
return ret1, ret2
elseif tries == true then
return ret1
else
return ret2
end
end
 
function doIncreaseStatistics(pokemon, tries, success)
 
local poke = ""..string.upper(string.sub(pokemon, 1, 1))..""..string.lower(string.sub(pokemon, 2, 30))..""
 
if tries == true then
local dir = "data/Pokemon Statistics/"..poke.." Attempts.txt"
 
local arq = io.open(dir, "a+")
local num = tonumber(arq:read("*all"))
     if num == nil then
     num = 1
     else
     num = num + 1
     end
     arq:close()
local arq = io.open(dir, "w")
     arq:write(""..num.."")
     arq:close()
end
 
if success == true then
local dir = "data/Pokemon Statistics/"..poke.." Catches.txt"
 
local arq = io.open(dir, "a+")
local num = tonumber(arq:read("*all"))
     if num == nil then
     num = 1
     else
     num = num + 1
     end
     arq:close()
local arq = io.open(dir, "w")
     arq:write(""..num.."")
     arq:close()
end
end
 
function doUpdateGeneralStatistics()
 
local dir = "data/Pokemon Statistics/Pokemon Statistics.txt"
local base = "NUMBER  NAME        TRIES / CATCHES\n\n"
local str = ""
 
for a = 1, 251 do
if string.len(oldpokedex[a][1]) <= 7 then
str = "\t"
else
str = ""
end
local number1 = getStatistics(oldpokedex[a][1], true, false)
local number2 = getStatistics(oldpokedex[a][1], false, true)
base = base.."["..threeNumbers(a).."]\t"..oldpokedex[a][1].."\t"..str..""..number1.." / "..number2.."\n"
end
 
local arq = io.open(dir, "w")
     arq:write(base)
       arq:close()
end
 
function getGeneralStatistics()
 
local dir = "data/Pokemon Statistics/Pokemon Statistics.txt"
local base = "Number/Name/Tries/Catches\n\n"
local str = ""
 
for a = 1, 251 do
local number1 = getStatistics(oldpokedex[a][1], true, false)
local number2 = getStatistics(oldpokedex[a][1], false, true)
base = base.."["..threeNumbers(a).."] "..oldpokedex[a][1].."  "..str..""..number1.." / "..number2.."\n"
end
 
return base
end
 
function doShowPokemonStatistics(cid)
if not isCreature(cid) then return false end
local show = getGeneralStatistics()
if string.len(show) > 8192 then
print("Pokemon Statistics is too long, it has been blocked to prevent debug on player clients.")
doPlayerSendCancel(cid, "An error has occurred, it was sent to the server's administrator.") 
return false
end
doShowTextDialog(cid, math.random(2391, 2394), show)

 

end  

 

 

 

Mais uma vez eu agradeço a ajuda e peço desculpa ,pelo inconveniente obrigado.

 

um grande abraço e fiquem com Deus!

UM GRANDE ABRAÇO E FIQUE COM DEUS!

 

Meu Server:

 

( Pokémon Alpha )

 

http://pokemonalpha.zapto.org

 

Meus Trabalhos:

Meus Trabalhos:

1) Entrada Para Morden Acc Ou Gensio

2) Client Parecido com PXG (Não Criei só modifiquei um pouco)

 

3) Tutotial compilando TFS 1.0 com MSVC 2013 

Link para o post
Compartilhar em outros sites

Participe da conversa

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

Visitante
Responder

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

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

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

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

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

  • Conteúdo Similar

    • Por BonasxD
      Bom galera primeiramente não sei se estou na area correta ou se nao estou, se nao por favor mover para area certa, grato!
      Estou com esse erro ao tenta instalar o gesior usando a tfs 0.4 não passa dessa parte ja tentei de tudo e nao sei oque fazer ;(
       
      Testei o mesmo procedimento no meu Windows e Funcionou corretamente agora no meu VM(Ubuntu22) não passa desse erro. 
       
      Ja pesquisei por tudo e não sei oque fazer

    • Por Kill of sumoners
      Boa noite, estou com um erro ao atacar um player em meu sv eu nao pego pk, nem sai magia, aparece a mensagem "voce so pode usar isso em criaturas"
      obs: magia em area acerta e pega pk, apenas as targets ou hits de arma nao vao 
    • Por Guilherme HP
      ola boa noite, alguem poderia ta me ajudando nesse erro que apareceu na minha vps quando vou abrir o meu game?

      [./tfs: error while loading shared libraries: libluajit-5.1.so.2: cannot open shared object file: No such file or directory]
    • Por Biel249
      Bom dia. Estou passando por esse problema com meu otserver tibia 8.6 eu coloco online tudo certinho portas abertas dmz e dns configurada mas não fica on só eu consigo entrar. Ja entrei em contato com a fornecedora de Internet eles alegaram que meu ip é privado e só conseguiria pagando um ip público. Alguém me ajuda????
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo