public static void Command_Req(InPacket lea, Client gc) { string[] cmd = lea.ReadString(60).Split(new[] { (char)0x20 }, StringSplitOptions.None); if (gc.Account.Master == 0 || cmd.Length < 1) { return; } var chr = gc.Character; Character victim = null; switch (cmd[0]) { case "//1": case "//公告": case "//notice": if (cmd.Length != 2) { break; } foreach (Character all in MapFactory.AllCharacters) { GamePacket.getNotice(all.Client, 3, cmd[1]); } break; case "//item": if (cmd.Length != 2 && cmd.Length != 3) { break; } short Quantity = 1; if (cmd.Length == 3) { if (int.Parse(cmd[2]) > 100) { Quantity = 100; } else { Quantity = short.Parse(cmd[2]); } } if (InventoryType.getItemType(int.Parse(cmd[1])) == 1 || InventoryType.getItemType(int.Parse(cmd[1])) == 2) { Quantity = 1; } if (InventoryType.getItemType(int.Parse(cmd[1])) == 5) { return; } chr.Items.Add(new Item(int.Parse(cmd[1]), InventoryType.getItemType(int.Parse(cmd[1])), chr.Items.GetNextFreeSlot((InventoryType.ItemType)InventoryType.getItemType(int.Parse(cmd[1]))), Quantity)); InventoryHandler.UpdateInventory(gc, InventoryType.getItemType(int.Parse(cmd[1]))); break; case "//money": if (cmd.Length != 2) { break; } chr.Money = int.Parse(cmd[1]); InventoryPacket.getInvenMoney(gc, chr.Money, int.Parse(cmd[1])); break; case "//levelup": chr.LevelUp(); break; case "//gogo": if (cmd.Length != 3) { break; } MapPacket.warpToMapAuth(gc, true, short.Parse(cmd[1]), short.Parse(cmd[2]), -1, -1); break; case "//hp": if (cmd.Length != 2) { break; } short Hp = short.Parse(cmd[1]); if (Hp > short.MaxValue) { Hp = short.MaxValue; } chr.MaxHp = Hp; chr.Hp = Hp; StatusPacket.getStatusInfo(gc); break; case "//mp": short Mp = short.Parse(cmd[1]); if (Mp > short.MaxValue) { Mp = short.MaxValue; } chr.MaxMp = Mp; chr.Mp = Mp; StatusPacket.getStatusInfo(gc); break; case "//heal": chr.Hp = chr.MaxHp; chr.Mp = chr.MaxMp; chr.Fury = chr.MaxFury; StatusPacket.UpdateHpMp(gc, chr.Hp, chr.Mp, chr.Fury, chr.MaxFury); break; case "//warp": if (cmd.Length != 2) { break; } foreach (Character find in MapFactory.AllCharacters) { if (find.Name.Equals(cmd[1])) { victim = find; } } if (victim != null) { chr.MapX = victim.MapX; chr.MapY = victim.MapY; chr.PlayerX = victim.PlayerX; chr.PlayerY = victim.PlayerY; MapPacket.warpToMapAuth(gc, true, chr.MapX, chr.MapY, chr.PlayerX, chr.PlayerY); } break; case "//ban": if (cmd.Length != 2) { break; } foreach (Character find in MapFactory.AllCharacters) { if (find.Name.Equals(cmd[1])) { victim = find; } } if (victim != null) { dynamic datum = new Datum("accounts"); victim.Client.Account.Banned = 1; victim.Client.Dispose(); } break; case "//save": for (int i = 0; i < MapFactory.AllCharacters.Count; i++) { if (chr.CharacterID == MapFactory.AllCharacters[i].CharacterID) { continue; } MapFactory.AllCharacters[i].Client.Dispose(); } //GameServer.IsAlive = false; break; case "//選擇正派": Quest Quest = new Quest(60); Quest.QuestState = 0x31; chr.Quests.Add(Quest); QuestPacket.getQuestInfo(gc, chr.Quests.getQuests()); chr.Items.Add(new Item(8990019, 4, chr.Items.GetNextFreeSlot(InventoryType.ItemType.Other4))); break; case "//選擇邪派": Quest = new Quest(64); Quest.QuestState = 0x31; chr.Quests.Add(Quest); QuestPacket.getQuestInfo(gc, chr.Quests.getQuests()); chr.Items.Add(new Item(8990020, 4, chr.Items.GetNextFreeSlot(InventoryType.ItemType.Other4))); break; //case "//test": // PartyPacket.PartyInvite(gc); // break; //case "//test2": // PartyPacket.PartyInvite(gc, 1, 1); // break; //case "//test3": // PartyPacket.PartyInvite(gc, 1 , 0); // break; default: break; } }
public static void Game_Log_Req(InPacket lea, Client gc) { //int re = SearchBytes(lea.Content, new byte[] { 0x0 }); string[] data = lea.ReadString(0x100 /*re*/).Split(new[] { (char)0x20 }, StringSplitOptions.None); int encryptKey = int.Parse(data[1]); string username = data[2]; string password = data[4]; int selectCharacter = lea.ReadByte(); IPAddress hostid = lea.ReadIPAddress(); gc.SetAccount(new Account(gc)); try { gc.Account.Load(username); //var pe = new PasswordEncrypt(encryptKey); //string encryptPassword = pe.encrypt(gc.Account.Password, gc.RetryLoginCount > 0 ? password.ToCharArray() : null); if (password.Equals(gc.Account.Password)) { gc.Dispose(); Log.Error("Login Fail!"); } else { gc.Account.Characters = new List <Character>(); foreach (dynamic datum in new Datums("Characters").PopulateWith("id", "accountId = '{0}' ORDER BY position ASC", gc.Account.ID)) { Character character = new Character(datum.id, gc); character.Load(false); character.IP = hostid; gc.Account.Characters.Add(character); } gc.SetCharacter(gc.Account.Characters[selectCharacter]); } Log.Inform("Password = {0}", password); //Log.Inform("encryptKey = {0}", encryptKey); //Log.Inform("encryptPassword = {0}", encryptPassword); } catch (NoAccountException) { gc.Dispose(); Log.Error("Login Fail!"); } Character chr = gc.Character; chr.CharacterID = gc.CharacterID; MapFactory.AllCharacters.Add(chr); StatusPacket.UpdateHpMp(gc, 0, 0, 0, 0); GamePacket.FW_DISCOUNTFACTION(gc); StatusPacket.getStatusInfo(gc); InventoryPacket.getCharacterEquip(gc); SkillPacket.getSkillInfo(gc, chr.Skills.getSkills()); QuestPacket.getQuestInfo(gc, chr.Quests.getQuests()); GamePacket.getQuickSlot(gc, chr.Keymap); StoragePacket.getStoreInfo(gc); StoragePacket.getStoreMoney(gc); MapPacket.enterMapStart(gc); InventoryPacket.getInvenCash(gc); CashShopPacket.MgameCash(gc); CashShopPacket.GuiHonCash(gc); InventoryPacket.getInvenEquip(gc); InventoryPacket.getInvenEquip1(gc); InventoryPacket.getInvenEquip2(gc); InventoryPacket.getInvenSpend3(gc); InventoryPacket.getInvenOther4(gc); InventoryPacket.getInvenPet5(gc); }