RA

[PokéTibia / TFS 0.3.6] Pokémon solto na house — limite, falas e persistência

Por raulcdj, 01 de out. de 2026 em Mods, funções e outros

3
406
raulcdjR
01 de outubro de 2026 às 13:46

Pokémon solto na house — tutorial de instalação

Download: https://www.mediafire.com/file/qp6kw9lmhxhcmlw/Pokemon-na-House.zip/file

1. Funcionamento e compatibilidade

O dono coloca uma Ball com Pokémon recolhido e saudável no chão da house e usa para soltar. Outro uso recolhe. Limite inicial: dois por house. O Pokémon é decorativo, anda dentro da house, fala frases da espécie e não combate. A Ball permanece original, com nick, level, boost, shiny, addon, helds e demais atributos.

Faça backup do servidor e source. Extraia o ZIP: localize data e house_pokemon_source.patch. É preciso recompilar o SERVIDOR TFS 0.3.6 / PokexGeneration. O patch acrescenta getHouseDisplayBalls; somente os arquivos Lua não bastam. Outras bases precisam adaptar o patch e os helpers; não foi testado em TFS 1.x/OTX.

2. Aplicar o patch e compilar

Na pasta que contém source, coloque house_pokemon_source.patch e confira:

git apply --check --ignore-space-change house_pokemon_source.patch

Se passar, aplique:

git apply --ignore-space-change house_pokemon_source.patch

Se não aplicar, adapte manualmente os trechos sem substituir arquivos inteiros da sua base. Não aplique duas vezes. O patch altera game.cpp, house.cpp, housetile.cpp, luascript.cpp/h e npc.cpp para impedir mover Balls expostas, restringir o NPC à house, proteger contra dano, liberar marcadores na troca de dono e registrar a leitura das Balls.

Recompile com o projeto da sua base. Use o executável recompilado ao iniciar. Não há comando único para todas as sources.

3. Copiar os três arquivos de data

- data/lib/house_pokemon.lua → data/lib/house_pokemon.lua do servidor

- data/globalevents/scripts/house_pokemon.lua → data/globalevents/scripts/house_pokemon.lua

- data/npc/HousePokemon.xml → data/npc/HousePokemon.xml

Confirme que data/lib carrega nos ambientes de actions e globalevents. Se a base carrega bibliotecas por lista manual, inclua house_pokemon.lua uma vez no bootstrap desses ambientes. Preserve o nome interno HousePokemon: os bloqueios da source usam essa identidade.

4. Integrar o goback

No INÍCIO do onUse que atende às Balls, antes de transformar a Ball ou soltar o Pokémon, acrescente:

if HousePokemon.use(cid, item, frompos) then
return true
end

Use o nome de posição real do seu script: se o parâmetro é fromPosition, substitua frompos por fromPosition. Preserve todo o restante do goback. Se ele foi compartilhado com a Pokébar em PokeBarActions.useBall, coloque o trecho no início dessa rotina compartilhada.

Não crie uma segunda action para as mesmas Balls. Não precisa alterar catch nem recriar atributos.

5. Registrar o globalevent

Dentro de <globalevents> em data/globalevents/globalevents.xml, acrescente uma única entrada:

<globalevent name="HousePokemon" interval="0" event="script" value="house_pokemon.lua"/>

Na revisão alvo, interval=0 roda aproximadamente a cada segundo. Se sua revisão usa outra unidade/agendamento, configure o equivalente a um segundo. O NPC é criado/recolhido no próximo ciclo. Não coloque HousePokemon em spawn fixo: o sistema cria as decorações a partir das Balls.

6. Conferir nomes, aparência e falas

HousePokemon.xml corrigido usa hidename="0" e hidehealth="0". A biblioteca envia o nick da Ball, ou a espécie se o apelido estiver vazio, por doCreatureSetNick. Essa função precisa existir na source. O nome interno continua HousePokemon.

Neste cliente, HP percentual zero impedia desenhar também o nome. Por isso a correção pode mostrar barra de vida junto ao nome; a proteção contra dano continua. Confira a opção de mostrar nomes no cliente.

A aparência usa addon quando positivo; senão, lê o look da espécie em data/monster/monsters.xml e no XML correspondente. O atributo poke deve corresponder ao nome registrado. As falas vêm de <voices>, com mínimo de cinco segundos e cache. Alakazam tem também “Ala alak alakazam!”. Shiny sem falas usa as da espécie normal; espécies sem frases usam seu nome. São falas em texto, não áudio.

7. Ajustar limite e verificar persistência

Em data/lib/house_pokemon.lua, altere limit = 2 para ajustar o limite. Guild halls não são atendidas nesta versão.

A Ball recebe apenas house_display_owner e house_display_key como marcadores. Não são salvos CIDs de NPC ou UIDs de item. O save de houses da sua base precisa preservar atributos personalizados. Depois de restart, o sistema lê as Balls e recria as decorações. Queda antes de salvar pode perder mudanças desde o último save.

Se não houver espaço de spawn na house, mantém o marcador e tenta novamente. O dono pode usar a Ball para cancelar. Na desinstalação, recolha as decorações antes de remover o sistema.

8. Reiniciar e testar

Abra o servidor recompilado. Com o dono da house, coloque uma Ball saudável diretamente no chão e use. Confira nome/aparência/falas. Teste limite de dois, outro jogador tentando usar, movimento da Ball, dano e saída/teleporte do NPC.

Recolha e confira todos os atributos. Salve a house, reinicie e confira restauração sem duplicar. Teste troca de dono em uma cópia da base.

Função getHouseDisplayBalls ausente: confirme patch, registro Lua e executável recompilado. HousePokemon/use nil: confira carregamento da biblioteca. Aparência ausente: confira poke, monsters.xml e addon. Nome ausente: confira XML corrigido, doCreatureSetNick e opção do cliente. Não restaurou: confira save dos marcadores e registre o globalevent. Reinicie após mudar XML de nomes ou falas.

Créditos e validação

Ideia inspirada no pedido de eriveltonpacheco: https://tibiaking.com/topic/93254-pokemon-solto-na-house/ . Compartilhado por Raul/DarkRed, desenvolvido para sua base com auxílio do Codex. Créditos e licença do TFS preservados; conteúdo Pokémon/sprites não são distribuídos.

Compilação, Lua 5.1/XML e testes no motor isolado de criação, trava, dano/teleporte, caminhada, save/restart e recolhimento passaram. Nomes/falas tiveram verificação de código e testes Lua; ainda dependem de conferir no cliente. Houve falhas intermitentes anteriores ao carregar items, sem causa identificada; não há garantia de teste prolongado ou compatibilidade universal.

Editado Outubro 2 por raulcdj

Tutorial reorganizado com instalação por etapas e sem imagens.

raulcdjR
02 de outubro de 2026 às 06:06

https://www.mediafire.com/file/syn6945l07m10ef/Dialogo-OTPokemon-Completo.zip/file o modules

raulcdjR
03 de outubro de 2026 às 05:48

Download: Pokemon-na-House.zip (MediaFire)

Leia as instruções de instalação incluídas no pacote.