diff options
| author | fusion32 <marcopuzziello@gmail.com> | 2025-06-30 19:23:09 -0300 |
|---|---|---|
| committer | fusion32 <marcopuzziello@gmail.com> | 2025-06-30 19:23:09 -0300 |
| commit | 6c8aa85b8b578db03a8c5f0dc0b7e80605592d45 (patch) | |
| tree | 6734cf3d3c0e318a139f7d15d9a524c423833e22 /src/writer.hh | |
| parent | c09d30cb144ce421ef0e1a786d2965f9abcde0aa (diff) | |
| download | game-6c8aa85b8b578db03a8c5f0dc0b7e80605592d45.tar.gz game-6c8aa85b8b578db03a8c5f0dc0b7e80605592d45.zip | |
`writer.cc`
Diffstat (limited to 'src/writer.hh')
| -rw-r--r-- | src/writer.hh | 155 |
1 files changed, 155 insertions, 0 deletions
diff --git a/src/writer.hh b/src/writer.hh new file mode 100644 index 0000000..8c87c0f --- /dev/null +++ b/src/writer.hh @@ -0,0 +1,155 @@ +#ifndef TIBIA_WRITER_HH_ +#define TIBIA_WRITER_HH_ 1 + +#include "common.hh" +#include "containers.hh" +#include "operate.hh" + +enum TWriterThreadReplyType: int { + REPLY_BROADCAST = 0, + REPLY_DIRECT = 1, + REPLY_LOGOUT = 2, +}; + +enum TWriterThreadOrderType: int { + ORDER_TERMINATE = 0, + ORDER_LOGOUT = 1, + ORDER_PLAYERLIST = 2, + ORDER_KILLSTATISTICS = 3, + ORDER_PUNISHMENT = 4, + ORDER_CHARACTERDEATH = 5, + ORDER_ADDBUDDY = 6, + ORDER_REMOVEBUDDY = 7, + ORDER_DECREMENTISONLINE = 8, + ORDER_SAVEPLAYERDATA = 9, +}; + +struct TProtocolThreadOrder{ + char ProtocolName[20]; + char Text[256]; +}; + +struct TWriterThreadReply{ + TWriterThreadReplyType ReplyType; + const void *Data; +}; + +struct TBroadcastReplyData{ + char Message[100]; +}; + +struct TDirectReplyData{ + uint32 CharacterID; + char Message[100]; +}; + +struct TWriterThreadOrder{ + TWriterThreadOrderType OrderType; + const void *Data; +}; + +struct TLogoutOrderData{ + uint32 CharacterID; + int Level; + int Profession; + time_t LastLoginTime; + int TutorActivities; + char Residence[30]; +}; + +struct TPlayerlistOrderData{ + int NumberOfPlayers; + const char *PlayerNames; + int *PlayerLevels; + int *PlayerProfessions; +}; + +struct TKillStatisticsOrderData{ + int NumberOfRaces; + const char *RaceNames; + int *KilledPlayers; + int *KilledCreatures; +}; + +struct TPunishmentOrderData{ + uint32 GamemasterID; + char GamemasterName[30]; + char CriminalName[30]; + char CriminalIPAddress[16]; + int Reason; + int Action; + char Comment[200]; + int NumberOfStatements; + vector<TReportedStatement> *ReportedStatements; + uint32 StatementID; + bool IPBanishment; +}; + +struct TCharacterDeathOrderData{ + uint32 CharacterID; + int Level; + uint32 Offender; + char Remark[30]; + bool Unjustified; + time_t Time; +}; + +struct TBuddyOrderData{ + uint32 AccountID; + uint32 Buddy; +}; + +void InitProtocol(void); +void InsertProtocolOrder(const char *ProtocolName, const char *Text); +void GetProtocolOrder(TProtocolThreadOrder *Order); +void WriteProtocol(const char *ProtocolName, const char *Text); +int ProtocolThreadLoop(void *Unused); +void InitLog(const char *ProtocolName); +void Log(const char *ProtocolName, const char *Text, ...) ATTR_PRINTF(2, 3); + +void InitWriterBuffers(void); +int GetOrderBufferSpace(void); +void InsertOrder(TWriterThreadOrderType OrderType, const void *Data); +void GetOrder(TWriterThreadOrder *Order); +void TerminateWriterOrder(void); +void LogoutOrder(TPlayer *Player); +void PlayerlistOrder(int NumberOfPlayers, const char *PlayerNames, + int *PlayerLevels, int *PlayerProfessions); +void KillStatisticsOrder(int NumberOfRaces, const char *RaceNames, + int *KilledPlayers, int *KilledCreatures); +void PunishmentOrder(TCreature *Gamemaster, const char *Name, const char *IPAddress, + int Reason, int Action, const char *Comment, int NumberOfStatements, + vector<TReportedStatement> *ReportedStatements, uint32 StatementID, + bool IPBanishment); +void CharacterDeathOrder(TCreature *Creature, int OldLevel, + uint32 OffenderID, const char *Remark, bool Unjustified); +void AddBuddyOrder(TCreature *Creature, uint32 BuddyID); +void RemoveBuddyOrder(TCreature *Creature, uint32 BuddyID); +void DecrementIsOnlineOrder(uint32 CharacterID); +void SavePlayerDataOrder(void); +void ProcessLogoutOrder(TLogoutOrderData *Data); +void ProcessPlayerlistOrder(TPlayerlistOrderData *Data); +void ProcessKillStatisticsOrder(TKillStatisticsOrderData *Data); +void ProcessPunishmentOrder(TPunishmentOrderData *Data); +void ProcessCharacterDeathOrder(TCharacterDeathOrderData *Data); +void ProcessAddBuddyOrder(TBuddyOrderData *Data); +void ProcessRemoveBuddyOrder(TBuddyOrderData *Data); +void ProcessDecrementIsOnlineOrder(uint32 CharacterID); +int WriterThreadLoop(void *Unused); + +void InsertReply(TWriterThreadReplyType ReplyType, const void *Data); +void BroadcastReply(const char *Text, ...) ATTR_PRINTF(1, 2); +void DirectReply(uint32 CharacterID, const char *Text, ...) ATTR_PRINTF(2, 3); +void LogoutReply(const char *PlayerName); +bool GetReply(TWriterThreadReply *Reply); +void ProcessBroadcastReply(TBroadcastReplyData *Data); +void ProcessDirectReply(TDirectReplyData *Data); +void ProcessLogoutReply(const char *Name); +void ProcessWriterThreadReplies(void); + +void ClearPlayers(void); +void InitWriter(void); +void AbortWriter(void); +void ExitWriter(void); + +#endif //TIBIA_WRITER_HH_ |
