//Pacote de Login (SelChar) public static DBResult Exec_MSG_DBAccountLogin(DBController gs, pServer GameServer) { STRUCT_ACCOUNTFILE CurrentAccount = new STRUCT_ACCOUNTFILE(); MAccountLoginPacket sm = W2Marshal.GetStructure <MAccountLoginPacket>(GameServer.RecvPacket.RawBuffer); if (!gs.ReadAccount(sm.Login.Name, out CurrentAccount)) { W2Log.Write(String.Format("fail to read account file {0}", sm.Login.Name), ELogType.GAME_EVENT); return(DBResult.NO_ERROR); } if (String.Compare(sm.Login.Pass, CurrentAccount.Info.AccountPass) != 0) { W2Log.Write(String.Format("Senha incorreta {0}/{1}", sm.Login.Pass, CurrentAccount.Info.AccountPass), ELogType.GAME_EVENT); gs.Server.SendSignal(sm.Header.ClientId, BaseDef._MSG_DBAccountLoginFail_Pass); return(DBResult.NO_ERROR); } MLoginSuccessfulPacket answer = W2Marshal.CreatePacket <MLoginSuccessfulPacket>(BaseDef._MLoginSuccessfulPacket, sm.Header.ClientId); int Idx = gs.GetIndex(sm.Header.ClientId); int IdxName = gs.GetIndex(sm.Login.Name); answer.AccName = CurrentAccount.Info.AccountName; answer.Cargo = CurrentAccount.Cargo; answer.CargoCoin = CurrentAccount.Coin; for (int i = 0; i < GameBasics.MAXL_ACC_MOB; i++) { unsafe { answer.SelChar.Coin[i] = CurrentAccount.Mob[i].Coin; for (int x = 0; x < GameBasics.MAXL_EQUIP; x++) { if (x == 0) { int Face = answer.SelChar.Equip[i].Items[x].Index; if (Face == 22 || Face == 23 || Face == 24 || Face == 25 || Face == 32) { Face = CurrentAccount.MobExtra[i].ClassMaster == 0 ? 21 : (ushort)CurrentAccount.MobExtra[i].MortalFace + 7; } answer.SelChar.Equip[i].Items[x].Index = (short)Face; answer.SelChar.Equip[i].Items[x].Effects[0].Code = 43; answer.SelChar.Equip[i].Items[x].Effects[0].Value = 0; answer.SelChar.Equip[i].Items[x].Effects[1].Code = 86; answer.SelChar.Equip[i].Items[x].Effects[1].Value = Functions.GetClassType(CurrentAccount.Mob[i]); answer.SelChar.Equip[i].Items[x].Effects[2].Code = 28; answer.SelChar.Equip[i].Items[x].Effects[2].Value = (byte)CurrentAccount.MobExtra[i].Citizen; } answer.SelChar.Equip[i].Items[x] = CurrentAccount.Mob[i].Equip.Items[x]; } answer.SelChar.Exp[i] = (int)CurrentAccount.Mob[i].Exp; answer.SelChar.Guild[i] = CurrentAccount.Mob[i].Guild; answer.SelChar.Name[i].Value = CurrentAccount.Mob[i].Name; answer.SelChar.Score[i] = CurrentAccount.Mob[i].BaseScore; answer.SelChar.SPosX[i] = CurrentAccount.Mob[i].SPX; answer.SelChar.SPosY[i] = CurrentAccount.Mob[i].SPY; } } if (IdxName == Idx) { // W2Log.Write(String.Format("IdxName {0} / Idx {1}", IdxName, Idx), ELogType.GAME_EVENT); gs.Server.SendSignal(sm.Header.ClientId, BaseDef._MSG_DBStillPlaying); return(DBResult.NO_ERROR); } if (IdxName != 0) { W2Log.Write(String.Format("err, desconectado. conexão anterior finalizada. {0} ", sm.Login.Name), ELogType.GAME_EVENT); if (sm.DBNeedSave == 0) { gs.Server.SendSignal(sm.Header.ClientId, BaseDef._MSG_DBAlreadyPlaying); return(DBResult.NO_ERROR); } gs.Server.SendSignal(sm.Header.ClientId, BaseDef._MSG_DBStillPlaying); return(DBResult.NO_ERROR); } if (!gs.AddAccountList(Idx)) { W2Log.Write(String.Format("err, failue add accountlist. {0} ", sm.Login.Name), ELogType.GAME_EVENT); gs.Server.SendSignal(sm.Header.ClientId, BaseDef._MSG_DBStillPlaying); return(DBResult.NO_ERROR); } gs.AccountList[Idx].Account = CurrentAccount; gs.AccountList[Idx].Index = (short)sm.Header.ClientId; gs.AccountList[Idx].State = EServerStatus.SEL_CHAR; gs.Server.SendPacket(answer); return(DBResult.NO_ERROR); }
//Process CreateChar (SelChar) public static DBResult Exec_MSG_DBCreateCharacter(DBController gs, pServer GameServer) { STMSG_CreateCharacter sm = W2Marshal.GetStructure <STMSG_CreateCharacter>(GameServer.RecvPacket.RawBuffer); int Slot = sm.Slot; int cls = sm.MobClass; bool ret = false; int Idx = gs.GetIndex(sm.Header.ClientId); if (Slot < 0 || Slot >= 4) { W2Log.Write(string.Format("err,newchar slot out of range - {0}", gs.AccountList[Idx].Account.Info.AccountName), ELogType.GAME_EVENT); gs.Server.SendSignal(sm.Header.ClientId, BaseDef._MSG_DBNewCharacterFail); return(DBResult.NO_ERROR); } if (cls < 0 || cls >= 4) { W2Log.Write(string.Format("err,newchar class out of range - {0}", gs.AccountList[Idx].Account.Info.AccountName), ELogType.GAME_EVENT); gs.Server.SendSignal(sm.Header.ClientId, BaseDef._MSG_DBNewCharacterFail); return(DBResult.NO_ERROR); } string[] BadNames = { "KING", "KINGDOM", "GRITAR", "RELO" }; for (int i = 0; i < BadNames.Length; i++) { if (!sm.PlayerName.Contains(BadNames[i])) { continue; } gs.Server.SendSignal(sm.Header.ClientId, BaseDef._MSG_DBNewCharacterFail); return(DBResult.NO_ERROR); } STRUCT_MOB mob = gs.AccountList[Idx].Account.Mob[Slot]; if (!String.IsNullOrEmpty(mob.Name)) { gs.Server.SendSignal(sm.Header.ClientId, BaseDef._MSG_DBNewCharacterFail); W2Log.Write(string.Format("err,newchar already charged - {0}", gs.AccountList[Idx].Account.Info.AccountName), ELogType.GAME_EVENT); return(DBResult.NO_ERROR); } ret = gs.CreateChar(sm.PlayerName, gs.AccountList[Idx].Account.Info.AccountName); if (ret == false) { gs.Server.SendSignal(sm.Header.ClientId, BaseDef._MSG_DBNewCharacterFail); return(DBResult.NO_ERROR); } gs.AccountList[Idx].Account.Mob[Slot] = STRUCT_MOB.ClearProperty(); gs.AccountList[Idx].Account.MobExtra[Slot] = new STRUCT_MOBEXTRA(); gs.AccountList[Idx].Account.Skillbar[Slot] = STRUCT_SKILLBAR.Clear(); gs.AccountList[Idx].Account.MobExtra[Slot].ClassMaster = (short)ClassType.Mortal; gs.AccountList[Idx].Account.Mob[Slot] = gs.BaseMob[cls]; gs.AccountList[Idx].Account.MobExtra[Slot].MortalFace = gs.AccountList[Idx].Account.Mob[Slot].Equip.Items[0].Index; gs.AccountList[Idx].Account.Mob[Slot].Name = sm.PlayerName; gs.AccountList[Idx].Account.Mob[Slot].CurrentScore = gs.AccountList[Idx].Account.Mob[Slot].BaseScore; ret = gs.SaveAccount(sm.Header.ClientId); if (ret == false) { W2Log.Write(string.Format("err,newchar fail - create file - {0}", sm.PlayerName), ELogType.GAME_EVENT); gs.Server.SendSignal(sm.Header.ClientId, BaseDef._MSG_DBNewCharacterFail); return(DBResult.NO_ERROR); } W2Log.Write(string.Format("create character [{0}]", sm.PlayerName), ELogType.GAME_EVENT); MSG_CNFNewCharacter answer = W2Marshal.CreatePacket <MSG_CNFNewCharacter>(BaseDef._MSG_DBCNFNewCharacter, sm.Header.ClientId); answer.Slot = Slot; for (int i = 0; i < GameBasics.MAXL_ACC_MOB; i++) { unsafe { answer.SelChar.Coin[i] = gs.AccountList[Idx].Account.Mob[i].Coin; for (int x = 0; x < GameBasics.MAXL_EQUIP; x++) { if (x == 0) { int Face = answer.SelChar.Equip[i].Items[x].Index; if (Face == 22 || Face == 23 || Face == 24 || Face == 25 || Face == 32) { Face = gs.AccountList[Idx].Account.MobExtra[i].ClassMaster == 0 ? 21 : (ushort)gs.AccountList[Idx].Account.MobExtra[i].MortalFace + 7; } answer.SelChar.Equip[i].Items[x].Index = (short)Face; answer.SelChar.Equip[i].Items[x].Effects[0].Code = 43; answer.SelChar.Equip[i].Items[x].Effects[0].Value = 0; answer.SelChar.Equip[i].Items[x].Effects[1].Code = 86; answer.SelChar.Equip[i].Items[x].Effects[1].Value = Functions.GetClassType(gs.AccountList[Idx].Account.Mob[i]); answer.SelChar.Equip[i].Items[x].Effects[2].Code = 28; answer.SelChar.Equip[i].Items[x].Effects[2].Value = (byte)gs.AccountList[Idx].Account.MobExtra[i].Citizen; } answer.SelChar.Equip[i].Items[x] = gs.AccountList[Idx].Account.Mob[i].Equip.Items[x]; } answer.SelChar.Exp[i] = (int)gs.AccountList[Idx].Account.Mob[i].Exp; answer.SelChar.Guild[i] = gs.AccountList[Idx].Account.Mob[i].Guild; answer.SelChar.Name[i].Value = gs.AccountList[Idx].Account.Mob[i].Name; answer.SelChar.Score[i] = gs.AccountList[Idx].Account.Mob[i].BaseScore; answer.SelChar.SPosX[i] = gs.AccountList[Idx].Account.Mob[i].SPX; answer.SelChar.SPosY[i] = gs.AccountList[Idx].Account.Mob[i].SPY; } } gs.Server.SendPacket(answer); return(DBResult.NO_ERROR); }
//Process DeletChar (SelChar) public static DBResult Exec_MSG_DBCNFDeleteCharacter(DBController gs, pServer GameServer) { STMSG_DeleteCharacter sm = W2Marshal.GetStructure <STMSG_DeleteCharacter>(GameServer.RecvPacket.RawBuffer); int Slot = sm.Slot; bool ret = false; int Idx = gs.GetIndex(sm.Header.ClientId); if (Slot < 0 || Slot >= 4) { W2Log.Write(string.Format("err,deletchar slot out of range - {0}", gs.AccountList[Idx].Account.Info.AccountName), ELogType.GAME_EVENT); gs.Server.SendSignal(sm.Header.ClientId, BaseDef._MSG_DBDeleteCharacterFail); return(DBResult.NO_ERROR); } STRUCT_MOB mob = gs.AccountList[Idx].Account.Mob[Slot]; if (String.IsNullOrEmpty(mob.Name)) { gs.Server.SendSignal(sm.Header.ClientId, BaseDef._MSG_DBDeleteCharacterFail); W2Log.Write(string.Format("err,deletchar already charged - {0}", gs.AccountList[Idx].Account.Info.AccountName), ELogType.GAME_EVENT); return(DBResult.NO_ERROR); } if (String.Compare(gs.AccountList[Idx].Account.Info.AccountPass, sm.Pass) != 0) { gs.Server.SendSignal(sm.Header.ClientId, BaseDef._MSG_DBDeleteCharacterFail); W2Log.Write(string.Format("err,deletchar incorret pass - {0}", gs.AccountList[Idx].Account.Info.AccountName), ELogType.GAME_EVENT); return(DBResult.NO_ERROR); } ret = false; try { File.Delete(Functions.getCorrectCharPath(sm.PlayerName)); ret = true; } catch (Exception e) { W2Log.Write(string.Format("err,deletchar - {0}/{1}", gs.AccountList[Idx].Account.Info.AccountName, sm.PlayerName), ELogType.GAME_EVENT); gs.Server.SendSignal(sm.Header.ClientId, BaseDef._MSG_DBDeleteCharacterFail); return(DBResult.NO_ERROR); } if (ret == false) { gs.Server.SendSignal(sm.Header.ClientId, BaseDef._MSG_DBDeleteCharacterFail); return(DBResult.NO_ERROR); } gs.AccountList[Idx].Account.Mob[Slot] = STRUCT_MOB.ClearProperty(); gs.AccountList[Idx].Account.MobExtra[Slot] = new STRUCT_MOBEXTRA(); gs.AccountList[Idx].Account.Skillbar[Slot] = STRUCT_SKILLBAR.Clear(); for (int i = 0; i < 32; i++) { gs.AccountList[Idx].Account.Affects[Slot].Affects[i] = STRUCT_AFFECT.Clear(); } ret = gs.SaveAccount(sm.Header.ClientId); if (ret == false) { W2Log.Write(string.Format("err,deletchar fail - save account - {0}", sm.PlayerName), ELogType.GAME_EVENT); gs.Server.SendSignal(sm.Header.ClientId, BaseDef._MSG_DBNewCharacterFail); return(DBResult.NO_ERROR); } W2Log.Write(string.Format("delete character [{0}]", sm.PlayerName), ELogType.GAME_EVENT); MSG_CNFNewCharacter answer = W2Marshal.CreatePacket <MSG_CNFNewCharacter>(BaseDef._MSG_DBCNFDeleteCharacter, sm.Header.ClientId); answer.Slot = Slot; for (int i = 0; i < GameBasics.MAXL_ACC_MOB; i++) { unsafe { answer.SelChar.Coin[i] = gs.AccountList[Idx].Account.Mob[i].Coin; for (int x = 0; x < GameBasics.MAXL_EQUIP; x++) { if (x == 0) { int Face = answer.SelChar.Equip[i].Items[x].Index; if (Face == 22 || Face == 23 || Face == 24 || Face == 25 || Face == 32) { Face = gs.AccountList[Idx].Account.MobExtra[i].ClassMaster == 0 ? 21 : (ushort)gs.AccountList[Idx].Account.MobExtra[i].MortalFace + 7; } answer.SelChar.Equip[i].Items[x].Index = (short)Face; } answer.SelChar.Equip[i].Items[x] = gs.AccountList[Idx].Account.Mob[i].Equip.Items[x]; } answer.SelChar.Exp[i] = (int)gs.AccountList[Idx].Account.Mob[i].Exp; answer.SelChar.Guild[i] = gs.AccountList[Idx].Account.Mob[i].Guild; answer.SelChar.Name[i].Value = gs.AccountList[Idx].Account.Mob[i].Name; answer.SelChar.Score[i] = gs.AccountList[Idx].Account.Mob[i].BaseScore; answer.SelChar.SPosX[i] = gs.AccountList[Idx].Account.Mob[i].SPX; answer.SelChar.SPosY[i] = gs.AccountList[Idx].Account.Mob[i].SPY; } } gs.Server.SendPacket(answer); return(DBResult.NO_ERROR); }
//Process OutCapsule (Apaga o Selo da Alma e Cria o Char) public static DBResult Exec_MSG_DBOutCapsule(DBController gs, pServer GameServer) { MSG_DBOutCapsule sm = W2Marshal.GetStructure <MSG_DBOutCapsule>(GameServer.RecvPacket.RawBuffer); int Slot = sm.Slot; int NovoSlot = -1; int Idx = gs.GetIndex(sm.Header.ClientId); if (Slot < 0 || Slot >= 4) { W2Log.Write($"err,outcapsule slot out of range: {gs.AccountList[Idx].Account.Info.AccountName}"); return(DBResult.NO_ERROR); } for (int i = 0; i < 4; i++) { if (String.IsNullOrEmpty(gs.AccountList[Idx].Account.Mob[i].Name)) { NovoSlot = i; break; } } if (NovoSlot < 0 || NovoSlot >= 4) { W2Log.Write($"err,newcharcapsule slot out of range: {NovoSlot} - {gs.AccountList[Idx].Account.Info.AccountName}"); gs.Server.SendSignal(sm.Header.ClientId, BaseDef._MSG_DBCNFCapsuleCharacterFail); return(DBResult.NO_ERROR);; } bool ret = gs.CreateChar(sm.Name, gs.AccountList[Idx].Account.Info.AccountName); if (ret == false) { gs.Server.SendSignal(sm.Header.ClientId, BaseDef._MSG_DBCNFCapsuleCharacterFail2); return(DBResult.NO_ERROR); } MItem item = gs.AccountList[Idx].GetItemPointer(sm.SourType, sm.SourPos); int index = item.Effects[0].Value * 256 + item.Effects[1].Value; STRUCT_CAPSULE file = new STRUCT_CAPSULE(); if (!Functions.ReadCapsule(index, out file)) { W2Log.Write($"Exec_MSG_DBOutCapsule error read capsule index: {index}"); return(DBResult.NO_ERROR); } STRUCT_MOB mob = gs.AccountList[Idx].Account.Mob[NovoSlot]; if (!String.IsNullOrEmpty(mob.Name)) { gs.Server.SendSignal(sm.Header.ClientId, BaseDef._MSG_DBNewCharacterFail); W2Log.Write($"err,newchar already charged: { gs.AccountList[Idx].Account.Info.AccountName} / {mob.Name}"); return(DBResult.NO_ERROR); } gs.AccountList[Idx].Account.Mob[NovoSlot] = file.Mob; gs.AccountList[Idx].Account.MobExtra[NovoSlot] = file.Extra; for (int i = 0; i < 32; i++) { gs.AccountList[Idx].Account.Affects[NovoSlot].Affects[i] = STRUCT_AFFECT.Clear(); } ret = gs.SaveAccount(sm.Header.ClientId); if (ret == false) { gs.Server.SendSignal(sm.Header.ClientId, BaseDef._MSG_DBNewCharacterFail); W2Log.Write($"err,newchar fail - create file: {sm.Name}"); return(DBResult.NO_ERROR); } MSG_CNFNewCharacter answer = W2Marshal.CreatePacket <MSG_CNFNewCharacter>(BaseDef._MSG_DBCNFNewCharacter, sm.Header.ClientId); for (int i = 0; i < GameBasics.MAXL_ACC_MOB; i++) { unsafe { answer.SelChar.Coin[i] = gs.AccountList[Idx].Account.Mob[i].Coin; for (int x = 0; x < GameBasics.MAXL_EQUIP; x++) { if (x == 0) { int Face = answer.SelChar.Equip[i].Items[x].Index; if (Face == 22 || Face == 23 || Face == 24 || Face == 25 || Face == 32) { Face = gs.AccountList[Idx].Account.MobExtra[i].ClassMaster == 0 ? 21 : (ushort)gs.AccountList[Idx].Account.MobExtra[i].MortalFace + 7; } answer.SelChar.Equip[i].Items[x].Index = (short)Face; answer.SelChar.Equip[i].Items[x].Effects[0].Code = 43; answer.SelChar.Equip[i].Items[x].Effects[0].Value = 0; answer.SelChar.Equip[i].Items[x].Effects[1].Code = 86; answer.SelChar.Equip[i].Items[x].Effects[1].Value = Functions.GetClassType(gs.AccountList[Idx].Account.Mob[i]); answer.SelChar.Equip[i].Items[x].Effects[2].Code = 28; answer.SelChar.Equip[i].Items[x].Effects[2].Value = (byte)gs.AccountList[Idx].Account.MobExtra[i].Citizen; } answer.SelChar.Equip[i].Items[x] = gs.AccountList[Idx].Account.Mob[i].Equip.Items[x]; } answer.SelChar.Exp[i] = (int)gs.AccountList[Idx].Account.Mob[i].Exp; answer.SelChar.Guild[i] = gs.AccountList[Idx].Account.Mob[i].Guild; answer.SelChar.Name[i].Value = gs.AccountList[Idx].Account.Mob[i].Name; answer.SelChar.Score[i] = gs.AccountList[Idx].Account.Mob[i].BaseScore; answer.SelChar.SPosX[i] = gs.AccountList[Idx].Account.Mob[i].SPX; answer.SelChar.SPosY[i] = gs.AccountList[Idx].Account.Mob[i].SPY; } } gs.Server.SendPacket(answer); return(DBResult.NO_ERROR); }
static public void Start(DBController gs) { bool Importend = false; foreach (string file in Directory.EnumerateFiles("./DataBase/ImportInfo/", "*.update")) { using (StreamReader sr = new StreamReader(file)) { string line; int countLine = 0; string Login = string.Empty, Senha = string.Empty; while ((line = sr.ReadLine()) != null) { if (countLine == 0) { Login = line; } if (countLine == 1) { Senha = line; } countLine++; if (!string.IsNullOrEmpty(Login) && !string.IsNullOrEmpty(Senha)) { break; } } if (File.Exists(Functions.getCorrectPath(Login) + ".json")) { STRUCT_ACCOUNTFILE target = new STRUCT_ACCOUNTFILE(); if (!gs.ReadAccount(Login, out target)) { W2Log.Write(String.Format("fail to read account file {0}", Login), ELogType.GAME_EVENT); Importend = false; } if (0 != String.Compare(target.Info.AccountName, Login)) { W2Log.Write(String.Format("fail to read account file {0}/{1}", Login, target.Info.AccountName), ELogType.GAME_EVENT); Importend = false; } // W2Log.Write(String.Format("pass teste file {0}/{1}", target.Info.AccountPass, Senha), ELogType.GAME_EVENT); target.Info.AccountPass = Senha; try { string CorrectPatch = Functions.getCorrectPath(target.Info.AccountName); using (StreamWriter pfile = File.CreateText(CorrectPatch + ".json")) { string indented = JsonConvert.SerializeObject(target, Formatting.Indented); pfile.Write(indented); } W2Log.Write(String.Format("save account sucess: {0}", target.Info.AccountName), ELogType.GAME_EVENT); Importend = true; } catch (Exception e) { W2Log.Write(String.Format("save account fail: {0}/{1}", target.Info.AccountName, e.Message), ELogType.GAME_EVENT); Importend = false; } } if (Importend) { sr.Close(); File.Delete(file); Importend = false; W2Log.Write(String.Format($"sucess update user: {Login}"), ELogType.CRITICAL_ERROR); return; } } } }
private DBResult ProcessPacketControl(DBController gs, pServer GameServer) { MSG_HEADER packet = W2Marshal.GetStructure <MSG_HEADER>(GameServer.RecvPacket.RawBuffer); if (0 == (packet.PacketID & BaseDef.FLAG_GAME2DB) || (packet.ClientId < 0) || (packet.ClientId >= 1000)) { W2Log.Write($"err,ProcessDBMessage packet Type:({packet.PacketID}) ID:{packet.ClientId} Size:{packet.Size}"); return(DBResult.PACKET_NOT_HANDLED); } switch (packet.PacketID) { case BaseDef._MSG_GuildInfo: return(Packet.Exec_MSG_GuildInfo(gs, GameServer)); case BaseDef._MSG_War: return(Packet.Exec_MSG_War(gs, GameServer)); case BaseDef._MSG_GuildAlly: return(Packet.Exec_MSG_GuildAlly(gs, GameServer)); case _MSG_GuildZoneReport.PacketID: return(Packet.Exec_MSG_GuildZoneReport(gs, GameServer)); case BaseDef._MSG_DBAccountLogin: return(Packet.Exec_MSG_DBAccountLogin(gs, GameServer)); case _MSG_DBCharacterLogin2.Opcode: return(Packet.Exec_MSG_DBCharacterLogin2(gs, GameServer)); case BaseDef._MSG_DBSaveMob: return(Packet.Exec_MSG_DBSaveMob(gs, GameServer)); case BaseDef._MSG_SavingQuit: return(Packet.Exec_MSG_SavingQuit(gs, GameServer)); case BaseDef._MSG_DBSendItem: return(Packet.Exec_MSG_DBSendItem(gs, GameServer)); case BaseDef._MSG_DBCreateCharacter: return(Packet.Exec_MSG_DBCreateCharacter(gs, GameServer)); case BaseDef._MSG_DBDeleteCharacter: return(Packet.Exec_MSG_DBCNFDeleteCharacter(gs, GameServer)); case BaseDef._MSG_DBNoNeedSave: return(Packet.Exec_MSG_DBNoNeedSave(gs, GameServer)); case BaseDef._MSG_DBUpdateSapphire: return(Packet.Exec_MSG_DBUpdateSapphire(gs, GameServer)); case BaseDef._MSG_MessageDBRecord: return(Packet.Exec_MSG_MessageDBRecord(gs, GameServer)); case BaseDef._MSG_DBCreateArchCharacter: return(Packet.Exec_MSG_DBCreateArchCharacter(gs, GameServer)); case BaseDef._MSG_DBCapsuleInfo: return(Packet.Exec_MSG_DBCapsuleInfo(gs, GameServer)); case BaseDef._MSG_DBPutInCapsule: return(Packet.Exec_MSG_DBPutInCapsule(gs, GameServer)); case BaseDef._MSG_DBOutCapsule: return(Packet.Exec_MSG_DBOutCapsule(gs, GameServer)); case BaseDef._MSG_DBItemDayLog: return(Packet.Exec_MSG_DBItemDayLog(gs, GameServer)); default: return(DBResult.PACKET_NOT_HANDLED); } }
public void DisconnectPlayer(pServer GameServer) { W2Log.Write($"O GameServer {GameServer.Index} foi desconectado do servidor.", ELogType.GAME_EVENT); }
private void CGameStateController_OnProcessSecTimer(CGameStateController gs) { W2Log.Write("wat", ELogType.GAME_EVENT); }