Ir para conteúdo
  • 0

Catch Pokemon não vai pro dp


zude96

Pergunta

7 respostass a esta questão

Posts Recomendados

  • 0

Catch.lua

 

local ballcatch = {                    --id normal, id da ball shiy
[2394] = {cr = 2, on = 24, off = 23, ball = {11826, 11737}, send = 47, typeee = "normal"},  --alterado v1.9  \/
[2391] = {cr = 4, on = 198, off = 197, ball = {11832, 11740}, send = 48, typeee = "great"},
[2393] = {cr = 6, on = 202, off = 201, ball = {11835, 11743}, send = 46, typeee = "super"},
[2392] = {cr = 8, on = 200, off = 199, ball = {11829, 11746}, send = 49, typeee = "ultra"},
[12617] = {cr = 8, on = 204, off = 203, ball = {10975, 12621}, send = 35, typeee = "saffari"}, 
}

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!")   
end

local name = string.lower(getItemNameById(item2.itemid))
      name = string.gsub(name, "fainted ", "")
      name = string.gsub(name, "defeated ", "")
      name = doCorrectPokemonName(name)
local x = pokecatches[name]

if not x then return true end
    
local storage = newpokedex[name].stoCatch 
if getPlayerStorageValue(cid, storage) == -1 or not string.find(getPlayerStorageValue(cid, storage), ";") then  --alterado v1.9 
   setPlayerStorageValue(cid, storage, "normal = 0, great = 0, super = 0, ultra = 0, saffari = 0;")             --alterado v1.9 
end     

local owner = getItemAttribute(item2.uid, "corpseowner")
    
if owner and isCreature(owner) and isPlayer(owner) and cid ~= owner then   
   doPlayerSendCancel(cid, "You are not allowed to catch this pokemon.")
   return true
end

local newidd = isShinyName(name) and ballcatch[item.itemid].ball[2] or ballcatch[item.itemid].ball[1] --alterado v1.9       
local 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)
        
if getPlayerStorageValue(cid, 98796) >= 1 and getPlayerItemCount(cid, 12617) <= 0 then  --alterado v1.9
   setPlayerStorageValue(cid, 98796, -1) 
   setPlayerStorageValue(cid, 98797, -1)                                              
   doTeleportThing(cid, SafariOut, false)
   doSendMagicEffect(getThingPos(cid), 21)
   doPlayerSendTextMessage(cid, 27, "You spend all your saffari balls, good luck in the next time...")
end

addEvent(doSendPokeBall, d * 70 + 100 - (d * 14) , cid, catchinfo, false, false, typeee) 
addEvent(doSendMagicEffect, (d * 70 + 100 - (d * 14)) - 100, topos, 3)
return true
end
 

 

 

 

 

Base é essa 

 

Link para o comentário
Compartilhar em outros sites

  • 0

Usa esse:

 

 

 



local ballcatch = {                    --id normal, id da ball shiy
[2394] = {cr = 2, on = 24, off = 23, ball = {11826, 11737}, send = 47, typeee = "normal"},  --alterado v1.9  \/
[2391] = {cr = 4, on = 198, off = 197, ball = {11832, 11740}, send = 48, typeee = "great"},
[2393] = {cr = 6, on = 202, off = 201, ball = {11835, 11743}, send = 46, typeee = "super"},
[2392] = {cr = 8, on = 200, off = 199, ball = {11829, 11746}, send = 49, typeee = "ultra"},
[12617] = {cr = 8, on = 204, off = 203, ball = {10975, 12621}, send = 35, typeee = "saffari"}, 
}
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
   doPlayerSendCancel(cid, "You can't try to catch a pokemon in the Golden Arena!")  
return true   
end

local name = string.lower(getItemNameById(item2.itemid))
      name = string.gsub(name, "fainted ", "")
      name = string.gsub(name, "defeated ", "")
      name = doCorrectPokemonName(name)
local x = pokecatches[name]
if not x then return true end
    
local storage = newpokedex[name].stoCatch 
if getPlayerStorageValue(cid, storage) == -1 or not string.find(getPlayerStorageValue(cid, storage), ";") then  --alterado v1.9 
   setPlayerStorageValue(cid, storage, "normal = 0, great = 0, super = 0, ultra = 0, saffari = 0;")             --alterado v1.9 
