📄 server.h
字号:
/* by My Destiny Team */
#ifndef __GAMESERVER_SERVER_H__
#define __GAMESERVER_SERVER_H__
#include <base.h>#include <vector>
#include "sockets.h"
#include "Main.h"#include "client.h"
// Lista dos nomes dos personagens basesextern const char *nameBase[MAX_CHARBASE];#define ACCOUNT 1#define CHARACTER 2struct sAccountList { char name[16]; u16 gsIndex; u16 clientID;};// Def Language#define MAX_LANGUAGE 26#define ACCOUNT_NOTFOUND 0#define MAXCLIENTLIST 1#define IPNOTFOUND 2#define CLIENTCONNECTED 3#define CLIENTDISCONNECTED 4#define LOADEDFILE 5#define ERRORLOADED 6#define INITSERVER 7#define CLOSINGCLIENTTIME 8#define SENDFAILED 9#define BADPACKET 10#define DBNOTCONNECTED 11#define DBCONNECTED 12#define LOADING 13#define ERRORINIT 14#define PASSWORDWRONG 15#define PASS3TIMES 16#define ACCOUNTBANNED 17#define BANNED2LOGIN 18#define ERRORCREATESLOT 19#define ERRORCREATECHAR 20#define ERRORCREATEACC 21#define ERRORCREATEFILE 22#define ERRORDELETESLOT 23#define ERRORDELETECHAR 24#define GENERALERROR 25using namespace std;
class cServer : public cSocket
{
public:
cServer();
~cServer();
// Inicia o servidor // // Retorna false se ocorreu um erro // Retorna true se o servidor foi iniciado
bool Init();
// Le o arquivo de configuração do personagem ou npc void ReadCharacter(const char *file, sCharacter *ptrchar);
// Recebe o primeiro pacote do client
//
// Retorna false se o client nao enviou o hello packet
// Retorna true se o client foi logado com sucesso
virtual bool Login(sSocket &sSock);
// Trata o pacote recebido // // Retorna false se o pacote eh invalido // Retorna true se o pacote eh valido
void ReceivedPacket(sSocket &sSock, pHeader *pServer); // Deleta o socket da lista void DeleteSocket(s32 id);
// Deleta o socket da lista
virtual void DeleteSocket(sSocket &sSock);
// Le o arquivo de idiomas // // Retorna false se ocorreu um erro // Retorna true se leu com sucesso bool ReadLanguage(); // Abre o arquivo da conta ou do personagem // // Retorna NULL se nao foi possivel abrir o arquivo // Retorna o ponteiro do arquivo se abriu com sucesso FILE* OpenFile(char *name, const char *s, u32 x); // Retorna o diretorio completo da conta/personagem const char* GetFileDir(char *name, u32 x); // Adiciona um novo client na lista de conectados void AddAccount(sAccountList *_acc); // Verifica se o client esta na lista sAccountList* ContainsAccount(const char *name); // Procura e deleta o client da lista void DeleteAccount(u16 gsindex, s16 clientid); // Retorna a mensagem const char *GetMessage(u32 id) const; // Server Configuration u32 srvIndex; u16 currUser; char srvList[10][16]; char adminList[10][16];
private:
// Init Functions
bool ReadConfig(); bool ReadServerList(); bool ReadAdminList();
// Functions s32 GetServerIndex(const char *ip); s32 GetAdminIndex(const char *ip); // Server Data u32 accListSize; sAccountList *accList[10][FD_SETSIZE]; char *language[MAX_LANGUAGE];
// Buffer
char buf[1024]; char cmd[16], val[16];
};
// Informacoes do servidor
extern cServer Server;
#endif // __GAMESERVER_SERVER_H__
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -