Beispiel #1
0
        //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);
        }
Beispiel #2
0
        //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);
        }
Beispiel #3
0
        //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);
        }
Beispiel #4
0
        //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);
        }
Beispiel #5
0
        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;
                    }
                }
            }
        }
Beispiel #6
0
        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);
            }
        }
Beispiel #7
0
 public void DisconnectPlayer(pServer GameServer)
 {
     W2Log.Write($"O GameServer {GameServer.Index} foi desconectado do servidor.", ELogType.GAME_EVENT);
 }
Beispiel #8
0
 private void CGameStateController_OnProcessSecTimer(CGameStateController gs)
 {
     W2Log.Write("wat", ELogType.GAME_EVENT);
 }