end     
local owner = getItemAttribute(item2.uid, "corpseowner")
local pOwner = getPlayerByName(owner)

if owner and isCreature(pOwner) and isPlayer(pOwner) and cid ~= pOwnera then   
   doPlayerSendCancel(cid, "Desculpa. Isso não é possivel.")
   return true
end

local newidd = isShinyName(name) and ballcatch[item.itemid].ball[2] or ballcatch[item.itemid].ball[1] --alterado v1.9       
local 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)
        
if getPlayerStorageValue(cid, 98796) >= 1 and getPlayerItemCount(cid, 12617) <= 0 then  --alterado v1.9
   setPlayerStorageValue(cid, 98796, -1) 
   setPlayerStorageValue(cid, 98797, -1)                                              
   doTeleportThing(cid, SafariOut, false)
   doSendMagicEffect(getThingPos(cid), 21)
   doPlayerSendTextMessage(cid, 27, "You spend all your saffari balls, good luck in the next time...")
end
addEvent(doSendPokeBall, d * 70 + 100 - (d * 14) , cid, catchinfo, false, false, typeee) 
addEvent(doSendMagicEffect, (d * 70 + 100 - (d * 14)) - 100, topos, 3)
return true
end

 

 

Se você estiver com char god, o pokémon não vai para o depot e sim para sua bag não importa se for + de 6 ou 6mil.

Agora se você ta com char player, o problema é no catch system da lib não no action.

Link para o comentário
Compartilhar em outros sites

  • 0

O Erro Ainda Persiste. 

 

 

Catch System 

 

 

Spoiler

 

------------------------------------------------------------------------------------------------------------------
failmsgs = {
"Sorry, you didn't catch that pokemon.",
"Sorry, your pokeball broke.",
"Sorry, the pokemon escaped.",
}

epicmsgs = {
"Deu Falha na ball!",
"Deu Falha na ball!",
"Deu Falha na ball!",
}
------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------
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},
[4] = {msg = "Ultra Ball", ball = "ultra", num = 8}, --edited brokes count system
[5] = {msg = "Saffari Ball", ball = "saffari", num = 10},
[6] = {msg = "Love Ball", ball = "love", num = 7},
[7] = {msg = "Master Ball", ball = "master", num = 9},
}


------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------
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, love = 0, master =0")
return true
end
local s = string.explode(getPlayerStorageValue(cid, str), ",")
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)
if tonumber(getPlayerStorageValue(cid, str)) then
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, love = 0, master = 0")
return true
end
local t = string.explode(getPlayerStorageValue(cid, str), ",")
local msg = "Used "
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.." on it."
doPlayerSendTextMessage(cid, 27, msg)
end
------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------
function doSendPokeBall(cid, catchinfo, showmsg, fullmsg, typeee)

    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") * 1 --0.3

    local totalChance = math.ceil(basechance * (1.2 + levelChance))
    local thisChance = math.random(1, totalChance)  -- 0
    local myChance = math.random(1, totalChance)        --- 0
    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)
    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
    
    --------------------------- GOD MODE SYSTEM ---------------------------
    if (getPlayerStorageValue(cid,102001) >= 1) then
        doCatch = true
    end
    -----------------------------------------------------------------------
    
    if doCatch then
        doSendMagicEffect(topos, catch)
        addEvent(doCapturePokemon, 4000, cid, name, newid, status, typeee)
        
    else
        addEvent(doNotCapturePokemon, 4000, cid, name, typeee)
        doSendMagicEffect(topos, fail)
        
    end
end
------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------
function doCapturePokemon(cid, poke, ballid, status, typeee)

    if not isCreature(cid) then
    return true
    end

local list = getCatchList(cid)
    if not isInArray(list, poke) and not isShinyName(poke) then    
       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 = "It 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 = 250
local pname = getCreatureName(cid)


local item = doCreateItemEx(ballid)
    local storage = newpokedex[poke].stoCatch
    
 

         
        
        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)

        


    


