jeemax 0 Postado Dezembro 7, 2012 Share Postado Dezembro 7, 2012 Ola galera do Xtibia, Estou com uma duvida e espero que possam me ajudar, Bem vamos la, eu uso o pokeserver pokemon Xd. só que n sei como mecher no system de cath, ja criei o poke nos items, ja colokei o portrait mais ñ vai, quero que me expliquem passo a passo como por pokes no catch. ta ae meu system de cath local ballcatch = { [2394] = {cr = 1, on = 24, off = 23, ball = 11826, send = 47}, [2391] = {cr = 3, on = 198, off = 197, ball = 11832, send = 48}, [2393] = {cr = 15, on = 204, off = 203, ball = 11835, send = 46}, [2392] = {cr = 10, on = 200, off = 199, ball = 11829, send = 49}, } 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 local name = string.lower(getItemNameById(item2.itemid)) name = string.gsub(name, "fainted ", "") name = string.gsub(name, "defeated ", "") local x = pokecatches[doCorrectPokemonName(name)] if not x then return true end local owner = getItemAttribute(item2.uid, "corpseowner") if owner and isCreature(owner) and isPlayer(owner) and cid ~= owner and isInArray({1,8}, getPlayerGroupId(cid)) then doPlayerSendCancel(cid, "You are not allowed to catch this pokemon.") return true end local catchinfo = {} catchinfo.rate = ballcatch[item.itemid].cr catchinfo.catch = ballcatch[item.itemid].on catchinfo.fail = ballcatch[item.itemid].off catchinfo.newid = ballcatch[item.itemid].ball 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) addEvent(doSendMagicEffect, (d * 70 + 100 - (d * 14)) - 100, topos, 3) return true end Link para o comentário Compartilhar em outros sites More sharing options...
Prezyoso 44 Postado Dezembro 7, 2012 Share Postado Dezembro 7, 2012 Amigo, se não me engano tem q mecher em> data>lib>catchsystem.lua Pega ele e posta aqui. Link para o comentário Compartilhar em outros sites More sharing options...
jeemax 0 Postado Dezembro 7, 2012 Autor Share Postado Dezembro 7, 2012 (editado) Amigo, se não me engano tem q mecher em> data>lib>catchsystem.lua Pega ele e posta aqui. failmsgs = { "Sorry, you didn't catch that pokemon.", "Sorry, your pokeball broke.", "Sorry, the pokemon escaped.", } function doSendPokeBall(cid, catchinfo, showmsg, fullmsg) 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) 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) else addEvent(doNotCapturePokemon, 4000, cid, name) doSendMagicEffect(topos, fail) end end function doCapturePokemon(cid, poke, ballid, status) if not isCreature(cid) then return true end doPlayerAddSoul(cid, 1) 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 local item = doCreateItemEx(ballid) 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 getPlayerFreeCap(cid) >= 6 then 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.") else doAddContainerItemEx(getPlayerSlotItem(cid, 1).uid, item) doPlayerSendTextMessage(cid, 27, "Congratulations, you caught a "..poke.." (level "..clevel..")!") 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) 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 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 ta ae o catch system Editado Dezembro 7, 2012 por jeemax Link para o comentário Compartilhar em outros sites More sharing options...
Prezyoso 44 Postado Dezembro 7, 2012 Share Postado Dezembro 7, 2012 Vish cara, acho que não é ai... Era um scripts parte do system catch que havia a chance de capturar todos os pokemons la e talz. Link para o comentário Compartilhar em outros sites More sharing options...
SmiX 265 Postado Dezembro 7, 2012 Share Postado Dezembro 7, 2012 local ballcatch = { [2394] = {cr = 1, on = 24, off = 23, ball = 11826, send = 47}, [2391] = {cr = 3, on = 198, off = 197, ball = 11832, send = 48}, [2393] = {cr = 15, on = 204, off = 203, ball = 11835, send = 46}, [2392] = {cr = 10, on = 200, off = 199, ball = 11829, send = 49}, } Em "CR=1" vc edita a chance de capturar um pokemon..... Link para o comentário Compartilhar em outros sites More sharing options...
Heinekennn 24 Postado Dezembro 7, 2012 Share Postado Dezembro 7, 2012 Bom se seu pokemon foi PDA eu fiz no meu o seguinte: Fui a pasta DATA/LIB/CONFIGURATION e CTRL+F pokecatches = { Ai vai ter o catch de kada poke dps vc vai editando lembrando que mais baxa a rate mais facil de caputurar ! E ruim mas so sei esse ! Se Der REP+ ae! Link para o comentário Compartilhar em outros sites More sharing options...
jeemax 0 Postado Dezembro 8, 2012 Autor Share Postado Dezembro 8, 2012 consegui galera, Vlw a todos vou dar rep+ pra vc's so que hj cabo limit =s Vlw aeê Link para o comentário Compartilhar em outros sites More sharing options...
DinoAdmin 56 Postado Dezembro 8, 2012 Share Postado Dezembro 8, 2012 jeemax, amigo tente utilizar o [.spoiler] txt [./spoiler] (sem os PONTOS) isso ajuda muito na vizualizaçao de um post organizado!! Link para o comentário Compartilhar em outros sites More sharing options...
Stigal 584 Postado Abril 20, 2018 Share Postado Abril 20, 2018 A questão neste tópico de suporte foi encerrada por falta de respostas. Este tópico está fechado e foi movido para Suporte - Tópicos Sem Resposta. + Caso a dúvida não tenha sido resolvida você poderá criar outro tópico solicitando ajuda. * Lembre-se que é permitido dar UP no tópico a cada 24 horas para assim o destacar e manter movimentado. Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados