[OtClient] Pokemon Health Info

Gengo
Por Gengo
em Clients

Gengo

avatar
Cavaleiro
Cavaleiro

INFOS

Grupo: CavaleiroRegistrado: 10/03/13Posts: 177Gênero: MasculinoChar no Tibia: stor akia

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:

pokehealth.png.e71d4cbeba3935c8d172a8f75c0743ff.png

 

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

 

Benny

nvr gv p
avatar
Infante
Infante

INFOS

Grupo: InfanteRegistrado: 22/12/12Posts: 1958Gênero: MasculinoChar no Tibia: Marley

Obrigado pelo conteúdo, Luis!

Comunidade agradece ? 

?

 

DarkWore

Ex - Moderador
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 23/05/17Posts: 584Gênero: MasculinoChar no Tibia: Não Tenho

Excelente Conteúdo, Reputado.

uHtXRtd.png.3908e825830f508573fee9a45063e737.png

 

Não dou suporte via PM, em caso de duvidas abra um tópico na seção correta e aguarde ser respondido.

Ayron5

avatar
Barão
Barão

INFOS

Grupo: BarãoRegistrado: 26/08/15Posts: 239

Nice! Reputado. 

                                                                  

                                                                    Meus tópicos         

                                                                   Se ajudei você deixe seu Rep! para fortalecer a amizade ^^

                                                                                        Vamos ajudar o fórum a crescer mais.

                                                                

                                                                                             ----- NPC que vende informação -----

                                                                                          -----Baú Que dá Outfit se tiver Level -----

                                                                    

redeindependent

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 02/07/18Posts: 33

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?

Gengo

avatar
Cavaleiro
Cavaleiro

INFOS

Grupo: CavaleiroRegistrado: 10/03/13Posts: 177Gênero: MasculinoChar no Tibia: stor akia
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.

redeindependent

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 02/07/18Posts: 33

Eu uso o OT DXP do Huatson, não consegui por para funcionar, da um montao de erro e a bar de skills some.

redeindependent

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 02/07/18Posts: 33

ou será que isso só funciona no PDA?

Gengo

avatar
Cavaleiro
Cavaleiro

INFOS

Grupo: CavaleiroRegistrado: 10/03/13Posts: 177Gênero: MasculinoChar no Tibia: stor akia
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.

redeindependent

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 02/07/18Posts: 33

ok amigo vou fazer novamente e te relatar o erro.

redeindependent

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 02/07/18Posts: 33

image.thumb.png.da4fe4180b11eb1b2e8391aca63a7b79.pngaparece esse erro ae

Gengo

avatar
Cavaleiro
Cavaleiro

INFOS

Grupo: CavaleiroRegistrado: 10/03/13Posts: 177Gênero: MasculinoChar no Tibia: stor akia
1 hora atrás, redeindependent disse:

image.thumb.png.da4fe4180b11eb1b2e8391aca63a7b79.pngaparece 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.

redeindependent

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 02/07/18Posts: 33

então o que deve-se fazer?

Gengo

avatar
Cavaleiro
Cavaleiro

INFOS

Grupo: CavaleiroRegistrado: 10/03/13Posts: 177Gênero: MasculinoChar no Tibia: stor akia
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.

redeindependent

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 02/07/18Posts: 33

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