--for _, oid in ipairs(getPlayersOnline()) do
-- if (getPlayerFreeCap(cid) <= 1 and not isInArray({3, 2}, getPlayerGroupId(cid))) or not hasSpaceInContainer(getPlayerSlotItem(cid, 3).uid) then         
if getPlayerFreeCap(cid) <= 1  or not hasSpaceInContainer(getPlayerSlotItem(cid, 3).uid) then         
doPlayerSendMailByName(getCreatureName(cid), item, 1) 
doPlayerAddSkillTry(cid,2,10)----1
doPlayerSendTextMessage(cid, 27, "[Parabens] Voce Capturou Um Pokemon: "..poke.." ["..clevel.."]. E a Ball Foi (Bloqueada) Enviada Pelo Cp! .")
--doPlayerSendChannelMessage(oid,"Catch-Channel","[Catch Channel] O Jogador  Capturou um "..poke.." ["..clevel.."]!.", TALKTYPE_CHANNEL_Y, 5)
--doBroadcastMessage("[Catch Cast] O Jogador ("..getCreatureName(cid).. ") Capturou um Pokemon: "..poke.." ["..clevel.."]!",18)

setPlayerStorageValue(cid, storage, "normal = 0, great = 0, super = 0, ultra = 0, saffari = 0, love = 0, master = 0")
else
   
            
   
 
doAddContainerItemEx(getPlayerSlotItem(cid, 3).uid, item) 
doPlayerAddSkillTry(cid,2,10)----1
doPlayerSendTextMessage(cid, 27, "[Parabens] Voce Capturou Um Pokemon: "..poke.." ["..clevel.."] - (Para Visualizar Todos os Catch do Server Abre o Canal Catch Channel)!.")
--doBroadcastMessage("[Catch Cast] O Jogador ("..getCreatureName(cid).. ") Capturou um Pokemon: "..poke.." ["..clevel.."]!",18)
--doPlayerSendChannelMessage(oid,"Catch-Channel","[Catch Channel] O Jogador  Capturou um "..poke.." ["..clevel.."]!.", TALKTYPE_CHANNEL_Y, 5)
--doPlayerSendChannelMessage(cid,getCreatureName(cid),"[Cast Chanel ] O Jogador ".. getCreatureName(cid) .." Capturou um "..poke.." ["..clevel.."]!.", TALKTYPE_CHANNEL_W,CHANNEL_HELP)
setPlayerStorageValue(cid, storage, "normal = 0, great = 0, super = 0, ultra = 0, saffari = 0, love = 0, master = 0")

    end
 
      for _, oid in ipairs(getPlayersOnline()) do
      doPlayerSendChannelMessage(oid,getCreatureName(cid),"[Catch Channel] O Jogador [".. getCreatureName(cid) .."] Capturou um "..poke.." ["..clevel.."]!.", TALKTYPE_CHANNEL_W, 5)
       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
    if getPlayerStorageValue(cid, 50004) >= 1 then
        doItemSetAttribute(item, "firstpoke", pname)
        setPlayerStorageValue(cid,50004,-1)
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You got your first pokemon!!.")
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Don\'t forget to use your pokedex on every undiscovered pokemon!")
    end
end
--end
------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------
function doNotCapturePokemon(cid, poke, typeee)

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)])
doCreatureSay(cid, epicmsgs[math.random(#epicmsgs)], TALKTYPE_MONSTER)

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)
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, 13258), show)
end
------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------

 

 

Link para o comentário
Compartilhar em outros sites

  • 0

Usa esse:

 

 

 



failmsgs = {
"Sorry, you didn't catch that pokemon.",
"Sorry, your pokeball broke.",
"Sorry, the pokemon escaped.",
}
epicmsgs = {
"Deu Falha na ball!",
"Deu Falha na ball!",
"Deu Falha na ball!",
}
------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------
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},
[4] = {msg = "Ultra Ball", ball = "ultra", num = 8}, --edited brokes count system
[5] = {msg = "Saffari Ball", ball = "saffari", num = 10},
[6] = {msg = "Love Ball", ball = "love", num = 7},
[7] = {msg = "Master Ball", ball = "master", num = 9},
}

