Este é um post popular. Gengo 199 Postado Outubro 28, 2018 Este é um post popular. Share Postado Outubro 28, 2018 (editado) Eai galera do xtibia, hoje venho por meio desse post trazer para vocês uma pokebar, sei que já existe porém este é um pouco diferente do que costumamos ver. Antes de tudo faça o download do arquivo e vamos a configuração. OBS: Seu otClient precisa ter opcodes para poder funcionar. 1) Coloque o module na pasta do seu otClient em /modules. 2) No arquivo do seu servidor em data/lib/106-mainfunctions.lua coloque o seguinte trecho de código: Spoiler function sendPokeOTC(cid) local pokemon = {} for indice, value in pairs(getPlayerPokeballs(cid)) do local Name = getPokeballName(value.uid) table.insert(pokemon, "{".. "portrait = '"..getPortraitClientID.."',".. "name = '"..Name.."',".. "health = '"..getBallHealth(cid, value).."',".. "maxHealth = '"..getBallMaxHealth(cid,value).."',".. "},") end return doSendPlayerExtendedOpcode(cid, 122, table.concat(pokemon)) end 3) Ainda no mesmo arquivo 106-mainfunctions.lua procure pela função doOTCSendPokemonHealth e substitua ela pelo trecho a seguir: Spoiler function doOTCSendPokemonHealth(cid) local ball = getPlayerSlotItem(cid, CONST_SLOT_FEET) local pokemon = getCreatureSummons(cid) if not ball.uid or ball.uid <= 1 then return doSendPlayerExtendedOpcode(cid, opcodes.OPCODE_POKEMON_HEALTH, "0|0") end if #pokemon >= 1 then return doSendPlayerExtendedOpcode(cid, opcodes.OPCODE_POKEMON_HEALTH, getCreatureHealth(pokemon[1]).."|"..getCreatureMaxHealth(pokemon[1]).."|".. getItemAttribute(ball.uid, "identificador")) end return doSendPlayerExtendedOpcode(cid, opcodes.OPCODE_POKEMON_HEALTH, getBallHealth(cid, ball).."|"..getBallMaxHealth(cid, ball).."|"..getItemAttribute(ball.uid, "identificador")) end 4) Caso seu servidor não tenha a função table.serialize, adicione ela no arquivo do servidor em data/lib/012-table.lua: Spoiler table.serialize = function(x, recur) -- REMOVIDO DEVIDO HA ERROS NÃO SE PREOCUPE, SEGUE O TUTORIAL POIS JÁ FOI ALTERADO PARA FUNCIONAR SEM ESSA FUNÇÃO --- end 5) No arquivo do seu servidor data/creaturescripts/script/login.lua coloque o seguinte trecho no final do onLogin antes do return sendPokeOTC(cid) 6) Abrindo o arquivo do npc Nurse Joy em especifico o script.lua, procure o trecho de codigo: doSendPlayerExtendedOpcode(cid, opcodes.OPCODE_POKEMON_HEALTH, healthMax.."|"..healthMax) Substitui por esse: doSendPlayerExtendedOpcode(cid, opcodes.OPCODE_POKEMON_HEALTH, healthMax.."|"..healthMax.."|"..getItemAttribute(mypb.uid, "identificador")) E no finalzinho da função do mesmo arquivo lua, antes do end, coloque o seguinte codigo: for indice, value in pairs(getPlayerPokeballs(cid)) do doSendPlayerExtendedOpcode(cid, opcodes.OPCODE_POKEMON_HEALTH, getBallMaxHealth(cid, value).."|"..getBallMaxHealth(cid, value).."|"..getItemAttribute(value.uid, "identificador")) end 7) E por ultimo no arquivo opcodes.lua localizado na pasta data/creaturescript/script/opcodes.lua procure por: if buffer == "refresh" then doOTCSendPokemonHealth(cid) end E substitui por: if buffer == "refresh" then for indice, value in pairs(getPlayerPokeballs(cid)) do doSendPlayerExtendedOpcode(cid, opcodes.OPCODE_POKEMON_HEALTH, getBallHealth(cid, value).."|"..getBallMaxHealth(cid, value).."|"..getItemAttribute(value.uid, "identificador")) end end Bom é basicamente isso, a unica coisa que estará faltando e que vou deixar para vocês fazerem é quando o player colocar ou retirar outro pokemon na bag fazer com que o servidor chame a função sendPokeOTC(cid), não estarei ensinando essa parte pq o meu é bem diferente e não adiantaria eu mostrar como se faz, mas também não é um bixo de 7 cabeças fazer essa parte. Fazendo esse tutorial certinho e tudo mais, ficará assim no game: Espero que gostem e que entendam, desculpe-me por qualquer coisa não sou muito de explicar e ficar escrevendo tutorial. Download do arquivo: https://www.mediafire.com/file/p8wch1fogveh48e/game_poke.rar/file Scan do arquivo: https://www.virustotal.com/#/file/d88b33ad27520ddd28afdaeb7d17af26805fa3bf39400f1a30813a0da3ca1695/detection Editado Agosto 8, 2019 por Gengo Crypter, BlazerX, Drenks e 22 outros reagiu a isso 20 5 Link para o comentário Compartilhar em outros sites More sharing options...
Benny 735 Postado Outubro 28, 2018 Share Postado Outubro 28, 2018 Obrigado pelo conteúdo, Luis! Comunidade agradece ? Link para o comentário Compartilhar em outros sites More sharing options...
DarkWore 112 Postado Outubro 28, 2018 Share Postado Outubro 28, 2018 Excelente Conteúdo, Reputado. Link para o comentário Compartilhar em outros sites More sharing options...
Ayron5 40 Postado Outubro 28, 2018 Share Postado Outubro 28, 2018 Nice! Reputado. Link para o comentário Compartilhar em outros sites More sharing options...
redeindependent 1 Postado Novembro 10, 2018 Share Postado Novembro 10, 2018 Eu estou tentando colocar este recurso de barra de vida no meu ot mas não estou conseguindo achar algumas linhas do script, pode me dar uma ajuda? Link para o comentário Compartilhar em outros sites More sharing options...
Gengo 199 Postado Novembro 10, 2018 Autor Share Postado Novembro 10, 2018 8 horas atrás, redeindependent disse: Eu estou tentando colocar este recurso de barra de vida no meu ot mas não estou conseguindo achar algumas linhas do script, pode me dar uma ajuda? Posso ajudar sim, especifique o que você precisa. Link para o comentário Compartilhar em outros sites More sharing options...
redeindependent 1 Postado Novembro 11, 2018 Share Postado Novembro 11, 2018 Eu uso o OT DXP do Huatson, não consegui por para funcionar, da um montao de erro e a bar de skills some. Link para o comentário Compartilhar em outros sites More sharing options...
redeindependent 1 Postado Novembro 12, 2018 Share Postado Novembro 12, 2018 ou será que isso só funciona no PDA? Link para o comentário Compartilhar em outros sites More sharing options...
Gengo 199 Postado Novembro 13, 2018 Autor Share Postado Novembro 13, 2018 11 horas atrás, redeindependent disse: ou será que isso só funciona no PDA? Funciona normal para ambos, você deve ter configurado algo errado, se vc não fala qual erro específico está ocorrendo, não tem como ajudar, seja mais claro na hora de mencionar os erros. Link para o comentário Compartilhar em outros sites More sharing options...
redeindependent 1 Postado Novembro 13, 2018 Share Postado Novembro 13, 2018 ok amigo vou fazer novamente e te relatar o erro. Link para o comentário Compartilhar em outros sites More sharing options...
redeindependent 1 Postado Novembro 25, 2018 Share Postado Novembro 25, 2018 aparece esse erro ae Link para o comentário Compartilhar em outros sites More sharing options...
Gengo 199 Postado Novembro 25, 2018 Autor Share Postado Novembro 25, 2018 1 hora atrás, redeindependent disse: aparece esse erro ae Esso erro acontece pois creio que o numero que uso para registrar o Opcodes, no seu servidor pode já estar em uso. Link para o comentário Compartilhar em outros sites More sharing options...
redeindependent 1 Postado Novembro 25, 2018 Share Postado Novembro 25, 2018 então o que deve-se fazer? Link para o comentário Compartilhar em outros sites More sharing options...
Gengo 199 Postado Novembro 25, 2018 Autor Share Postado Novembro 25, 2018 15 minutos atrás, redeindependent disse: então o que deve-se fazer? Na parte do modulo onde registra: ProtocolGame.registerExtendedOpcode(122, ... O 122 possivelmente está em uso no seu otClient, troque-o por um que não esteja em uso. Dai você se pergunta também como saber qual não está em uso, simples coloque um numero que não de erro deste tipo, lembrando que o opcode vai do 0 ao 255. OBS: Trocar o numero 122 do servidor também. E mais, veja se o registro do Opcodes do HealthChange também não esteja em uso. Verificado tudo isso, deverá funcionar normal, se erros surgirem dai não é erro com o module em que criei e sim má configuração sua. Link para o comentário Compartilhar em outros sites More sharing options...
redeindependent 1 Postado Novembro 25, 2018 Share Postado Novembro 25, 2018 eu acabei de perceber isso. ProtocolGame.registerExtendedOpcode(104, function(protocol, opcode, buffer) onPokeHealthChange(buffer) end) ProtocolGame.registerExtendedOpcode(104, function(protocol, opcode, buffer) onPokeHealthChange(protocol, opcode, buffer) end) Um é do seu mod o outro é do cliente da pokebar e char life Eu até consegui, porém ta aquele bug quando muda o poke nao altera nada. dai pra frente será osso Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados