Ir para conteúdo
Propaganda

Posts Recomendados

Então para vocês que querem entender um pouco a mais sobre TFS SOURCE

game.cpp / game.h → Controla as regras do jogo (spawn de criaturas, salvamento, eventos).
player.cpp / player.h → Tudo relacionado ao jogador (stats, level, ações).
creature.cpp / creature.h → Classe base para players e monstros.
combat.cpp / combat.h → Sistema de dano, magias e efeitos de batalha.
configmanager.cpp / configmanager.h → Carrega o config.lua.
protocolgame.cpp / protocolgame.h → Comunicação entre o cliente e o servidor (envio de pacotes).
iomap.cpp / iomap.h → Carregamento do mapa do jogo.
iologindata.cpp / iologindata.h → Gerenciamento de contas e senhas.
luascript.cpp / luascript.h → Sistema que integra Lua ao C++.

Vale lembrar que tudo que esta no CPP tem que registrar a informação em .H

  • Like 10
  • Thanks 4
Link para o comentário
https://tibiadevs.com/forums/topic/920-entenda-o-basico-de-source/
Compartilhar em outros sites

  • 4 meses depois...

1. Ponto de partida

  • main.cpp
    É a porta de entrada do programa. Pense nele como o vigia da portaria: quando você “liga” o servidor, é ele quem carrega as configurações iniciais, inicializa bancos de dados, redes e tudo mais, e só então passa o controle para o cérebro central do jogo.


2. Carregando configurações e banco de dados

  • ConfigManager
    Responsável por ler o arquivo config.lua (e outros arquivos de configuração). É como o gerente que consulta a lista de “tudo o que precisa ser ajustado”: ip, portas, limites de jogadores, nomes de tabelas no banco etc.

  • Database / DatabaseMySql
    Conecta, consulta e grava informações no banco de dados (usuários, personagens, histórico). Imagine um atendente de banco que recebe cheques (queries), busca seu dinheiro (dados) e devolve ao jogo.


3. Camada de rede

  • NetworkMessage, InputMessage, OutputMessage
    Gerenciam o trânsito de bytes entre cliente e servidor. Pense neles como carteiros: empacotam (OutputMessage) as cartas (dados) para enviar, e desempacotam (InputMessage) as que chegam.

  • ProtocolLogin
    Lida com a “porta de entrada” dos jogadores: autenticação de usuário/senha, versão do cliente. É como o recepcionista do clube que confere sua carteirinha antes de você entrar.

  • ProtocolGame
    Depois de entrar, todo o bate‑papo em jogo, movimentos, ataques, pegas de item, tudo passa por aqui. É o maître que coordena cada ação do cliente para dentro do salão do jogo.

  • RSA / Cryptography
    Responsável por criptografia dos pacotes sensíveis (senhas, chaves). Funciona como uma caixa‑forte que garante que só o servidor leia certos dados.


4. “Cérebro” do jogo

  • Game
    Classe central que mantém o “loop” do servidor: dispara eventos periódicos, processa ações em fila, verifica timers. É o maestro de uma orquestra, garantindo que todo componente execute sua parte no tempo certo.

  • Scheduler
    Agenda tarefas para acontecerem “amanhã” ou daqui a X segundos, como regenerar vida, status ou executar scripts em momentos específicos. Seria o calendário/agenda do servidor.


5. Mundo e posicionamento

  • Map
    Armazena a planta baixa do mundo: quais tiles existem e quais itens e criaturas estão em cada um. É o “planta da cidade” na prancheta.

  • Tile
    Representa um quadrado do mapa. Sabe o que está em cima (itens, chão) e quem está nele (criaturas). Imagine um quadrado de terreno que pode ter um carro, uma árvore e uma pessoa.

  • Position
    Guarda as coordenadas (x, y, z). É como um endereço: rua (x), número (y) e andar (z).


6. Tudo que está no mapa

  • Thing (classe‐pai)
    Abstração de “coisa” genérica no mundo: pode ser um Item, uma Creature, um Effect. Como dizer “objeto” antes de especificar se é uma mesa ou uma cadeira.

  • Item / ItemType
    Tudo que você pega ou usa: espada, poção, livro. ItemType descreve as propriedades (peso, valor, se empilha).

  • StaticText / Text
    Mensagens fixas no mapa (placas, diálogos automáticos).


7. Seres vivos

  • Creature (classe‐pai de tudo que anda)
    Toda “criatura” (jogador, monstro, NPC) herda desta classe. Guarda vida, mana, condições (paralisado, envenenado).

  • Player
    Extensão de Creature para quem controla o personagem: inventário, conta, skills, vocação. É você no jogo.

  • Monster
    Extensão de Creature para inimigos automáticos. Tem IA simples, spawn configurado em mapas.

  • Npc
    “Monstro” amigável que conversa. Pode executar scripts Lua quando você fala com ele, dando quests ou vendendo itens.