------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------
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, love = 0, master =0")
return true
end
local s = string.explode(getPlayerStorageValue(cid, str), ",")
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)
if tonumber(getPlayerStorageValue(cid, str)) then
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, love = 0, master = 0")
return true
end
local t = string.explode(getPlayerStorageValue(cid, str), ",")
local msg = "Used "
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.." on it."
doPlayerSendTextMessage(cid, 27, msg)
end
------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------
function doSendPokeBall(cid, catchinfo, showmsg, fullmsg, typeee)
    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") * 1 --0.3
    local totalChance = math.ceil(basechance * (1.2 + levelChance))
    local thisChance = math.random(1, totalChance)  -- 0
    local myChance = math.random(1, totalChance)        --- 0
    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)
    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
    
    --------------------------- GOD MODE SYSTEM ---------------------------
    if (getPlayerStorageValue(cid,102001) >= 1) then
        doCatch = true
    end
    -----------------------------------------------------------------------
    
    if doCatch then
        doSendMagicEffect(topos, catch)
        addEvent(doCapturePokemon, 4000, cid, name, newid, status, typeee)
        
    else
        addEvent(doNotCapturePokemon, 4000, cid, name, typeee)
        doSendMagicEffect(topos, fail)
        
    end
end
------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------
function doCapturePokemon(cid, poke, ballid, status, typeee)
    if not isCreature(cid) then
    return true
    end
local list = getCatchList(cid)
    if not isInArray(list, poke) and not isShinyName(poke) then    
       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 = "It 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 = 250
local pname = getCreatureName(cid)

local item = doCreateItemEx(ballid)
    local storage = newpokedex[poke].stoCatch
    
 local cap = getPlayerFreeCap(cid)
        if (cap <= 1 and not isInArray({5, 6}, getPlayerGroupId(cid))) or not hasSpaceInContainer(getPlayerSlotItem(cid, 3).uid) then 
           item = doCreateItemEx(ballid)
        else
            item = addItemInFreeBag(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)
        

    

--for _, oid in ipairs(getPlayersOnline()) do
-- if (getPlayerFreeCap(cid) <= 1 and not isInArray({3, 2}, getPlayerGroupId(cid))) or not hasSpaceInContainer(getPlayerSlotItem(cid, 3).uid) then         
if cap <= 1 then   
            doPlayerSendMailByName(getCreatureName(cid), item, 1)    
            doPlayerSendTextMessage(cid, 27, "Since you are already holding six pokemons, this pokeball has been sent to your depot.")  
            setPlayerStorageValue(cid, storage, "normal = 0, great = 0, super = 0, ultra = 0, saffari = 0, love = 0, master = 0")
        else 
            
   
 
doAddContainerItemEx(getPlayerSlotItem(cid, 3).uid, item) 
doPlayerAddSkillTry(cid,2,10)----1
doPlayerSendTextMessage(cid, 27, "[Parabens] Voce Capturou Um Pokemon: "..poke.." ["..clevel.."] - (Para Visualizar Todos os Catch do Server Abre o Canal Catch Channel)!.")
--doBroadcastMessage("[Catch Cast] O Jogador ("..getCreatureName(cid).. ") Capturou um Pokemon: "..poke.." ["..clevel.."]!",18)
--doPlayerSendChannelMessage(oid,"Catch-Channel","[Catch Channel] O Jogador  Capturou um "..poke.." ["..clevel.."]!.", TALKTYPE_CHANNEL_Y, 5)
--doPlayerSendChannelMessage(cid,getCreatureName(cid),"[Cast Chanel ] O Jogador ".. getCreatureName(cid) .." Capturou um "..poke.." ["..clevel.."]!.", TALKTYPE_CHANNEL_W,CHANNEL_HELP)
setPlayerStorageValue(cid, storage, "normal = 0, great = 0, super = 0, ultra = 0, saffari = 0, love = 0, master = 0")
    end
 
      for _, oid in ipairs(getPlayersOnline()) do
      doPlayerSendChannelMessage(oid,getCreatureName(cid),"[Catch Channel] O Jogador [".. getCreatureName(cid) .."] Capturou um "..poke.." ["..clevel.."]!.", TALKTYPE_CHANNEL_W, 5)
       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
    if getPlayerStorageValue(cid, 50004) >= 1 then
        doItemSetAttribute(item, "firstpoke", pname)
        setPlayerStorageValue(cid,50004,-1)
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You got your first pokemon!!.")
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Don\'t forget to use your pokedex on every undiscovered pokemon!")
    end
end
--end
------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------
function doNotCapturePokemon(cid, poke, typeee)
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)])
doCreatureSay(cid, epicmsgs[math.random(#epicmsgs)], TALKTYPE_MONSTER)
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)
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, 13258), show)
end
------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------
 

 

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...