public void CharacterCheck(byte[] buff) { try { PacketReader Reader = new PacketReader(buff); Reader.Byte(); string name = Reader.Text(); Reader.Close(); if (CharacterCheck(name)) client.Send(Packet.CharacterName(4)); else client.Send(Packet.ScreenSuccess(4)); } catch (Exception ex) { Console.WriteLine("CharacterCheck()"); deBug.Write(ex); Console.WriteLine(ex); } }
void Handle() { PacketReader Reader = new PacketReader(PacketInformation.buffer); byte iSlot = Reader.Byte(); Global.slotItem uItemID = GetItem((uint)Character.Information.CharacterID, iSlot, 0); if (uItemID.ID == 0 || Character.State.Die) return; switch (uItemID.ID) { /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Stall decoration /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// case 3847: case 3848: case 3849: case 3850: case 35482: case 35483: case 35484: StallDeco(uItemID.ID, iSlot); HandleUpdateSlot(iSlot, uItemID, Reader.UInt16()); break; /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Monster Masks /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// case 10364: if (Character.Transformed) return; //Load Mask MonsterMasks(uItemID.ID, iSlot); HandleUpdateSlot(iSlot, uItemID, Reader.UInt16()); break; /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Forgotten world entrance /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// case 33235: ForgottenWorld(uItemID.ID); HandleUpdateSlot(iSlot, uItemID, Reader.UInt16()); break; /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Repair items /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// case 3784: case 24432: case 35249: if (!Character.Action.repair) { Character.Action.repair = true; RepairTimer(30000); //Check if there are any items that need repair double durability = Data.ItemBase[uItemID.ID].Defans.Durability; double currentdurability = Data.ItemBase[uItemID.dbID].Defans.Durability; if (currentdurability < durability) { int countrepairs = MsSQL.GetRowsCount("SELECT * FROM char_items WHERE owner='" + Character.Information.CharacterID + "'"); if (countrepairs == 0) { //Do nothing client sends message automaticly } else { //Start repairing call handle HandleRepair(iSlot, uItemID.dbID); HandleUpdateSlot(iSlot, uItemID, Reader.UInt16()); } } } break; /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Thief Return Scrolls /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// case 2128: if (Character.Information.Scroll) return; HandleThiefScroll(uItemID.ID); HandleUpdateSlot(iSlot, uItemID, Reader.UInt16()); break; /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Inventory Expansion /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// case 24456: HandleInventoryExp(uItemID.ID); HandleUpdateSlot(iSlot, uItemID, Reader.UInt16()); break; /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Monster Summon Scrolls /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// case 3935: case 3936: case 3937: case 10133: case 10145: case 30925: HandleSummon(Character.Information.Level); HandleUpdateSlot(iSlot, uItemID, Reader.UInt16()); break; /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Reverse return scrolls /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// case 3795: case 24467: if (Character.Information.Scroll) return; HandleReverse(Reader.Int16(),Reader.Byte(), Reader.Int32()); HandleUpdateSlot(iSlot, uItemID, Reader.UInt16()); break; /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Premium Tickets /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// case 7490: case 24505: HandlePremiumType(uItemID.ID); HandleUpdateSlot(iSlot, uItemID, Reader.UInt16()); break; /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Normal Return Scrolls /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// case 61: case 2198: case 2199: case 3769: case 19599: case 24684: if (Character.Information.Scroll) return; if (Timer.Movement != null) { Timer.Movement.Dispose(); Character.Position.Walking = false; } HandleReturnScroll(uItemID.ID); HandleUpdateSlot(iSlot, uItemID, Reader.UInt16()); break; /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // HP Potions /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// case 4: case 5: case 6: case 7: case 8: case 3817: case 3818: case 3819: case 5912: case 3765: byte type = 1; HandlePotion(type, uItemID.ID); HandleUpdateSlot(iSlot, uItemID, Reader.UInt16()); break; /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // MP Potions /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// case 11: case 12: case 13: case 14: case 15: case 3820: case 3821: case 3822: case 5913: type = 2; HandlePotion(type, uItemID.ID); HandleUpdateSlot(iSlot, uItemID, Reader.UInt16()); break; case 9: type = 3; HandlePotion(type, uItemID.ID); HandleUpdateSlot(iSlot, uItemID, Reader.UInt16()); break; case 16: type = 4; HandlePotion(type, uItemID.ID); HandleUpdateSlot(iSlot, uItemID, Reader.UInt16()); break; /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Vigor Potions /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// case 18: case 19: case 20: case 21: case 22: case 23: case 3739: case 4013: case 5881: case 5944: case 23316: type = 5; HandlePotion(type, uItemID.ID); HandleUpdateSlot(iSlot, uItemID, Reader.UInt16()); break; /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Special Transport /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// case 19601: case 22770: if (!Character.Stall.Stallactive && !Character.Transport.Right && Character.Action.MonsterID.Count == 0 && !Character.State.Sitting && !Character.Information.Scroll) { bool r = HandleSpecialTrans(uItemID.ID); if (!r) HandleUpdateSlot(iSlot, uItemID, Reader.UInt16()); } break; /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Normal transports /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// case 2137: case 2138: case 2139: case 3909: case 23330: case 22953: case 23396: case 23395: case 22952: if (!Character.Stall.Stallactive && !Character.Transport.Right && Character.Action.MonsterID.Count == 0 && !Character.State.Sitting && !Character.Information.Scroll) { if (this.Character.Information.Level >= Data.ItemBase[uItemID.ID].Level) { HandleUpdateSlot(iSlot, uItemID, Reader.UInt16()); HandleHorseScroll(uItemID.ID); } else { //client.Send();// needs error } } break; /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Global Chatting /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// case 3851: HandleUpdateSlot(iSlot, uItemID, Reader.UInt16()); string text = " " + Reader.Text3(); Reader.Close(); SendAll(Packet.ChatPacket(6, 0, text, Character.Information.Name)); break; /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Buff Items /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// case 7100: SpecialBuff(3977); HandleUpdateSlot(iSlot, uItemID, Reader.UInt16()); break; case 7098: SpecialBuff(3975); HandleUpdateSlot(iSlot, uItemID, Reader.UInt16()); break; case 23311: if (Character.Information.Berserking) return; int style = 1; HandleRegenZerk(style, uItemID.ID); HandleUpdateSlot(iSlot, uItemID, Reader.UInt16()); break; case 23938: if (Character.Information.Berserking) return; style = 2; HandleRegenZerk(style, uItemID.ID); HandleUpdateSlot(iSlot, uItemID, Reader.UInt16()); break; /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Grab Pets /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// case 23313: case 35578: case 35583: if (!Character.Grabpet.Active && Character.Action.MonsterID.Count == 0) { bool r = HandleGrabPet(iSlot, uItemID.ID); if (!r) HandleUpdateSlotn(iSlot, uItemID, Reader.UInt16()); } break; /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Attack Pets /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /* case 22778: if (!Character.Grabpet.Active && Character.Action.MonsterID.Count == 0) { bool r = HandleAttackPet(iSlot, uItemID.ID); if (!r) HandleUpdateSlotn(iSlot, uItemID, Reader.UInt16()); } break; */ /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Gender Switch Tools /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// case 24479: //HandleGenderSwitch(iSlot, uItemID.ID); //HandleUpdateSlotn(iSlot, uItemID, Reader.UInt16()); break; /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Balloons /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// case 24342: //HandleBalloon(iSlot, 31157); SpecialBuff(31182); HandleUpdateSlot(iSlot, uItemID, Reader.UInt16()); break; /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Default , Check item ID /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// default: //Console.WriteLine("{0} Tried to use item {1} , The cast type: {2}", Character.Information.Name, Data.ItemBase[uItemID.ID].Name, uItemID.ID); HandleUpdateSlot(iSlot, uItemID, Reader.UInt16()); break; } Reader.Close(); }
void CharacterCreate() { try { //Define amount of characters allowed! if (MsSQL.GetRowsCount("SELECT * FROM character WHERE account='" + Player.AccountName + "'") == 4) return; PacketReader Reader = new PacketReader(PacketInformation.buffer); Reader.Byte(); string name = Reader.Text(); int model = Reader.Int32(); byte volume = Reader.Byte(); int[] Item = new int[4]; Item[0] = Reader.Int32(); Item[1] = Reader.Int32(); Item[2] = Reader.Int32(); Item[3] = Reader.Int32(); Reader.Close(); #region Check Name if (CharacterCheck(name)) { client.Send(Packet.CharacterName(4)); return; } if (name.Contains("[")) return; if (name.Contains("GM")) return; if (name.Contains("]")) return; if (name.Contains("_")) return; if (name.Contains("-")) return; #endregion //#################################################################### European models begin if (model >= 14715 && model <= 14745) { MsSQL.InsertData("INSERT INTO character (account, name, chartype, volume, xsect, ysect, xpos, zpos, ypos, savearea,GuideData) VALUES ('" + Player.AccountName + "','" + name + "', '" + model + "', '" + volume + "','79','105','1000','1000','83','20','0000000000000000')"); MsSQL.InsertData("INSERT INTO character_rev (charname, revxsec, revysec, revx, revy, revz) VALUES ('" + name + "','79','105','1000','22','83')"); Player.CreatingCharID = MsSQL.GetDataInt("Select * from character Where name='" + name + "'", "id"); double MagDef = 3; double PhyDef = 6; double Parry = 11; double Hit = 11; double MinPhyA = 6; double MaxPhyA = 9; double MinMagA = 6; double MaxMagA = 10; Framework.Ini ini; ini = new Framework.Ini(Environment.CurrentDirectory + @"\Settings\Settings_Custom.ini"); string Item1 = ini.GetValue("START ITEMS EUROPE", "Item001").ToString(); string Item2 = ini.GetValue("START ITEMS EUROPE", "Item002").ToString(); string Item3 = ini.GetValue("START ITEMS EUROPE", "Item003").ToString(); string Item4 = ini.GetValue("START ITEMS EUROPE", "Item004").ToString(); string Item5 = ini.GetValue("START ITEMS EUROPE", "Item005").ToString(); string Amount1 = ini.GetValue("START ITEMS EUROPE", "Amount001").ToString(); string Amount2 = ini.GetValue("START ITEMS EUROPE", "Amount002").ToString(); string Amount3 = ini.GetValue("START ITEMS EUROPE", "Amount003").ToString(); string Amount4 = ini.GetValue("START ITEMS EUROPE", "Amount004").ToString(); string Amount5 = ini.GetValue("START ITEMS EUROPE", "Amount005").ToString(); try { AddItem(Convert.ToInt32(Item1), Convert.ToByte(Amount1), 13, 1, Player.CreatingCharID, 0); AddItem(Convert.ToInt32(Item2), Convert.ToByte(Amount2), 14, 1, Player.CreatingCharID, 0); AddItem(Convert.ToInt32(Item3), Convert.ToByte(Amount3), 15, 1, Player.CreatingCharID, 0); AddItem(Convert.ToInt32(Item4), Convert.ToByte(Amount4), 16, 1, Player.CreatingCharID, 0); AddItem(Convert.ToInt32(Item5), Convert.ToByte(Amount5), 17, 1, Player.CreatingCharID, 0); } catch (Exception) { } AddItem(Item[0], 0, 1, 0, Player.CreatingCharID, 0); AddItem(Item[1], 0, 4, 0, Player.CreatingCharID, 0); AddItem(Item[2], 0, 5, 0, Player.CreatingCharID, 0); AddItem(Item[3], 0, 6, 0, Player.CreatingCharID, 0); MagDef += Data.ItemBase[Item[0]].Defans.MinMagDef; MagDef += Data.ItemBase[Item[1]].Defans.MinMagDef; MagDef += Data.ItemBase[Item[2]].Defans.MinMagDef; PhyDef += Data.ItemBase[Item[0]].Defans.MinPhyDef; PhyDef += Data.ItemBase[Item[1]].Defans.MinPhyDef; PhyDef += Data.ItemBase[Item[2]].Defans.MinPhyDef; Parry += Data.ItemBase[Item[0]].Defans.Parry; Parry += Data.ItemBase[Item[1]].Defans.Parry; Parry += Data.ItemBase[Item[2]].Defans.Parry; Hit += Data.ItemBase[Item[3]].Attack.MinAttackRating; MinPhyA += Data.ItemBase[Item[3]].Attack.Min_LPhyAttack; MaxPhyA += Data.ItemBase[Item[3]].Attack.Min_HPhyAttack; MinMagA += Data.ItemBase[Item[3]].Attack.Min_LMagAttack; MaxMagA += Data.ItemBase[Item[3]].Attack.Min_HMagAttack; if (Item[3] == 10730 || Item[3] == 10734) { MagDef += Data.ItemBase[251].Defans.MinMagDef; PhyDef += Data.ItemBase[251].Defans.MinPhyDef; Parry += Data.ItemBase[251].Defans.Parry; AddItem(10738, 0, 7, 0, Player.CreatingCharID, 0); } if (Item[3] == 10733) { AddItem(10376, 250, 7, 1, Player.CreatingCharID, 0); } MsSQL.UpdateData("update character set min_phyatk='" + (int)Math.Round(MinPhyA) + "', max_phyatk='" + Math.Round(MaxPhyA) + "', min_magatk='" + Math.Round(MinMagA) + "', max_magatk='" + Math.Round(MaxMagA) + "', phydef='" + Math.Round(PhyDef) + "', magdef='" + Math.Round(PhyDef) + "', parry='" + Math.Round(Parry) + "', hit='" + Math.Round(Hit) + "' where name='" + name + "'"); AddMastery(513, Player.CreatingCharID); //Warrior AddMastery(515, Player.CreatingCharID); //Rogue AddMastery(514, Player.CreatingCharID); //Wizard AddMastery(516, Player.CreatingCharID); //Warlock AddMastery(517, Player.CreatingCharID); //Bard AddMastery(518, Player.CreatingCharID); //Cleric Console.WriteLine("@Gameserver: Character: " + name + " Has been created"); client.Send(Packet.ScreenSuccess(1)); } else { #region Check Name if (CharacterCheck(name)) { client.Send(Packet.CharacterName(4)); return; } #endregion //#################################################################### Chinese models begin MsSQL.InsertData("INSERT INTO character (account, name, chartype, volume,GuideData) VALUES ('" + Player.AccountName + "','" + name + "', '" + model + "', '" + volume + "','0000000000000000')"); MsSQL.InsertData("INSERT INTO character_rev (charname, revxsec, revysec, revx, revy, revz) VALUES ('" + name + "','168','79','911','1083','-32')"); Player.CreatingCharID = MsSQL.GetDataInt("Select * from character Where name='" + name + "'", "id"); #region Item double MagDef = 3; double PhyDef = 6; double Parry = 11; double Hit = 11; double MinPhyA = 6; double MaxPhyA = 9; double MinMagA = 6; double MaxMagA = 10; Framework.Ini ini; ini = new Framework.Ini(Environment.CurrentDirectory + @"\Settings\Settings_Custom.ini"); string Item1 = ini.GetValue("START ITEMS CHINESE", "Item001").ToString(); string Item2 = ini.GetValue("START ITEMS CHINESE", "Item002").ToString(); string Item3 = ini.GetValue("START ITEMS CHINESE", "Item003").ToString(); string Item4 = ini.GetValue("START ITEMS CHINESE", "Item004").ToString(); string Item5 = ini.GetValue("START ITEMS CHINESE", "Item005").ToString(); string Amount1 = ini.GetValue("START ITEMS CHINESE", "Amount001").ToString(); string Amount2 = ini.GetValue("START ITEMS CHINESE", "Amount002").ToString(); string Amount3 = ini.GetValue("START ITEMS CHINESE", "Amount003").ToString(); string Amount4 = ini.GetValue("START ITEMS CHINESE", "Amount004").ToString(); string Amount5 = ini.GetValue("START ITEMS CHINESE", "Amount005").ToString(); try { AddItem(Convert.ToInt32(Item1), Convert.ToByte(Amount1), 13, 1, Player.CreatingCharID, 0); AddItem(Convert.ToInt32(Item2), Convert.ToByte(Amount2), 14, 1, Player.CreatingCharID, 0); AddItem(Convert.ToInt32(Item3), Convert.ToByte(Amount3), 15, 1, Player.CreatingCharID, 0); AddItem(Convert.ToInt32(Item4), Convert.ToByte(Amount4), 16, 1, Player.CreatingCharID, 0); AddItem(Convert.ToInt32(Item5), Convert.ToByte(Amount5), 17, 1, Player.CreatingCharID, 0); } catch (Exception) { } AddItem(Item[0], 0, 1, 0, Player.CreatingCharID, 0); AddItem(Item[1], 0, 4, 0, Player.CreatingCharID, 0); AddItem(Item[2], 0, 5, 0, Player.CreatingCharID, 0); AddItem(Item[3], 0, 6, 0, Player.CreatingCharID, 0); MagDef += Data.ItemBase[Item[0]].Defans.MinMagDef; MagDef += Data.ItemBase[Item[1]].Defans.MinMagDef; MagDef += Data.ItemBase[Item[2]].Defans.MinMagDef; PhyDef += Data.ItemBase[Item[0]].Defans.MinPhyDef; PhyDef += Data.ItemBase[Item[1]].Defans.MinPhyDef; PhyDef += Data.ItemBase[Item[2]].Defans.MinPhyDef; Parry += Data.ItemBase[Item[0]].Defans.Parry; Parry += Data.ItemBase[Item[1]].Defans.Parry; Parry += Data.ItemBase[Item[2]].Defans.Parry; Hit += Data.ItemBase[Item[3]].Attack.MinAttackRating; MinPhyA += Data.ItemBase[Item[3]].Attack.Min_LPhyAttack; MaxPhyA += Data.ItemBase[Item[3]].Attack.Min_HPhyAttack; MinMagA += Data.ItemBase[Item[3]].Attack.Min_LMagAttack; MaxMagA += Data.ItemBase[Item[3]].Attack.Min_HMagAttack; if (Item[3] == 3632 || Item[3] == 3633) { MagDef += Data.ItemBase[251].Defans.MinMagDef; PhyDef += Data.ItemBase[251].Defans.MinPhyDef; Parry += Data.ItemBase[251].Defans.Parry; AddItem(251, 0, 7, 0, Player.CreatingCharID, 0); } if (Item[3] == 3636) { AddItem(62, 250, 7, 1, Player.CreatingCharID, 0); } #endregion MsSQL.UpdateData("update character set min_phyatk='" + (int)Math.Round(MinPhyA) + "', max_phyatk='" + Math.Round(MaxPhyA) + "', min_magatk='" + Math.Round(MinMagA) + "', max_magatk='" + Math.Round(MaxMagA) + "', phydef='" + Math.Round(PhyDef) + "', magdef='" + Math.Round(PhyDef) + "', parry='" + Math.Round(Parry) + "', hit='" + Math.Round(Hit) + "' where name='" + name + "'"); AddMastery(257, Player.CreatingCharID); //blade AddMastery(258, Player.CreatingCharID); //heuksal AddMastery(259, Player.CreatingCharID); //bow AddMastery(273, Player.CreatingCharID); //cold AddMastery(274, Player.CreatingCharID); //light AddMastery(275, Player.CreatingCharID); //fire AddMastery(276, Player.CreatingCharID); //force Console.WriteLine("@Gameserver: Character: " + name + " Has been created"); client.Send(Packet.ScreenSuccess(1)); } } catch (Exception ex) { Console.WriteLine("CharacterCreate()"); deBug.Write(ex); Console.WriteLine(ex); } }
protected void SavePlace() { PacketReader reader = new PacketReader(PacketInformation.buffer); int ObjectID = reader.Int32(); obj o = GetObject(ObjectID); byte type = 0; switch (Data.ObjectBase[o.ID].Name) { case "STORE_CH_GATE": type = 1; break; case "STORE_WC_GATE": type = 2; break; case "STORE_KT_GATE": type = 5; break; case "STORE_EU_GATE": type = 20; break; case "STORE_CA_GATE": type = 25; break; case "STORE_SD_GATE1": type = 175; break; case "STORE_SD_GATE2": type = 176; break; } Character.Information.Place = type; MsSQL.InsertData("update character set savearea='" + Character.Information.Place + "' where id='" + Character.Information.CharacterID + "'"); client.Send(Packet.UpdatePlace()); }
protected void Save() { PacketReader Reader = new PacketReader(PacketInformation.buffer); string player_path; byte[] file; switch (Reader.Byte()) { case 1: player_path = Environment.CurrentDirectory + @"\player\info\quickbar\" + Character.Information.Name + ".dat"; file = System.IO.File.ReadAllBytes(player_path); byte Slot = Reader.Byte(); byte sType = Reader.Byte(); Slot *= 5; file[Slot] = sType; file[Slot + 1] = Reader.Byte(); file[Slot + 2] = Reader.Byte(); file[Slot + 3] = Reader.Byte(); file[Slot + 4] = Reader.Byte(); System.IO.File.WriteAllBytes(player_path, file); break; case 2: player_path = Environment.CurrentDirectory + @"\player\info\autopot\" + Character.Information.Name + ".dat"; file = System.IO.File.ReadAllBytes(player_path); file[0] = Reader.Byte(); file[1] = Reader.Byte(); file[2] = Reader.Byte(); file[3] = Reader.Byte(); file[4] = Reader.Byte(); file[5] = Reader.Byte(); file[6] = Reader.Byte(); System.IO.File.WriteAllBytes(player_path, file); UpdateHp(); UpdateMp(); break; } Reader.Close(); }
protected void Open_NPC() { try { Character.State.Busy = true; PacketReader Reader = new PacketReader(PacketInformation.buffer); Reader.UInt32(); byte type = Reader.Byte(); if (type == 1) { client.Send(Packet.OpenNPC(type)); } else { client.Send(Packet.OpenNPC(type)); } Reader.Close(); } catch (Exception ex) { Console.WriteLine(ex.StackTrace); } }
public void LoginScreen() { try { PacketReader Reader = new PacketReader(PacketInformation.buffer); string name = Reader.Text(); Reader.Close(); #region Check name before entering (exploit) Systems.MsSQL ms = new Systems.MsSQL("SELECT name FROM character WHERE account='" + Player.AccountName + "' AND name='" + name + "'"); int checkinfo = ms.Count(); if (checkinfo == 0) { return; } #endregion else { Character = new character(); Character.Information.Name = name; Character.Account.ID = Player.ID; PlayerDataLoad(); LoadJobData(); checkSameChar(name, Character.Information.UniqueID); CheckCharStats(Character); clients.Add(this); client.Send(Packet.LoginScreen()); client.Send(Packet.StartPlayerLoad()); client.Send(Packet.Load(Character)); client.Send(Packet.EndPlayerLoad()); client.Send(Packet.PlayerUnknowPack(Character.Information.UniqueID)); client.Send(Packet.UnknownPacket()); OpenTimer(); } } catch (Exception ex) { Console.WriteLine("Error login by: {0}",Character.Information.Name); deBug.Write(ex); Console.WriteLine(ex); } }
void CharacterRestore() { try { PacketReader Reader = new PacketReader(PacketInformation.buffer); Reader.Byte(); string name = Reader.Text(); Reader.Close(); MsSQL.InsertData("UPDATE character SET deletedtime=0 WHERE name='" + name + "'"); client.Send(Packet.ScreenSuccess(5)); } catch (Exception ex) { Console.WriteLine("CharacterRestore()"); deBug.Write(ex); Console.WriteLine(ex); //Write source of the error } }