8. Combate e magia

  • Combat
    Calcula danos de ataques físicos: verifica força, defesa, distância, elementos. Como um árbitro que aplica regras de pancadaria.

  • Spells / Magic
    Trata de magias: fogo, cura, buffs. Cada feitiço é configurado e executado por aqui, descontando mana e aplicando efeitos.


9. Comunicação

  • Chat, ChatChannel, ChatManager
    Gerenciam canais de conversa (“gíria”, “grupos”, “público”), quem ouve o quê. Funciona como um sistema de rádio onde cada canal é uma frequência.


10. Scripting e eventos

  • ScriptManager / LuaScriptInterface
    Carregam e executam scripts Lua que definem comportamentos dinâmicos: quests, diálogos de NPC, triggers de mapa. É o “laboratório de cenários” do servidor, permitindo alterar lógica sem recompilar C++.


11. Tarefas agendadas

  • TaskSystem
    Uma camada extra sobre o Scheduler para criar missões diárias, eventos de mundo (festas, invasões). Pensa nelas como lembretes automáticos que disparam rewards.


12. Gestão de casas e cidades

  • HouseManager / House
    Controlam construção e propriedade de casas no jogo: quem pode entrar, mobília, taxas de aluguel.

  • Town / Towns
    Guardam dados de vilas e cidades: posições de templo, preço de transporte, nomes.


13. Perfis e vocações

  • Vocation / VocationManager
    Define “classes” de personagens (guerreiro, mago, paladino), habilidades iniciais, gains de skill. É como o RH que define cargos e benefícios de cada funcionário.


14. Spawn de monstros e itens

  • Spawns
    Lê arquivos de configuração para gerar monstros e itens automaticamente em mapas, em intervalos definidos.


15. Registro de eventos

  • Log / Logger
    Grava tudo que acontece (logins, erros, mensagens de debug) em arquivos de texto. É a “ata de reuniões” do servidor.


Como usar este guia

  1. Comece pelo “Game”: entenda como o loop principal chama cada componente.

  2. Veja o “Map” e “Tile”: visualize como o mundo é montado.

  3. Estude “Creature” → “Player” e “Monster”: é aí que a maioria das regras de jogo acontece.

  4. Explore “ProtocolGame”: descubra como as ações do jogador viram dados no servidor.

  5. Abra os scripts Lua: aqui você verá como quests e diálogos são criados sem tocar em C++.

Cada classe tem centenas de linhas, mas todas se encaixam nesses blocos de função. Ao entender o papel de cada “setor” (rede, mundo, criaturas, combate, scripts), você ficará confortável para navegar na SOURCE do TFS 1.x e até modificar o que precisar. Bom estudo!

This is the hidden content, please

  • Like 7
  • Thanks 1
Link para o comentário
https://tibiadevs.com/forums/topic/920-entenda-o-basico-de-source/#findComment-6103
Compartilhar em outros sites

Em 26/02/2025 em 16:56, riakisuk disse:

Então para vocês que querem entender um pouco a mais sobre TFS SOURCE

game.cpp / game.h → Controla as regras do jogo (spawn de criaturas, salvamento, eventos).
player.cpp / player.h → Tudo relacionado ao jogador (stats, level, ações).
creature.cpp / creature.h → Classe base para players e monstros.
combat.cpp / combat.h → Sistema de dano, magias e efeitos de batalha.
configmanager.cpp / configmanager.h → Carrega o config.lua.
protocolgame.cpp / protocolgame.h → Comunicação entre o cliente e o servidor (envio de pacotes).
iomap.cpp / iomap.h → Carregamento do mapa do jogo.
iologindata.cpp / iologindata.h → Gerenciamento de contas e senhas.
luascript.cpp / luascript.h → Sistema que integra Lua ao C++.

Vale lembrar que tudo que esta no CPP tem que registrar a informação em .H

No protocolgame.cpp, o sistema de ícones (icon system) é entregue por meio de algum pacote específico? Se sim, qual é esse pacote e como ele se integra ao código?"

Link para o comentário
https://tibiadevs.com/forums/topic/920-entenda-o-basico-de-source/#findComment-6104
Compartilhar em outros sites

Em 16/07/2025 em 01:23, Zeon disse:

No protocolgame.cpp, o sistema de ícones (icon system) é entregue por meio de algum pacote específico? Se sim, qual é esse pacote e como ele se integra ao código?"

tem que ver a tratativa da sua base como esta chamando, procura a chamativa que esta ali exemplo "getPlayersByName" procure a onde é tratada essa chamada na sua src e vai puxando até verifica corretamente o sistema 

Link para o comentário
https://tibiadevs.com/forums/topic/920-entenda-o-basico-de-source/#findComment-6140
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
  • Criar Novo...