Atividades
- Hoje
-
azion se registrou na comunidade
-
humberto98 se registrou na comunidade
-
WODBO 'ACCOUNT MANAGER' PLS
alguem tem
-
Mangusto se registrou na comunidade
-
-
ZaunSentry alterou sua foto pessoal
-
ZaunSentry começou a seguir Todas sprites PAdventures (Atualizado Constantemente)
-
Todas sprites PAdventures (Atualizado Constantemente)
Olá! Estou iniciando um trabalho de extrair e publicar para a comunidade conteúdos de otserves. Partindo do ponto de que tudo é "open tibia". Derivados e sem direitos, principalmente quando o assunto é Pokémon que é uma franquia como sabemos. Logo, todo o conteúdo é comunitário e sem fins lucrativos. FIquem a vontade para fazer sugestões, extrair informações e conteúdo e utilizar como preferirem. Neste post me limito ao conteúdo do PAdventures, um servidor antigo e com um conteúdo denso de sprites pokemon. Também tenho o código todo do client deste servidor e de outros (pstory, pokexgames e outros famosos). Mas publicarei aos poucos e apenas se o post for bem aceito e o repositório no GitHub tiver 100 estrelas neste caso. O conteúdo esta organizado em folhas de sprites de cada componente, organizado por criaturas, míssile, effect e items. Conteúdo sempre atualizado, toda vez que sai uma nova atualização do client eu refaço a extração e publico. Repositório GitHub: https://github.com/DistTopic/padventures-sprites Discord da organização do GitHub onde estamos reunindo este conteúdo e criando editores, clients e servers de código aberto e com tecnologias robustas atualizadas: https://discord.com/invite/NrzbcBhh66
- Ontem
-
Cazz se registrou na comunidade
-
lucastudor1 se registrou na comunidade
- Última semana
-
natanfdb2 se registrou na comunidade
-
ZaunSentry se registrou na comunidade
-
-
TFS 0.3.6 - 8.60 TO COM PROBLEMA DE ERROS NO DISTRO ANTES DE FICAR ONLINE!
PODE ME AJUDA AQUI OU NO DISCORD [ID]: samuelgaldinodearaujo CONSOLE GUI.txt
-
-
-
viicsz se registrou na comunidade
-
.brunofiorillo começou a seguir Ajuda com attachedeffects - Liberar para players
-
Ajuda com attachedeffects - Liberar para players
Bom dia, espero que estajam todos bem! Gostaria de solicitar um suporte para a questão mencinado no titulo. Estou tentando liberar os attachedeffects para players comuns usarem, mas não encontro as "travas" Estou usando esta base: GitHub - zimbadev/crystalserver: Crystal Server is an OpenTibia Server for 15.11 protocol with new Weapon Proficiency and ImbuementScrolls. (https://github.com/zimbadev/crystalserver) Otclient que estou usando: (Redemption Otclient) GitHub - opentibiabr/otclient: An alternative tibia client for otserv written in C++20 and Lua, made with a modular system that uses lua scripts for ingame interface and functionality, making otclient flexible and easy to customize (https://github.com/opentibiabr/otclient). Vi que tanto no servidor quanto no client possuem os sistemas de wings, auras, effects e shaders. Gostaria de saber como faz para liberar para players usarem? atualmente só consigo visualizar no game window customiser do GM. Gostaria de liberar para players. seja por store InGame, por compra em site ou até mesmo por Storage. se alguem souber e puder ajudar. a versão do servidor do client são 15.11. Segue imagens da parte onde visualizo na conta de gm auras, wings... Desde já agradeço.
-
-
-
-
-
-
-
erro apache Port 80
@GenoKillerr Meu contato: (27) 998931903
- Gesior sem sample nos players como adicionar?
-
[Support] Conta perdida
Meu contato: (27) 998931903.
- Anteriormente
-
-
ROOK WPR 8.60 - NEW VERSION
download
- [SOURCE] BOT OTClient (Free - COM CAVEBOT)
-
DarkRed começou a seguir novas ball poketibia
-
novas ball poketibia
alguem podeeria me ajuda meu servidor de poketibia nao contabiliza a pokebolas se tenho 100 e uso 1 ela nao desce para 99 magu ball yumo poderia me ajuda catch do actions local ballcatch = { --id normal, id da ball shiny [2394] = {cr = 40, on = 24, off = 23, ball = {11826, 11737}, send = 47, typeee = "normal"}, [2391] = {cr = 45, on = 198, off = 197, ball = {11832, 11740}, send = 48, typeee = "great"}, [2393] = {cr = 50, on = 202, off = 201, ball = {11835, 11743}, send = 46, typeee = "super"}, [2392] = {cr = 55, on = 200, off = 199, ball = {11829, 11746}, send = 49, typeee = "ultra"}, [16458] = {cr = 55, on = 258, off = 259, ball = {16459, 16462}, send = 58, typeee = "magu"}, [16465] = {cr = 55, on = 261, off = 262, ball = {16466, 16469}, send = 59, typeee = "sora"}, [16472] = {cr = 55, on = 264, off = 265, ball = {16473, 16476}, send = 60, typeee = "yume"}, -- CORRIGIDO: Invertido de (16476, 16473) para (Normal, Shiny) [16479] = {cr = 55, on = 267, off = 268, ball = {16480, 16483}, send = 61, typeee = "dusk"}, -- CORRIGIDO: Invertido de (16483, 16480) para (Normal, Shiny) [16486] = {cr = 55, on = 270, off = 271, ball = {16487, 16490}, send = 62, typeee = "fast"}, -- CORRIGIDO: Invertido de (16490, 16487) para (Normal, Shiny) [16493] = {cr = 55, on = 273, off = 274, ball = {16494, 16497}, send = 63, typeee = "heavy"}, [16500] = {cr = 55, on = 276, off = 277, ball = {16501, 16504}, send = 64, typeee = "tale"}, -- CORRIGIDO: Invertido de (16504, 16501) para (Normal, Shiny) [16507] = {cr = 55, on = 279, off = 280, ball = {16508, 16511}, send = 65, typeee = "moon"}, -- CORRIGIDO: Invertido de (16508, 16511) para (Normal, Shiny) [16514] = {cr = 55, on = 282, off = 283, ball = {16515, 16518}, send = 66, typeee = "net"}, -- CORRIGIDO: Invertido de (16518, 16515) para (Normal, Shiny) [16521] = {cr = 55, on = 282, off = 283, ball = {16522, 16525}, send = 67, typeee = "janguru"}, -- CORRIGIDO: "Janguru" minúsculo para bater com a configuration.lua [16528] = {cr = 55, on = 288, off = 289, ball = {16529, 16532}, send = 68, typeee = "premier"}, -- CORRIGIDO: Invertido de (16532, 16529) para (Normal, Shiny) [16535] = {cr = 55, on = 291, off = 292, ball = {16536, 16539}, send = 69, typeee = "tinker"}, -- CORRIGIDO: Invertido de (16539, 16536) para (Normal, Shiny) [16542] = {cr = 55, on = 294, off = 294, ball = {16543, 16546}, send = 70, typeee = "master"}, -- CORRIGIDO: Invertido de (16546, 16543) para (Normal, Shiny) [16549] = {cr = 55, on = 296, off = 298, ball = {16550, 16553}, send = 71, typeee = "saffari"}, -- CORRIGIDO: Invertido de (16553, 16550) para (Normal, Shiny) } 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 ", "") 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, "magu = 0, sora = 0, yume = 0, dusk = 0, fast = 0, heavy = 0, tale = 0, moon = 0, net = 0, janguru = 0, premier = 0, tinker = 0, master = 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, "Voce nao tem permissao para capturar este 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, "Você gastou todas as suas bolas de safari, boa sorte da proxima vez....") 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 catch do lib failmsgs = { "Sorry, you didn't catch that pokemon.", "Sorry, your pokeball broke.", "Sorry, the pokemon escaped.", } function doBrokesCount(cid, str, ball) --alterado v1.9 atualizado para novas balls if not isCreature(cid) then return false end local tb = { {b = "normal", v = 0}, {b = "great", v = 0}, {b = "super", v = 0}, {b = "ultra", v = 0}, {b = "saffari", v = 0}, {b = "magu", v = 0}, {b = "sora", v = 0}, {b = "yume", v = 0}, {b = "dusk", v = 0}, {b = "fast", v = 0}, {b = "heavy", v = 0}, {b = "tale", v = 0}, {b = "moon", v = 0}, {b = "net", v = 0}, {b = "janguru", v = 0}, {b = "premier", v = 0}, {b = "tinker", v = 0}, {b = "master", v = 0} } for _, e in ipairs(tb) do if e.b == ball then e.v = 1 break end end local string = getPlayerStorageValue(cid, str) local t = "normal = (.-), great = (.-), super = (.-), ultra = (.-), saffari = (.-), magu = (.-), sora = (.-), yume = (.-), dusk = (.-), fast = (.-), heavy = (.-), tale = (.-), moon = (.-), net = (.-), janguru = (.-), premier = (.-), tinker = (.-), master = (.-);" local t2 = "" for n, g, s, u, s2, mg, sr, ym, dk, fs, hv, tl, mn, nt, jg, pr, tk, mt in string:gmatch(t) do t2 = "normal = "..(n+tb[1].v)..", great = "..(g+tb[2].v)..", super = "..(s+tb[3].v)..", ultra = "..(u+tb[4].v)..", saffari = "..(s2+tb[5].v)..", magu = "..(mg+tb[6].v)..", sora = "..(sr+tb[7].v)..", yume = "..(ym+tb[8].v)..", dusk = "..(dk+tb[9].v)..", fast = "..(fs+tb[10].v)..", heavy = "..(hv+tb[11].v)..", tale = "..(tl+tb[12].v)..", moon = "..(mn+tb[13].v)..", net = "..(nt+tb[14].v)..", janguru = "..(jg+tb[15].v)..", premier = "..(pr+tb[16].v)..", tinker = "..(tk+tb[17].v)..", master = "..(mt+tb[18].v)..";" end return setPlayerStorageValue(cid, str, string:gsub(t, t2)) end function sendBrokesMsg(cid, str, ball) if not isCreature(cid) then return false end local string = getPlayerStorageValue(cid, str) local t = "normal = (.-), great = (.-), super = (.-), ultra = (.-), saffari = (.-), magu = (.-), sora = (.-), yume = (.-), dusk = (.-), fast = (.-), heavy = (.-), tale = (.-), moon = (.-), net = (.-), janguru = (.-), premier = (.-), tinker = (.-), master = (.-);" local msg = {} table.insert(msg, "You have wasted: ") for n, g, s, u, s2, mg, sr, ym, dk, fs, hv, tl, mn, nt, jg, pr, tk, mt in string:gmatch(t) do if tonumber(n) and tonumber(n) > 0 then table.insert(msg, (#msg > 1 and ", " or "")..tostring(n).." Poke ball".. (tonumber(n) > 1 and "s" or "")) end if tonumber(g) and tonumber(g) > 0 then table.insert(msg, (#msg > 1 and ", " or "")..tostring(g).." Great ball".. (tonumber(g) > 1 and "s" or "")) end if tonumber(s) and tonumber(s) > 0 then table.insert(msg, (#msg > 1 and ", " or "")..tostring(s).." Super ball".. (tonumber(s) > 1 and "s" or "")) end if tonumber(u) and tonumber(u) > 0 then table.insert(msg, (#msg > 1 and ", " or "")..tostring(u).." Ultra ball".. (tonumber(u) > 1 and "s" or "")) end if tonumber(s2) and tonumber(s2) > 0 then table.insert(msg, (#msg > 1 and ", " or "")..tostring(s2).." Saffari ball".. (tonumber(s2) > 1 and "s" or "")) end if tonumber(mg) and tonumber(mg) > 0 then table.insert(msg, (#msg > 1 and ", " or "")..tostring(mg).." Magu ball".. (tonumber(mg) > 1 and "s" or "")) end if tonumber(sr) and tonumber(sr) > 0 then table.insert(msg, (#msg > 1 and ", " or "")..tostring(sr).." Sora ball".. (tonumber(sr) > 1 and "s" or "")) end if tonumber(ym) and tonumber(ym) > 0 then table.insert(msg, (#msg > 1 and ", " or "")..tostring(ym).." Yume ball".. (tonumber(ym) > 1 and "s" or "")) end if tonumber(dk) and tonumber(dk) > 0 then table.insert(msg, (#msg > 1 and ", " or "")..tostring(dk).." Dusk ball".. (tonumber(dk) > 1 and "s" or "")) end if tonumber(fs) and tonumber(fs) > 0 then table.insert(msg, (#msg > 1 and ", " or "")..tostring(fs).." Fast ball".. (tonumber(fs) > 1 and "s" or "")) end if tonumber(hv) and tonumber(hv) > 0 then table.insert(msg, (#msg > 1 and ", " or "")..tostring(hv).." Heavy ball".. (tonumber(hv) > 1 and "s" or "")) end if tonumber(tl) and tonumber(tl) > 0 then table.insert(msg, (#msg > 1 and ", " or "")..tostring(tl).." Tale ball".. (tonumber(tl) > 1 and "s" or "")) end if tonumber(mn) and tonumber(mn) > 0 then table.insert(msg, (#msg > 1 and ", " or "")..tostring(mn).." Moon ball".. (tonumber(mn) > 1 and "s" or "")) end if tonumber(nt) and tonumber(nt) > 0 then table.insert(msg, (#msg > 1 and ", " or "")..tostring(nt).." Net ball".. (tonumber(nt) > 1 and "s" or "")) end if tonumber(jg) and tonumber(jg) > 0 then table.insert(msg, (#msg > 1 and ", " or "")..tostring(jg).." Janguru ball".. (tonumber(jg) > 1 and "s" or "")) end if tonumber(pr) and tonumber(pr) > 0 then table.insert(msg, (#msg > 1 and ", " or "")..tostring(pr).." Premier ball".. (tonumber(pr) > 1 and "s" or "")) end if tonumber(tk) and tonumber(tk) > 0 then table.insert(msg, (#msg > 1 and ", " or "")..tostring(tk).." Tinker ball".. (tonumber(tk) > 1 and "s" or "")) end if tonumber(mt) and tonumber(mt) > 0 then table.insert(msg, (#msg > 1 and ", " or "")..tostring(mt).." Master ball".. (tonumber(mt) > 1 and "s" or "")) end end if #msg == 1 then return true end if string.sub(msg[#msg], 1, 1) == "," then msg[#msg] = " and".. string.sub(msg[#msg], 2, #msg[#msg]) end table.insert(msg, " trying to catch it.") sendMsgToPlayer(cid, 27, table.concat(msg)) end --alterado v1.9 /\ -------------------------------------------------------------------------------- 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 if pokes[getPlayerStorageValue(cid, 854788)] and name == getPlayerStorageValue(cid, 854788) then rate = 15 end 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 chance = (1 * rate + 1) / totalChance chance = doMathDecimal(chance * 100) if rate >= totalChance then local status = {} status.gender = getItemAttribute(corpse, "gender") status.happy = 160 doRemoveItem(corpse, 1) doSendMagicEffect(topos, catch) addEvent(doCapturePokemon, 3000, 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.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, 3000, cid, name, newid, status, typeee) else addEvent(doNotCapturePokemon, 3000, 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) -- =================================================================== -- SISTEMA DE EXP DOBRADA COM FILTRO DE PRIMEIRA CAPTURA (CORRIGIDO) -- =================================================================== local pokemonRealName = doCorrectPokemonName(poke) -- Verifica se o Pokémon está cadastrado na tabela de bônus (catchXP.lua) if pokedex_xp_bonus[pokemonRealName] then -- No PDA, 'list' contém todos os Pokémons que o jogador já capturou if not isInArray(list, pokemonRealName) then local xpBase = pokedex_xp_bonus[pokemonRealName] local totalXP = xpBase * 2 -- Aplica o dobro de XP -- Adiciona a experiência ao jogador doPlayerAddExperience(cid, totalXP) -- Efeito de texto flutuante laranja acima do player doCreatureSay(cid, "FIRST CATCH! [+"..totalXP.." XP]", TALKTYPE_ORANGE_1) -- Mensagem enviada diretamente ao Chat Log do jogador doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "[First Catch] Voce capturou um " .. pokemonRealName .. " pela primeira vez e recebeu o dobro de XP (+" .. totalXP .. ").") -- Efeitos visuais (Corações flutuando no jogador) local playerPos = getThingPos(cid) doSendMagicEffect(playerPos, 29) doSendMagicEffect(playerPos, 29) end end -- =================================================================== 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 = "Contains a "..poke.."." local gender = status.gender local happy = 200 --alterado v1.9 \/ if (getPlayerFreeCap(cid) >= 6 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, "happy", happy) doItemSetAttribute(item, "gender", gender) doItemSetAttribute(item, "fakedesc", description) doItemSetAttribute(item, "description", description) doItemSetAttribute(item, "addon", 0) if poke "Hitmonchan" or poke "Shiny Hitmonchan" then doItemSetAttribute(item, "hands", 0) end ----------- task clan --------------------- if pokes[getPlayerStorageValue(cid, 854788)] and poke == getPlayerStorageValue(cid, 854788) then sendMsgToPlayer(cid, 27, "Quest Done!") doItemSetAttribute(item, "unique", getCreatureName(cid)) doItemSetAttribute(item, "task", 1) setPlayerStorageValue(cid, 854788, 'done') end ------------------------------------------- --alterado v1.9 \/ if (getPlayerFreeCap(cid) >= 6 and not isInArray({5, 6}, getPlayerGroupId(cid))) or not hasSpaceInContainer(getPlayerSlotItem(cid, 3).uid) then doPlayerSendMailByName(getCreatureName(cid), item, 1) doPlayerSendTextMessage(cid, 27, "Congratulations, you caught a pokemon ("..poke..")!") doPlayerSendTextMessage(cid, 27, "Since you are already holding six pokemons, this pokeball has been sent to your depot.") else doPlayerSendTextMessage(cid, 27, "Congratulations, you caught a ("..poke..")!") end if type(poke) == "table" then poke = poke.name or poke end local storage = newpokedex[poke].stoCatch sendBrokesMsg(cid, storage, typeee) setPlayerStorageValue(cid, storage, "normal = 0, great = 0, super = 0, ultra = 0, saffari = 0, magu = 0, sora = 0, yume = 0, dusk = 0, fast = 0, heavy = 0, tale = 0, moon = 0, net = 0, janguru = 0, premier = 0, tinker = 0, master = 0;") -- Atualizado com as novas balls if #getCreatureSummons(cid) >= 1 then doSendMagicEffect(getThingPos(getCreatureSummons(cid)[1]), 173) if catchMakesPokemonHappier then setPlayerStorageValue(getCreatureSummons(cid)[1], 1008, getPlayerStorageValue(getCreatureSummons(cid)[1], 1008) + 20) end else doSendMagicEffect(getThingPos(cid), 173) end doIncreaseStatistics(poke, true, true) end function doNotCapturePokemon(cid, poke, typeee) if not isCreature(cid) then return true end if type(poke) == "table" then poke = poke.name or poke 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) doIncreaseStatistics(poke, true, false) end function getPlayerInfoAboutPokemon(cid, poke) if type(poke) == "table" then poke = poke.name or poke end 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 type(poke) == "table" then poke = poke.name or poke end 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 type(poke) == "table" then poke = poke.name or poke end if getPlayerInfoAboutPokemon(cid, poke).use then return true end return false end function doAddPokemonInCatchList(cid, poke) if type(poke) == "table" then poke = poke.name or poke end 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 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 configuration lib pokeballs = { ["normal"] = {effect = 188, on = 11826, use = 11827, off = 11828, all = {11826, 11827, 11828}}, ["great"] = {effect = 189, on = 11832, use = 11833, off = 11834, all = {11832, 11833, 11834}}, ["super"] = {effect = 190, on = 11835, use = 11836, off = 11837, all = {11835, 11836, 11837}}, ["ultra"] = {effect = 191, on = 11829, use = 11830, off = 11831, all = {11829, 11830, 11831}}, ["magu"] = {effect = 260, on = 16459, use = 16460, off = 16461, all = {16459, 16460, 16461}}, -- NOVAS BALLS ["sora"] = {effect = 263, on = 16466, use = 16467, off = 16468, all = {16466, 16467, 16468}}, ["yume"] = {effect = 266, on = 16473, use = 16474, off = 16475, all = {16473, 16474, 16475}}, ["dusk"] = {effect = 269, on = 16480, use = 16481, off = 16482, all = {16480, 16481, 16482}}, ["fast"] = {effect = 272, on = 16487, use = 16488, off = 16489, all = {16487, 16488, 16489}}, ["heavy"] = {effect = 275, on = 16494, use = 16495, off = 16496, all = {16494, 16495, 16496}}, ["tale"] = {effect = 278, on = 16501, use = 16502, off = 16503, all = {16501, 16502, 16503}}, ["moon"] = {effect = 281, on = 16508, use = 16509, off = 16510, all = {16508, 16509, 16510}}, ["net"] = {effect = 284, on = 16515, use = 16516, off = 16517, all = {16515, 16516, 16517}}, ["janguru"] = {effect = 287, on = 16522, use = 16523, off = 16524, all = {16522, 16523, 16524}}, ["premier"] = {effect = 290, on = 16529, use = 16530, off = 16531, all = {16529, 16530, 16531}}, ["tinker"] = {effect = 293, on = 16536, use = 16537, off = 16538, all = {16536, 16537, 16538}}, ["master"] = {effect = 295, on = 16543, use = 16544, off = 16545, all = {16543, 16544, 16545}}, ["saffari"] = {effect = 296, on = 16550, use = 16551, off = 16552, all = {16550, 16551, 16552}}, ["shinynormal"] = {effect = 188, on = 11737, use = 11738, off = 11739, all = {11737, 11738, 11739}}, ["shinygreat"] = {effect = 189, on = 11740, use = 11741, off = 11742, all = {11740, 11741, 11742}}, ["shinysuper"] = {effect = 190, on = 11743, use = 11744, off = 11745, all = {11743, 11744, 11745}}, ["shinyultra"] = {effect = 191, on = 11746, use = 11747, off = 11748, all = {11746, 11747, 11748}}, -- SHINY BALLS (IDs corrigidos para as versões Shiny de cada uma) ["shinymagu"] = {effect = 260, on = 16462, use = 16463, off = 16464, all = {16462, 16463, 16464}}, ["shinysora"] = {effect = 263, on = 16469, use = 16470, off = 16471, all = {16469, 16470, 16471}}, ["shinyyume"] = {effect = 266, on = 16476, use = 16477, off = 16478, all = {16476, 16477, 16478}}, ["shinydusk"] = {effect = 269, on = 16483, use = 16484, off = 16485, all = {16483, 16484, 16485}}, ["shinyfast"] = {effect = 272, on = 16490, use = 16491, off = 16492, all = {16490, 16491, 16492}}, ["shinyheavy"] = {effect = 275, on = 16497, use = 16498, off = 16499, all = {16497, 16498, 16499}}, ["shinytale"] = {effect = 278, on = 16504, use = 16505, off = 16506, all = {16504, 16505, 16506}}, ["shinymoon"] = {effect = 281, on = 16511, use = 16512, off = 16513, all = {16511, 16512, 16513}}, ["shinynet"] = {effect = 284, on = 16518, use = 16519, off = 16520, all = {16518, 16519, 16520}}, ["shinyjanguru"] = {effect = 287, on = 16525, use = 16526, off = 16527, all = {16525, 16526, 16527}}, ["shinypremier"] = {effect = 290, on = 16532, use = 16533, off = 16534, all = {16532, 16533, 16534}}, ["shinytinker"] = {effect = 293, on = 16539, use = 16540, off = 16541, all = {16539, 16540, 16541}}, ["shinymaster"] = {effect = 295, on = 16546, use = 16547, off = 16548, all = {16546, 16547, 16548}}, ["shinysaffari"] = {effect = 296, on = 16553, use = 16554, off = 16555, all = {16553, 16554, 16555}}, item.xml <item id="16472" article="a" name="yume ball" stackable="1"> <attribute key="weight" value="0" /> <attribute key="description" value="Esta é uma pokébola usada para capturar pokémons derrotados. É mais eficaz contra pokémons do tipo PSÍQUICO ou FANTASMA." /> </item> </item> <item id="16473" article="a" name="yumeball"> <attribute key="weight" value="100" /> <attribute key="slotType" value="feet" /> </item> <item id="16474" article="a" name="yumeball being used"> <attribute key="weight" value="100" /> <attribute key="slotType" value="feet" /> </item> <item id="16475" article="a" name="discharged yumeball"> <attribute key="weight" value="100" /> <attribute key="slotType" value="feet" /> </item> <item id="16476" article="a" name="Shining yumeball"> <attribute key="weight" value="100" /> <attribute key="slotType" value="feet" /> </item> <item id="16477" article="a" name="Shining yumeball being used"> <attribute key="weight" value="100" /> <attribute key="slotType" value="feet" /> </item> <item id="16478" article="a" name="Shining discharged yumeball"> <attribute key="weight" value="100" /> <attribute key="slotType" value="feet" /> </item>
-
L3K0T alterou sua foto pessoal
-
DBO Absalon/God Revolution
alguém que tem essa base poderia me passar ?
-
DBO Absalon/God Revolution
Alguém tem disponível? O Link caiu
-
antonio13 começou a seguir Newotserver
-
Newotserver
🚀 NOVO BAIAK SELVA OFICIAL 8.60 (Via Radmin VPN) 🚀 Servidor totalmente editado, focado em jogabilidade rápida, ótimo mapa para War e Hunts! Venha testar e ser o top do servidor! 🛠️ COMO JOGAR (Passo a Passo Rápido): 1.Baixe o programa gratuito Radmin VPN no seu PC. 2. Com o Radmin aberto, clique em "Entrar em Rede" e use os dados: 🔹 Nome da Rede: baiakselvaoficial 🔹 Senha da Rede: 123456 3.Abra o seu OTClient (versão 8.60). No campo de IP, digite: 26.208.215.116 Crie sua conta usando o Account Manager digitando 1/1. ¡Esperamos vocês lá para dominar o servidor! O GOD está ativo testando e ajudando a galera.
-
-
Base PokéTibia Myst Completa + OTC V8 + Database — FULL FUNCIONANDO
Fala pessoal, Estamos com uma base PokéTibia Myst totalmente funcional e pronta para uso. O servidor está estável, organizado e com os sistemas clássicos funcionando corretamente, incluindo Catch, Goback, Duel, Portraits e outros. Incluso: • Arquivos completos do servidor • Client OTC V8 • Database SQL • Scripts, XML, libs e configs Importante: • O source C++ NÃO está incluso • Total liberdade para editar via LUA/XML • Sistema de licença incluso Também podemos entrar em call no Discord para mostrar tudo funcionando ao vivo e tirar dúvidas. Qualquer dúvida, entrem no Discord e abram um ticket: Discord gg/ 6bcSwcq4GW Link da base funcionando: https://youtu.be/_ilroqU_krM
- [OTClient] Sistema de Dialogo Otpokemon
-
DarkRed começou a seguir Bruno Carvalho
-
Galakus-OT
🔥 GALAKUS-OT GLOBAL FULL v15.11 — REINAUGURAÇÃO HISTÓRICA! 🔥 📅 NESTA SEXTA-FEIRA, 22/05 ÀS 19:00H! Procurando um servidor sério, estável e com os sistemas mais modernos da atualidade? O Galakus-OT está de volta totalmente reformulado, com um mapa gigantesco 100% liberado e otimização impecável para você e sua guilda dominarem! 🌐 CONEXÃO & SITE: • Site: www.galakusot.com.br • IP (Host): jogar.galakusot.com.br • Versão: 15.11 (Client Próprio Completo) 🚀 SISTEMAS EXCLUSIVOS & INFRAESTRUTURA: • Client Próprio Otimizado: Desempenho máximo, sem lag e com interface fluida. • Sistema RTC Integrado: Configure seu Auto-Healing e utilitários direto na interface do client, sem complicação. • Exaltation Forge 100%: Sistema completo funcionando perfeitamente com Tiers e Cooldowns para dar upgrade nos seus equips. • Cyclopedia Completa & Mapa Mundi: Navegue pelo mapa liberado com todas as informações na palma da mão. • Sala de Bosses & Trainer Offline: Evolua mesmo quando estiver deslogado e enfrente os bosses mais cobiçados do Tibia. • Store In-Game Completa: Compre suas Blessings, utilitários e consumíveis direto pelo jogo com total praticidade. 🗺️ MAPA & JOGABILIDADE: • Mapa Global Full com hunts otimizadas e de fácil acesso. • Sistema de Estágios (Stages) balanceado para um early game dinâmico e um late game competitivo. • Vocações perfeitamente balanceadas para PvP e PvE. ⚔️ Reúna seu time, prepare sua estratégia e venha fazer história no Galakus-OT! Acesse o site, crie sua conta e esteja pronto para o Host na sexta-feira!
-
iflopes começou a seguir WorldWar OTServ 8.6 - PVP-E 1/1, 2/2
-
WorldWar OTServ 8.6 - PVP-E 1/1, 2/2
WORLDWAR Two teams. One map. No respawn timer. No mercy. ▶ JOGAR AGORA — SEM INSTALAR NADA | Discord | Site O que é WorldWar? Se você jogou OTServ War entre 2006 e 2012, já sabe como era: entrava na LAN house, escolhia seu char, e em 5 minutos já estava no meio de uma guerra. Sem tutorial. Sem grind. Direto no caos. WorldWar é exatamente isso — sem o grind que matou o prazer. Dois times. Mapa fechado construído pra guerra (Thais). Você nasce no level 50, equipado, pronto. Se morrer, volta em 2 segundos com tudo que tinha. Kill vale 50k de gold. Assist vale 20k. Gasta em supplies nos NPCs pelo mapa. Como funciona Time Azul vs Time Vermelho. Sem neutral zone. Login Azul: conta 1 / senha 1 Login Vermelho: conta 2 / senha 2 Escolhe sua vocação — Knight, Paladin, Sorcerer ou Druid — nasce no mapa Thais. Sem friendly fire. Kill Streaks — Anunciados para o servidor inteiro 5 kills — KILLING SPREE 10 kills — RAMPAGE 15 kills — UNSTOPPABLE 20 kills — GODLIKE 25 kills — BEYOND GODLIKE Tiers — Progressão automática dentro da guerra Ao atingir cada level, equipa itens novos automaticamente. Sem NPC, sem gold. Level 60 — Tier I Level 100 — Tier II Level 150 — Tier III Level 200 — Tier IV Level 300 — Tier V Informações técnicas Protocolo: 8.60 IP: worldwar.com.br | Porta: 7171 Client Web: worldwar.com.br/play (sem instalar nada) PvP: Enforced Mapa: Thais (em breve Venore e Edron) Respawn: 2 segundos, inventário completo Kill: 50.000 gold | Assist: 20.000 gold Entra no Discord. A guerra começa quando você logar. discord.gg/fjhJTHtuY worldwar.com.br IP: worldwar.com.br:7171 | Protocolo 8.60 | Client Web | PvP Enforced
-
[OBAIAK 8.6] Abertura Oficial 16/05 ás 20H
Após um longo período de criação e implementação de novas ideias, buscando oque a de mais novo no mercado, ideias para o melhor de todos os nossos jogadores! → Apresentamos a vocês um servidor completamente inovador e completo, repleto de mistérios e novidades. Em nosso servidor, focamos sempre no melhor PVP deixando assim as classes focada em cada seu objetivo original. → Para quem busca um baiak SEMI-HARD você encontrou, mantivemos o Classico 8.6 sem wings, auras, montarias, new outfits, sprites, etc. → Os itens são bem balanceados desde os iniciais, lembrando que os melhores itens são adquiridos dentro do servidor. Aqui também temos uma proteção para o jogador não ficar imortal. → Cliente clássico, sem frescuras mantendo o original 8.6 🔥 *PvP equilibrado* ⚔️ *Vocações balanceadas* 🎡 *Quests incríveis com diversos itens* 🗺️ *Mapa totalmente customizado* 🛠️ *Sistemas exclusivos e inovadores* Avatar System Tier System Addon Bonus Reborn Elemental Guild Level Pescaria Roletas SENDO ASSIM, SEJAM BEM VINDO AO MUNDO OBAIAK! Acesse agora: https://obaiak.com Criação de contas liberadas!
- CDZ BRASIL 2026
-
Aniltac alterou sua foto pessoal
-
[10.99] - BCG OT | Custom Client | Custom MAP | Custom Items | Custom Spells | Custom Quests | Custom Systems | Custom Mysteries | 17 Years in creation - IP/Website: http://barcelog.myvnc.com/
- CDZ BRASIL 2026
VENHA SE DIVERTIR COM O MAIS NOVO SERVIDOR DE CAVALEIROS DOS ZODIACO ACOMPANHE O LANÇAMENTO DO TEST BETA EM NOSSO CANAL DO DISCORD CONVITE = https://discord.gg/7bQtgqR9s8 🔥 PvP equilibrado ⚔️ Vocações balanceadas 🎡 Quests incríveis com diversos itens 🗺️ Mapa totalmente customizado 🛠️ Sistemas exclusivos e inovadores Chame seus amigos e venha participar do nosso beta test do servidor!- TFS 0.3.6 ALGUEM TEM TUTORIAL VIDEO E IMAGENS DE COMO INSTALA E CONFIGURA [Castle War 24H] Conquiste o trono! PODE ME VE O MAPA JA CONFIGURADO POSIÇÃO DO MAPA 2049X1760 7
TFS 0.3.6 ALGUEM TEM TUTORIAL VIDEO E IMAGENS DE COMO INSTALA E CONFIGURA [Castle War 24H] Conquiste o trono! PODE ME VE O MAPA JA CONFIGURADO POSIÇÃO DO MAPA 2049X1760 7 Map Event War Castle . ViitinG.otbm- [Canary] Mapa Global Completo 14x Atualizado
KhaueLks alterou sua foto pessoal- Script de Boost Potion Elemental
Posso montar esse sistema pra você, me chama no privado.- PokeGhost Project
- CDZ BRASIL 2026
Informação Importante
Confirmação de Termo