public void RenameParty() { try { //Create new packet reader PacketReader reader = new PacketReader(PacketInformation.buffer); //First integer is party id int partyid = reader.Int32(); //Second integer is not needed int NotNeeded = reader.Int32(); //Byte party type byte ptype = reader.Byte(); //Byte party purpose byte purpose = reader.Byte(); //Byte minimum level byte minlevel = reader.Byte(); //Byte max level to enter party byte maxlevel = reader.Byte(); //Party name lenght short namel = reader.Int16(); //Party name each character is a word value using text3 string pname = reader.Text3(); //Create new packet writer PacketWriter Writer = new PacketWriter(); //Add opcode to server packet Writer.Create(OperationCode.SERVER_PARTY_CHANGENAME); //Write static byte 1 Writer.Byte(1); //Write party id Writer.DWord(partyid); //Write dword 0 Writer.DWord(0); //Write party type Writer.Byte(ptype); //Write party purpose Writer.Byte(purpose); //Write party minimum level Writer.Byte(minlevel); //Write party max level Writer.Byte(maxlevel); //Write party name Writer.Text3(pname); //Send bytes to client client.Send(Writer.GetBytes()); } //If a error happens catch (Exception ex) { //Write the exception to the log } }
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Private Message Open /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// public void PrivateMessageOpen() { try { PacketReader Reader = new PacketReader(PacketInformation.buffer); ///////////////////////////////////////////////////////////////////////////////////// byte type = Reader.Byte(); short typeget = (short)type; Reader.Close(); DB ms = new DB("SELECT * FROM message WHERE receiver='" + Character.Information.Name + "' AND idinfo ='" + typeget + "'"); using (SqlDataReader reader = ms.Read()) { while (reader.Read()) { string messageinfo = reader.GetString(3); client.Send(Packet.PrivateMessageOpen(type, messageinfo)); DB.query("UPDATE message SET status='1' WHERE receiver='" + Character.Information.Name + "' AND idinfo ='" + type + "'"); } } ms.Close(); } catch (Exception ex) { Log.Exception(ex); } }
///////////////////////////////////////////////////////////////////////////////// // Friend add response ///////////////////////////////////////////////////////////////////////////////// public void FriendAddResponse() { try { PacketReader reader = new PacketReader(PacketInformation.buffer); int Inviterid = reader.Int32(); int Myid = reader.Int32(); byte State = reader.Byte(); reader.Close(); PlayerMgr sys = Helpers.GetInformation.GetPlayer(Inviterid); if (sys != null) { if (State == 0) { //Declined client.Send(Packet.FriendDecline(Character.Information.Name)); sys.client.Send(Packet.FriendDecline(Character.Information.Name)); } else { //Accepted sys.client.Send(Packet.FriendData(Myid, 2, Character.Information.Name, Character, false)); client.Send(Packet.FriendData(Inviterid, 2, sys.Character.Information.Name, sys.Character, false)); DB.query("INSERT INTO friends (owner,friend_name,model_info) VALUES ('" + Character.Information.CharacterID + "','" + sys.Character.Information.CharacterID + "','" + sys.Character.Information.Model + "')"); DB.query("INSERT INTO friends (owner,friend_name,model_info) VALUES ('" + sys.Character.Information.CharacterID + "','" + Character.Information.CharacterID + "','" + Character.Information.Model + "')"); } } } catch (Exception ex) { Console.WriteLine("Friend Add Response Error {0}", ex); Log.Exception(ex); } }
public void Connect() { //Wrap our function inside a catcher try { //Open our packet reader PacketReader Reader = new PacketReader(PacketInformation.buffer); byte type = Reader.Byte(); Reader.Skip(3); string ID = Reader.Text(); string PW = Reader.Text(); Reader.Close(); //Set login result information int LoginResult = LoginUser(ID, ref PW, ref Player, true); //If the login is succesfull if (LoginResult == 4) { //Send succes packet client.Send(Packet.ConnectSuccess()); } //If the login is wrong else { //Disconnect the user client.Disconnect(PacketInformation.Client); } } catch (Exception ex) { Log.Exception(ex); } }
///////////////////////////////////////////////////////////////////////////////// // Open Npc ///////////////////////////////////////////////////////////////////////////////// public void Open_NPC() { #region 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) { Log.Exception(ex); } #endregion }
public void MakeAlias() { try { /////////////////////////////////////////////////////////////////////////////////////////////////// PacketReader Reader = new PacketReader(PacketInformation.buffer); int id = Reader.Int32(); byte type = Reader.Byte(); short nLenght = Reader.Int16(); string name = Reader.String(nLenght); /////////////////////////////////////////////////////////////////////////////////////////////////// Console.WriteLine(name); DB ms = new DB("SELECT * FROM character_jobs WHERE job_alias='" + name + "'"); int checkjob = ms.Count(); /////////////////////////////////////////////////////////////////////////////////////////////////// client.Send(Packet.MakeAlias(name, type)); if (checkjob == 0) { client.Send(Packet.MakeAlias(name, type)); DB.query("UPDATE character_jobs SET job_alias='" + name + "' WHERE character_name='" + Character.Information.Name + "'"); } else if (checkjob >= 0) { client.Send(Packet.MakeAliasError(name, type)); } } catch (Exception ex) { Log.Exception(ex); } }
public void JoinMerc() { try { DB ms = new DB("SELECT * FROM character_jobs WHERE character_name='" + Character.Information.Name + "'"); int checkjob = ms.Count(); if (checkjob == 0) { ///////////////////////////////////////////////////////////////////////////////////// PacketReader Reader = new PacketReader(PacketInformation.buffer); int id = Reader.Int32(); byte type = Reader.Byte(); ///////////////////////////////////////////////////////////////////////////////////// client.Send(Packet.InfoUpdate(1, Character.Information.CharacterID, 0)); client.Send(Packet.JoinMerchant(id, type)); ///////////////////////////////////////////////////////////////////////////////////// DB.query("INSERT INTO character_jobs (character_name, job_type) VALUES ('" + Character.Information.Name + "','2')"); ms.Close(); } else { // Not needed cant join job because excist } } catch (Exception ex) { Log.Exception(ex); } }
void CharacterJobPick(byte[] buff) { //Wrap our function inside a catcher try { //Open packet reader PacketReader Reader = new PacketReader(buff); Reader.Skip(1); short namel = Reader.Int16(); string name = Reader.String(namel); byte job = Reader.Byte(); Reader.Close(); //Anti hack check string namecheck = DB.GetData("SELECT name FROM character WHERE account='" + Player.AccountName + "'", "name"); int jobcheck = Convert.ToInt32(DB.GetData("SELECT jobtype FROM users WHERE id='" + Player.AccountName + "'", "jobtype")); //If the name check is succesfull and account has no job set. if (jobcheck == 0 && namecheck.Length > 0) { //Write new job info DB.query("UPDATE users SET jobtype='" + job + "' WHERE id='" + Player.AccountName + "'"); } //Send visual confirmation client.Send(Packet.CharacterJobSelection()); } catch (Exception ex) { Log.Exception(ex); } }
/////////////////////////////////////////////////////////////////////////// // Grabpet settings /////////////////////////////////////////////////////////////////////////// public void GrabPetSettings() { //Not worked on yet. PacketReader Reader = new PacketReader(PacketInformation.buffer); int petid = Reader.Int32(); byte type = Reader.Byte(); int settingsinfo = Reader.Int32(); client.Send(Packet.ChangePetSettings(1, petid, type, settingsinfo)); }
//############################################################################## // Start timers voids //############################################################################## public void StartPvpTimer(int time) { //Need to add checks PacketReader reader = new PacketReader(PacketInformation.buffer); byte pvptype = reader.Byte(); if (Timer.Pvp != null) Timer.Pvp.Dispose(); Timer.Pvp = new Timer(new TimerCallback(Player_Pvp_CallBack), 0, time, 0); Send(Packet.PvpSystemWait(Character.Information.UniqueID)); Character.Information.PvpWait = true; Character.Information.Pvptype = pvptype; }
public void StallBuy() { try { if (!Character.Network.Stall.isOpened) return; PacketReader Reader = new PacketReader(PacketInformation.buffer); byte stallslot = Reader.Byte(); WorldMgr.stall currentStall = Character.Network.Stall; WorldMgr.stall.stallItem sitem = currentStall.ItemList.Find(i => (i.stallSlot == stallslot)); // stall buyer update byte slot = GetFreeSlot(); if (slot <= 12) return; if (Character.Information.Gold >= (long)sitem.price) { Character.Information.Gold -= (long)sitem.price; client.Send(Packet.UpdateGold(Character.Information.Gold)); SaveGold(); } else return; //insufficent gold // staller update if (currentStall.ItemList.Contains(sitem)) { PlayerMgr staller = Helpers.GetInformation.GetPlayer(currentStall.ownerID); staller.Character.Information.Gold += (long)sitem.price; staller.client.Send(Packet.UpdateGold(staller.Character.Information.Gold)); DB.query("update character set gold='" + staller.Character.Information.Gold + "' where id='" + staller.Character.Information.CharacterID + "'"); //DB.query("delete from char_items where itemnumber='item" + sitem.Item.Slot + "' AND owner='" + staller.Character.Information.CharacterID + "'"); DB.query("UPDATE char_items SET owner='" + Character.Information.CharacterID + "',slot='" + slot + "',itemnumber='item" + slot + "' WHERE owner='" + staller.Character.Information.CharacterID + "' AND itemid='" + sitem.Item.ID + "' AND id='" + sitem.Item.dbID + "' AND storagetype='0'"); //take item out from stall if (currentStall.ItemList.Count == 1) { staller.Character.Stall.Stallactive = false; Character.Stall.Stallactive = false; } currentStall.ItemList.Remove(sitem); client.Send(Packet.StallBuyItem(stallslot, 1)); currentStall.Send(Packet.StallBuyItem2(Character.Information.Name, stallslot, currentStall.ItemList)); } else { Disconnect("ban"); Console.WriteLine("Autobanned user: "******" Due to hacking"); } } catch (Exception ex) { Log.Exception(ex); } }
public void CharacterScreen() { //Wrap our function inside a catcher try { //Open our packet reader PacketReader Reader = new PacketReader(PacketInformation.buffer); byte type = Reader.Byte(); //Switch on byte type switch (type) { case 1: //WorldMgr.character creation CharacterCreate(); break; case 2: //Character listening CharacterListing(); break; case 3: //Character deletion CharacterDelete(); break; case 4: //WorldMgr.character checking CharacterCheck(PacketInformation.buffer); break; case 5: //Character restoring CharacterRestore(); break; case 9: //Character job information CharacterJobInfo(); break; case 16: //Select job CharacterJobPick(PacketInformation.buffer); break; default: //We use this if we get a new case. Console.WriteLine("Character Screen Type: " + type); Disconnect("normal"); break; } //Close packet reader Reader.Close(); } catch (Exception ex) { Log.Exception(ex); } }
//Will need to read this byte by byte to get the id for the server to record for the chardata public void Gameguide() { try { PacketReader Reader = new PacketReader(PacketInformation.buffer); bool Guideok = false; int[] b1 = new int[8]; for (int b = 0; b < 8; ++b)//Reads Guide Data { b1[b] = Reader.Byte();//Puts into a int Array } for (int gc = 0; gc < 8; ++gc)//This Checks The Last Send Guide Paket To Make Sure The Same Packet Is Not Read Twice { if (b1[gc] == Character.Guideinfo.Gchk[gc]) { Guideok = false;//If Guide Packet Has Been Sent Will Return False } else { Guideok = true;//If Guide Packet Is New Will Retun True And Break break; } } if (Guideok) { for (int gc = 0; gc < 8; ++gc)// Guide Packet Check { Character.Guideinfo.Gchk[gc] = b1[gc];//Adds Packet To Int Array } for (int gi = 0; gi < 8; ++gi)//Guide Packet Update For Save And Teleport,Return,Etc { Character.Guideinfo.G1[gi] = Character.Guideinfo.G1[gi] + b1[gi];//Adds The Packet And Updates The Data } PacketWriter Writer = new PacketWriter();//Writes the Packet Responce For Guide Window Writer.Create(OperationCode.SERVER_SEND_GUIDE); Writer.Byte(1); for (int b = 0; b < 8; ++b) { Writer.Byte(b1[b]); } client.Send(Writer.GetBytes()); } } catch (Exception ex) { Log.Exception(ex); } }
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Private Message Delete /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// public void PrivateMessageDelete() { try { PacketReader Reader = new PacketReader(PacketInformation.buffer); byte messageid = Reader.Byte(); client.Send(Packet.DeletePrivateMessage(messageid)); DB.query("delete FROM message WHERE idinfo='" + messageid + "' AND receiver='" + Character.Information.Name + "'"); return; } catch (Exception ex) { Log.Exception(ex); } }
void HandleRegisterIcon() { try { PacketReader reader = new PacketReader(PacketInformation.buffer); byte type = reader.Byte(); int iconlenght = reader.Int32(); string icon = reader.Text(); reader.Close(); string convertedicon = ConvertToHex(icon); //Save output to .dat file in hex formatting. } catch (Exception ex) { Console.WriteLine("Guild icon register error {0}", ex); } }
void CharacterDelete() { //Wrap our function in a catcher try { //Open our reader PacketReader Reader = new PacketReader(PacketInformation.buffer); byte unused = Reader.Byte(); string name = Reader.Text(); Reader.Close(); //Update character deletion information DB.query("UPDATE character SET deletedtime=dateadd(dd,7,getdate()) WHERE name='" + name + "'"); //Update character visual screen client.Send(Packet.ScreenSuccess(3)); } catch (Exception ex) { Log.Exception(ex); } }
public void CharacterCheck(byte[] buff) { //Wrap our function into a catcher try { //Open our reader PacketReader Reader = new PacketReader(buff); byte ignored = 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) { Log.Exception(ex); } }
public static void ClientCheck(Definitions.Clientdefinition sys) { PacketReader Reader = new PacketReader(sys.PacketInformation.buffer); byte Locale = Reader.Byte(); string Name = Reader.Text(); int Version = Reader.Int32(); Reader.Close(); try { if (Name == "SR_Client") { sys.client.Send(Core.Packets.Connect._1()); sys.client.Send(Core.Packets.Connect._2()); sys.client.Send(Core.Packets.Connect._3()); sys.client.Send(Core.Packets.Connect._4()); sys.client.Send(Core.Packets.Connect._5()); if (Version == Definitions.Serverdef.SilkroadClientVersion)// { sys.client.Send(Core.Packets.Connect.ActualVersion()); } else if (Version < Definitions.Serverdef.SilkroadClientVersion - 1)// { sys.client.Send(Core.Packets.Connect.ClientIsToOld()); } else if (Version > Definitions.Serverdef.SilkroadClientVersion)// { sys.client.Send(Core.Packets.Connect.ClientIsToNew()); } else { //sys.client.Send(Patch.SendPatchFiles()); } } } catch (Exception error) { Console.WriteLine("Connect.cs Error: {0}", error); } }
public void ActionMain() { try { if (Character.State.Die) return; PacketReader Reader = new PacketReader(PacketInformation.buffer); byte type = Reader.Byte(); if (type != 2) { if (Character.Action.Cast) return; if (Character.Information.Scroll) return; switch (Reader.Byte()) { case 1: // normal attack if (Character.Action.nAttack) return; if (Character.Action.sAttack) return; if (Character.Transport.Right) return; Reader.Byte(); int id = Reader.Int32(); Reader.Close(); object os = Helpers.GetInformation.GetObjects(id); if (/*(Character.Action.Target == id && Timer.Attack != null) || */ id == Character.Information.UniqueID) { Reader.Close(); return; } Character.Action.PickUping = false; Character.Action.Object = os; Character.Action.nAttack = true; Character.Action.Target = id; StartAttackTimer(); break; case 2://pickup if (Character.Action.nAttack) return; if (Character.Action.sAttack) return; if (Character.Action.sCasting) return; if (Character.Action.PickUping) return; Reader.Byte(); int id2 = Reader.Int32(); Reader.Close(); Character.Action.Target = id2; Character.Action.PickUping = true; StartPickupTimer(1000); break; case 3://trace if (Character.Action.sAttack) return; if (Character.Action.sCasting) return; if (Character.State.Sitting) return; if (Character.Stall.Stallactive) return; Reader.Byte(); int id3 = Reader.Int32(); Character.Action.Target = id3; Reader.Close(); client.Send(Packet.ActionState(1, 1)); Character.Action.PickUping = false; Player_Trace(id3); break; case 4://use skill if (Character.Action.nAttack) { StopAttackTimer(); System.Threading.Thread.Sleep(300); } Character.Action.UsingSkillID = Reader.Int32(); SkillMain(Reader.Byte(), Reader); break; case 5: int id4 = Reader.Int32(); byte b_index = SkillGetBuffIndex(id4); SkillBuffEnd(b_index); break; default: Console.WriteLine("ActionMain case: " + Reader.Byte()); break; } } else StopAttackTimer(); } catch (Exception ex) { Log.Exception(ex); } }
void MovementSkill(PacketReader Reader) { try { if (!Character.Action.movementskill) { Character.Action.movementskill = true; MovementSkillTimer(ObjData.Manager.SkillBase[Character.Action.UsingSkillID].Properties1["tele"] + 500); if (Character.Action.sAttack || Character.Action.sCasting) return; if (Character.Stat.SecondMP < ObjData.Manager.SkillBase[Character.Action.UsingSkillID].Mana) { client.Send(Packet.ActionPacket(2, 4)); return; } else { Character.Stat.SecondMP -= ObjData.Manager.SkillBase[Character.Action.UsingSkillID].Mana; UpdateMp(); if (Timer.Movement != null) { Timer.Movement.Dispose(); Character.Position.Walking = false; } byte xSec = Reader.Byte(), ySec = Reader.Byte(); int x = Reader.Int32(), z = Reader.Int32(), y = Reader.Int32(); Reader.Close(); float gamex = Formule.gamex((float)x, xSec); float gamey = Formule.gamey((float)y, ySec); float farkx = gamex - Character.Position.x; float farky = gamey - Character.Position.y; float hesapy = 0, hesapx = 0; while (hesapx + hesapy < ObjData.Manager.SkillBase[Character.Action.UsingSkillID].Properties2["tele"] / 10) { Character.Position.x += (farkx / 30); Character.Position.y += (farky / 30); hesapx += Math.Abs((farkx / 30)); hesapy += Math.Abs((farky / 30)); } PacketWriter Writer = new PacketWriter(); Writer.Create(OperationCode.SERVER_ACTION_DATA); Writer.Byte(1); Writer.Byte(2); Writer.Byte(0x30); int overid = Character.Ids.GetCastingID(); Writer.DWord(Character.Action.UsingSkillID);//skillid Writer.DWord(Character.Information.UniqueID); //charid Writer.DWord(overid);//overid Writer.DWord(0); Writer.Byte(8); Writer.Byte(xSec); Writer.Byte(ySec); Writer.DWord(Formule.packetx(Character.Position.x, xSec)); Writer.DWord(0); Writer.DWord(Formule.packety(Character.Position.y, ySec)); Send(Writer.GetBytes()); client.Send(Packet.ActionState(2, 0)); ObjectSpawnCheck(); } } } catch (Exception ex) { Log.Exception(ex); } }
public void FormedResponse() { try { //Open our packet data reader PacketReader reader = new PacketReader(PacketInformation.buffer); int Requestermodel = reader.Int32(); int Characterid = reader.Int32(); byte responsetype = reader.Byte(); reader.Close(); //Get player information PlayerMgr sys = Helpers.GetInformation.GetPlayer(Characterid); //If the requester is not in a party yet if (sys.Character.Network.Party == null) { //If party doesnt excist anymore or is not listed anymore if (Character.Network.Party != null) { //If not formed anymore if (!Character.Network.Party.IsFormed) { //Send cannot find party message sys.client.Send(Packet.Message(OperationCode.SERVER_PARTY_MESSAGES, Messages.UIIT_MSG_PARTYERR_CANT_FIND_PARTY)); return; } } //If party is null else { //Send cannot find party message sys.client.Send(Packet.Message(OperationCode.SERVER_PARTY_MESSAGES, Messages.UIIT_MSG_PARTYERR_CANT_FIND_PARTY)); return; } //Accept new member if (responsetype == 1) { //Check party type members allowed need message if full if (Character.Network.Party.Type == 4 && Character.Network.Party.Members.Count > 3) { //Add msg party full return; } if (Character.Network.Party.Type == 5 && Character.Network.Party.Members.Count > 7) { //Add msg party full return; } //Send packets to creator and invited member sys.client.Send(Packet.Party_Member(sys.Character.Information.UniqueID)); client.Send(Packet.PartyOwnerInformation(Character.Information.UniqueID)); //Set bools for check Character.Information.CheckParty = true; //Bool for requester sys.Character.Information.CheckParty = true; //Add member Character.Network.Party.Members.Add(sys.Character.Information.UniqueID); Character.Network.Party.MembersClient.Add(sys.client); //Send packet for each member in party foreach (int member in Character.Network.Party.Members) { if (member != 0) { PlayerMgr mainParty = Helpers.GetInformation.GetPlayer(member); //If the member is the owner if (mainParty != null) { if (mainParty.Character.Information.CharacterID == Character.Information.CharacterID) { //Just send update packet mainParty.client.Send(Packet.Party_DataMember(mainParty.Character.Network.Party)); } //For other members else { //Send member joined packet mainParty.client.Send(Packet.JoinResponseMessage(1)); //Send update packet mainParty.client.Send(Packet.Party_DataMember(Character.Network.Party)); //Set new party data mainParty.Character.Network.Party = Character.Network.Party; } } } } } //Refuse else { //If the party is a new party if (sys.Character.Network.Party.Members.Count < 1) { Character.Information.CheckParty = false; } else { sys.client.Send(Packet.Party_Member(sys.Character.Information.UniqueID)); Character.Information.CheckParty = false; } } } } catch (Exception ex) { Console.WriteLine("Formed response error {0}", ex); } }
void CharacterCreate() { //Start wrapper for catching errors try { //Check the amount of characters created (If 4 then we return). Todo: Check if any message shows up. if (DB.GetRowsCount("SELECT * FROM character WHERE account='" + Player.AccountName + "'") == 4) return; //Open our packet reader PacketReader Reader = new PacketReader(PacketInformation.buffer); byte tocheck = 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(); //Check player name #region Check Name //Check the character name before creation if (CharacterCheck(name)) { //If bad send informational packet client.Send(Packet.CharacterName(4)); //Finally return. return; } //Set and disable special characters if (name.Contains("[")) return; else if (name.Contains("GM")) return; else if (name.Contains("]")) return; else if (name.Contains("-")) return; #endregion //Begin creation for EU characters #region European characters //Check by model type to see what race we have. if (model >= 14715 && model <= 14745) { //Insert the basic information into the database DB.query("INSERT INTO character (account, name, chartype, volume, xsect, ysect, xpos, zpos, ypos, savearea,GuideData) VALUES ('" + Player.AccountName + "','" + name + "', '" + model + "', '" + volume + "','79','105','387','1000','1279','20','0000000000000000')"); //Insert reverse scroll data into the database DB.query("INSERT INTO character_rev (charname, revxsec, revysec, revx, revy, revz) VALUES ('" + name + "','79','105','1000','22','83')"); //Set definition for the character id information Player.CreatingCharID = Convert.ToInt32(DB.GetData("Select * from character Where name='" + name + "'", "id")); //Set default information (TODO: Check if all chars have same base). double MagDef = 3; double PhyDef = 6; double Parry = 11; double Hit = 11; double MinPhyA = 6; double MaxPhyA = 9; double MinMagA = 6; double MaxMagA = 10; //Open new framework ini reading Ini ini; //Open settings information for start items ini = new Ini(Environment.CurrentDirectory + @"\Settings\Settings.ini"); //5 Items max for starting characters string Item1 = ini.GetValue("European.Start", "Item1", "").ToString(); string Item2 = ini.GetValue("European.Start", "Item2", "").ToString(); string Item3 = ini.GetValue("European.Start", "Item3", "").ToString(); string Item4 = ini.GetValue("European.Start", "Item4", "").ToString(); string Item5 = ini.GetValue("European.Start", "Item5", "").ToString(); //The amount related information string Amount1 = ini.GetValue("European.Start", "Amount1", "").ToString(); string Amount2 = ini.GetValue("European.Start", "Amount2", "").ToString(); string Amount3 = ini.GetValue("European.Start", "Amount3", "").ToString(); string Amount4 = ini.GetValue("European.Start", "Amount4", "").ToString(); string Amount5 = ini.GetValue("European.Start", "Amount5", "").ToString(); //Add the custom items try { AddItem(Convert.ToInt32(Item1), Convert.ToByte(Amount1), 13, Player.CreatingCharID, 0); AddItem(Convert.ToInt32(Item2), Convert.ToByte(Amount2), 14, Player.CreatingCharID, 0); AddItem(Convert.ToInt32(Item3), Convert.ToByte(Amount3), 15, Player.CreatingCharID, 0); AddItem(Convert.ToInt32(Item4), Convert.ToByte(Amount4), 16, Player.CreatingCharID, 0); AddItem(Convert.ToInt32(Item5), Convert.ToByte(Amount5), 17, Player.CreatingCharID, 0); } catch (Exception) { } //Add the base items AddItem(Item[0], 0, 1, Player.CreatingCharID, 0); AddItem(Item[1], 0, 4, Player.CreatingCharID, 0); AddItem(Item[2], 0, 5, Player.CreatingCharID, 0); AddItem(Item[3], 0, 6, Player.CreatingCharID, 0); //Set mag defense MagDef += ObjData.Manager.ItemBase[Item[0]].Defans.MinMagDef; MagDef += ObjData.Manager.ItemBase[Item[1]].Defans.MinMagDef; MagDef += ObjData.Manager.ItemBase[Item[2]].Defans.MinMagDef; //Set phy defence PhyDef += ObjData.Manager.ItemBase[Item[0]].Defans.MinPhyDef; PhyDef += ObjData.Manager.ItemBase[Item[1]].Defans.MinPhyDef; PhyDef += ObjData.Manager.ItemBase[Item[2]].Defans.MinPhyDef; //Set parry information Parry += ObjData.Manager.ItemBase[Item[0]].Defans.Parry; Parry += ObjData.Manager.ItemBase[Item[1]].Defans.Parry; Parry += ObjData.Manager.ItemBase[Item[2]].Defans.Parry; //Set hit ratio Hit += ObjData.Manager.ItemBase[Item[3]].Attack.MinAttackRating; //Set phy attack MinPhyA += ObjData.Manager.ItemBase[Item[3]].Attack.Min_LPhyAttack; MaxPhyA += ObjData.Manager.ItemBase[Item[3]].Attack.Min_HPhyAttack; //Set mag attack MinMagA += ObjData.Manager.ItemBase[Item[3]].Attack.Min_LMagAttack; MaxMagA += ObjData.Manager.ItemBase[Item[3]].Attack.Min_HMagAttack; //If the 3rd item is a sword or a dark staff if (Item[3] == 10730 || Item[3] == 10734) { //Add the mag def information MagDef += ObjData.Manager.ItemBase[251].Defans.MinMagDef; //Add the phy def information PhyDef += ObjData.Manager.ItemBase[251].Defans.MinPhyDef; //Add parry ration Parry += ObjData.Manager.ItemBase[251].Defans.Parry; //Add shield item AddItem(10738, 0, 7, Player.CreatingCharID, 0); } //If the 3rd item is a crossbow if (Item[3] == 10733) { //We add our base bolts 250 AddItem(10376, 250, 7, Player.CreatingCharID, 0); } //Update database information for stats DB.query("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 + "'"); //Add base mastery's for europe characters 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 client.Send(Packet.ScreenSuccess(1)); #endregion } //If the character model is an chinese character else { #region Chinese characters DB.query("INSERT INTO character (account, name, chartype, volume,GuideData) VALUES ('" + Player.AccountName + "','" + name + "', '" + model + "', '" + volume + "','0000000000000000')"); DB.query("INSERT INTO character_rev (charname, revxsec, revysec, revx, revy, revz) VALUES ('" + name + "','168','79','911','1083','-32')"); Player.CreatingCharID = Convert.ToInt32(DB.GetData("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; CLFramework.Ini ini; ini = new CLFramework.Ini(Environment.CurrentDirectory + @"\Settings\Settings.ini"); string Item1 = ini.GetValue("Chinese.Start", "Item1", "").ToString(); string Item2 = ini.GetValue("Chinese.Start", "Item2", "").ToString(); string Item3 = ini.GetValue("Chinese.Start", "Item3", "").ToString(); string Item4 = ini.GetValue("Chinese.Start", "Item4", "").ToString(); string Item5 = ini.GetValue("Chinese.Start", "Item5", "").ToString(); string Amount1 = ini.GetValue("Chinese.Start", "Amount1", "").ToString(); string Amount2 = ini.GetValue("Chinese.Start", "Amount2", "").ToString(); string Amount3 = ini.GetValue("Chinese.Start", "Amount3", "").ToString(); string Amount4 = ini.GetValue("Chinese.Start", "Amount4", "").ToString(); string Amount5 = ini.GetValue("Chinese.Start", "Amount5", "").ToString(); try { AddItem(Convert.ToInt32(Item1), Convert.ToByte(Amount1), 13, Player.CreatingCharID, 0); AddItem(Convert.ToInt32(Item2), Convert.ToByte(Amount2), 14, Player.CreatingCharID, 0); AddItem(Convert.ToInt32(Item3), Convert.ToByte(Amount3), 15, Player.CreatingCharID, 0); AddItem(Convert.ToInt32(Item4), Convert.ToByte(Amount4), 16, Player.CreatingCharID, 0); AddItem(Convert.ToInt32(Item5), Convert.ToByte(Amount5), 17, Player.CreatingCharID, 0); } catch (Exception) { } AddItem(Item[0], 0, 1, Player.CreatingCharID, 0); AddItem(Item[1], 0, 4, Player.CreatingCharID, 0); AddItem(Item[2], 0, 5, Player.CreatingCharID, 0); AddItem(Item[3], 0, 6, Player.CreatingCharID, 0); MagDef += ObjData.Manager.ItemBase[Item[0]].Defans.MinMagDef; MagDef += ObjData.Manager.ItemBase[Item[1]].Defans.MinMagDef; MagDef += ObjData.Manager.ItemBase[Item[2]].Defans.MinMagDef; PhyDef += ObjData.Manager.ItemBase[Item[0]].Defans.MinPhyDef; PhyDef += ObjData.Manager.ItemBase[Item[1]].Defans.MinPhyDef; PhyDef += ObjData.Manager.ItemBase[Item[2]].Defans.MinPhyDef; Parry += ObjData.Manager.ItemBase[Item[0]].Defans.Parry; Parry += ObjData.Manager.ItemBase[Item[1]].Defans.Parry; Parry += ObjData.Manager.ItemBase[Item[2]].Defans.Parry; Hit += ObjData.Manager.ItemBase[Item[3]].Attack.MinAttackRating; MinPhyA += ObjData.Manager.ItemBase[Item[3]].Attack.Min_LPhyAttack; MaxPhyA += ObjData.Manager.ItemBase[Item[3]].Attack.Min_HPhyAttack; MinMagA += ObjData.Manager.ItemBase[Item[3]].Attack.Min_LMagAttack; MaxMagA += ObjData.Manager.ItemBase[Item[3]].Attack.Min_HMagAttack; if (Item[3] == 3632 || Item[3] == 3633) { MagDef += ObjData.Manager.ItemBase[251].Defans.MinMagDef; PhyDef += ObjData.Manager.ItemBase[251].Defans.MinPhyDef; Parry += ObjData.Manager.ItemBase[251].Defans.Parry; AddItem(251, 0, 7, Player.CreatingCharID, 0); } if (Item[3] == 3636) { AddItem(62, 250, 7, Player.CreatingCharID, 0); } #endregion DB.query("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 client.Send(Packet.ScreenSuccess(1)); #endregion } } catch (Exception ex) { Log.Exception(ex); } }
public void Chat() { try { List<int> lis = Character.Spawn; //Main getinfo = new Main(); PacketReader Reader = new PacketReader(PacketInformation.buffer); byte chatType = Reader.Byte(); byte chatIndex = Reader.Byte(); byte linkCount = Reader.Byte(); // added in 295 client switch (chatType) { case 1://town chat string Text = Reader.Text3(); Reader.Close(); Send(lis, Packet.ChatPacket(chatType, Character.Information.UniqueID, Text, null)); client.Send(Packet.ChatIndexPacket(chatType, chatIndex)); break; case 3://town chat pink if (Character.Information.GM == 1) { Text = Reader.Text3(); Reader.Close(); Send(lis, Packet.ChatPacket(chatType, Character.Information.UniqueID, Text, null)); client.Send(Packet.ChatIndexPacket(chatType, chatIndex)); break; } else { Disconnect("ban"); } break; case 2://Pm chat string toName = Reader.Text(); PlayerMgr sys = null; sys = Helpers.GetInformation.GetPlayerName(toName); if (sys != null || sys.Character.InGame) { Text = Reader.Text3(); Reader.Close(); sys.client.Send(Packet.ChatPacket(chatType, 0, Text, Character.Information.Name)); client.Send(Packet.ChatIndexPacket(chatType, chatIndex)); } break; case 4://Party chat if (Character.Network.Party != null) { Text = Reader.Text3(); Reader.Close(); Character.Network.Party.Send(Packet.ChatPacket(chatType, Character.Information.UniqueID, Text, Character.Information.Name)); client.Send(Packet.ChatIndexPacket(chatType, chatIndex)); } break; case 5://Guild Chat Text = Reader.Text3(); Reader.Close(); foreach (int member in Character.Network.Guild.Members) { //Make sure the member is there if (member != 0) { //If the user is not the newly invited member get player info PlayerMgr tomember = Helpers.GetInformation.GetPlayerMainid(member); //Send guild update packet if (tomember != null) { tomember.client.Send(Packet.ChatPacket(chatType, Character.Information.UniqueID, Text, Character.Information.Name)); } } } client.Send(Packet.ChatIndexPacket(chatType, chatIndex)); break; case 6://Global chat string FromName = Reader.Text(); Text = Reader.Text3(); Console.WriteLine(Text); Helpers.SendToClient.SendAll(Packet.ChatPacket(chatType, Character.Information.UniqueID, " " + Text, FromName)); break; case 7://Notice chat if (Character.Information.GM == 1) { Text = Reader.Text3(); Reader.Close(); Helpers.SendToClient.SendAll(sendnoticecon(chatType, Character.Information.UniqueID, Text, null)); } else { Disconnect("ban"); } break; case 9://Stall chat Text = Reader.Text3(); Reader.Close(); Character.Network.Stall.Send(Packet.ChatPacket(chatType, Character.Network.Stall.ownerID, Text, Character.Information.Name)); client.Send(Packet.ChatIndexPacket(chatType, chatIndex)); break; case 10://Academy chat Text = Reader.Text3(); Send(lis, Packet.ChatPacket(chatType, Character.Information.UniqueID, Text, Character.Information.Name)); break; case 11://Union chat Text = Reader.Text3(); Reader.Close(); if (!Character.Network.Guild.UnionActive) return; foreach (int member in Character.Network.Guild.UnionMembers) { //Make sure the member is there if (member != 0) { //If the user is not the newly invited member get player info PlayerMgr tomember = Helpers.GetInformation.GetPlayerMainid(member); //Send guild update packet if (tomember != null) { if (!tomember.Character.Network.Guild.SingleSend) { tomember.Character.Network.Guild.SingleSend = true; tomember.client.Send(Packet.ChatPacket(chatType, Character.Information.UniqueID, Text, Character.Information.Name)); } } } } foreach (int member in Character.Network.Guild.UnionMembers) { //Make sure the member is there if (member != 0) { //If the user is not the newly invited member get player info PlayerMgr tomember = Helpers.GetInformation.GetPlayerMainid(member); //Disable bool single send if (tomember != null) { tomember.Character.Network.Guild.SingleSend = false; } } } client.Send(Packet.ChatIndexPacket(chatType, chatIndex)); break; } } catch (Exception ex) { Console.WriteLine("Chat error {0}", ex); Log.Exception(ex); } }
public static void PlayerAutoPot(PacketWriter Writer,int ID) { PacketReader Reader = new PacketReader(System.IO.File.ReadAllBytes(Environment.CurrentDirectory + @"\PlayerData\AutoPotion\" + ID + ".ClientSettings")); Writer.Byte(Reader.Byte()); Writer.Byte(Reader.Byte()); Writer.Byte(Reader.Byte()); Writer.Byte(Reader.Byte()); Writer.Byte(Reader.Byte()); Writer.Byte(Reader.Byte()); Writer.Byte(Reader.Byte()); Reader.Close(); }
void CharacterRestore() { //Wrap our function in a catcher try { //Open packet readers PacketReader Reader = new PacketReader(PacketInformation.buffer); byte unused = Reader.Byte(); string name = Reader.Text(); Reader.Close(); //Update database information set delete time to 0 DB.query("UPDATE character SET deletedtime=0 WHERE name='" + name + "'"); //Update visually screen with packet client.Send(Packet.ScreenSuccess(5)); } catch (Exception ex) { Log.Exception(ex); } }
///////////////////////////////////////////////////////////////////////////////// // Item Switch ///////////////////////////////////////////////////////////////////////////////// public void ItemMain() { #region Item Actions try { if (Character.State.Die || Character.Information.Scroll) return; PacketReader Reader = new PacketReader(PacketInformation.buffer); byte iType = Reader.Byte(); switch (iType) { case 0: if (Character.State.Busy) return; ItemMove(Reader.Byte(), Reader.Byte(), Reader.Int16()); break; case 1: ItemMoveInStorage(Reader.Byte(), Reader.Byte(), Reader.Int16()); break; case 2: Player_MoveItemToStorage(Reader.Byte(), Reader.Byte(), Reader.Int32()); break; case 3: Player_MoveStorageItemToInv(Reader.Byte(), Reader.Byte(), Reader.Int32()); break; case 4: ItemMoveToExhangePage(Reader.Byte()); break; case 5: ItemMoveExchangeToInv(Reader.Byte()); break; case 8: Player_BuyItem(Reader.Byte(), Reader.Byte(), Reader.Int16(), Reader.Int32()); break; case 9: Player_SellItem(Reader.Byte(), Reader.Int16(), Reader.UInt16()); break; case 7: if (Character.State.Busy) return; Player_DropItem(Reader.Byte()); break; case 10: if (Character.State.Busy) return; Player_DropGold(Reader.UInt64()); break; case 11: Player_TakeGoldW(iType, Reader.Int64()); break; case 12: Player_GiveGoldW(iType, Reader.Int64()); break; case 13: ItemExchangeGold(Reader.Int64()); break; case 16: MovePetToPet(Reader.Int32(), Reader.Byte(), Reader.Byte(), Reader.Int16()); break; case 24: //Player_BuyItemFromMall(Reader.Byte(), Reader.Byte(), Reader.Byte(), Reader.Byte(), Reader.Byte(), Reader.Text()); break; case 26: MoveItemFromPet(Reader.Int32(), Reader.Byte(), Reader.Byte()); break; case 27: MoveItemToPet(Reader.Int32(), Reader.Byte(), Reader.Byte()); break; case 29: ItemMoveInStorage(Reader.Byte(), Reader.Byte(), Reader.Int16());//Move inside guild storage break; case 30: Player_MoveItemToStorage(Reader.Byte(), Reader.Byte(), Reader.Int32());//Move to guild storage break; case 31: Player_MoveStorageItemToInv(Reader.Byte(), Reader.Byte(), Reader.Int32());//Move from guild storage break; case 32: Player_GiveGoldW(iType, Reader.Int64());//Guild storage break; case 33: Player_TakeGoldW(iType, Reader.Int64());//Guild storage break; case 35: ItemAvatarUnEquip(Reader.Byte(), Reader.Byte()); break; case 36: ItemAvatarEquip(Reader.Byte(), Reader.Byte()); break; default: Print.Format("Unknown Item Function:{0}:{1}", iType, Decode.StringToPack(PacketInformation.buffer)); break; } Reader.Close(); } catch (Exception ex) { Log.Exception(ex); } #endregion }
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Job Ranks /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// public void RankList() { try { PacketReader Reader = new PacketReader(PacketInformation.buffer); ///////////////////////////////////////////////////////////////////////////////////// int Notneeded = Reader.Int32(); byte Type = Reader.Byte(); byte Choice = Reader.Byte(); ///////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////// // Rank Trader ///////////////////////////////////////////////////////////////////////////////////// if (Type == 1) { ///////////////////////////////////////////////////////////////////////////////////// // Rank Trader Merchant Activity ///////////////////////////////////////////////////////////////////////////////////// if (Choice == 0) { try { DB readsql = new DB("SELECT TOP 50 * FROM rank_job_activity WHERE job_type='1'"); int begin = 0; int count = readsql.Count(); using (SqlDataReader readinfo = readsql.Read()) { while (readinfo.Read()) { for (begin = 0; begin < count; ) { begin++; if (begin.Equals(count)) { client.Send(Packet.RankListsActivityTrader()); return; } } return; } } } catch (Exception ex) { Log.Exception(ex); } } ///////////////////////////////////////////////////////////////////////////////////// // Rank Trader Weekly Donation ///////////////////////////////////////////////////////////////////////////////////// else if (Choice == 1) { try { DB readsql = new DB("SELECT TOP 50 * FROM rank_job_donate WHERE job_type='1'"); int begin = 0; int count = readsql.Count(); using (SqlDataReader readinfo = readsql.Read()) { while (readinfo.Read()) { for (begin = 0; begin < count; ) { begin++; if (begin.Equals(count)) { client.Send(Packet.RankListsDonateTrader()); return; } } return; } } } catch (Exception ex) { Log.Exception(ex); } } } ///////////////////////////////////////////////////////////////////////////////////// // Rank List Thief ///////////////////////////////////////////////////////////////////////////////////// else if (Type == 3) { ///////////////////////////////////////////////////////////////////////////////////// // Rank List Thief Activity ///////////////////////////////////////////////////////////////////////////////////// if (Choice == 0) { try { DB readsql = new DB("SELECT TOP 50 * FROM rank_job_activity WHERE job_type='3'"); int begin = 0; int count = readsql.Count(); using (SqlDataReader readinfo = readsql.Read()) { while (readinfo.Read()) { for (begin = 0; begin < count; ) { begin++; if (begin.Equals(count)) { client.Send(Packet.RankListsActivityThief()); return; } } return; } } } catch (Exception ex) { Log.Exception(ex); } } ///////////////////////////////////////////////////////////////////////////////////// // Rank List Thief Weekly Donation ///////////////////////////////////////////////////////////////////////////////////// else if (Choice == 1) { try { DB readsql = new DB("SELECT TOP 50 * FROM rank_job_donate WHERE job_type='2'"); int begin = 0; int count = readsql.Count(); using (SqlDataReader readinfo = readsql.Read()) { while (readinfo.Read()) { for (begin = 0; begin < count; ) { begin++; if (begin.Equals(count)) { client.Send(Packet.RankListsDonateThief()); return; } } return; } } } catch (Exception ex) { Log.Exception(ex); } } } ///////////////////////////////////////////////////////////////////////////////////// // Rank List Hunter ///////////////////////////////////////////////////////////////////////////////////// else if (Type == 2) //Type 2 = Hunter { ///////////////////////////////////////////////////////////////////////////////////// // Rank List Hunter Activity ///////////////////////////////////////////////////////////////////////////////////// if (Choice == 0) { try { DB readsql = new DB("SELECT TOP 50 * FROM rank_job_activity WHERE job_type='2'"); int begin = 0; int count = readsql.Count(); using (SqlDataReader readinfo = readsql.Read()) { while (readinfo.Read()) { for (begin = 0; begin < count; ) { begin++; if (begin.Equals(count)) { client.Send(Packet.RankListsActivityHunter()); return; } } return; } } } catch (Exception ex) { Log.Exception(ex); } } ///////////////////////////////////////////////////////////////////////////////////// // Rank List Hunter Weekly Contribution ///////////////////////////////////////////////////////////////////////////////////// else if (Choice == 1) { try { DB readsql = new DB("SELECT TOP 50 * FROM rank_job_donate WHERE job_type='3'"); int begin = 0; int count = readsql.Count(); using (SqlDataReader readinfo = readsql.Read()) { while (readinfo.Read()) { for (begin = 0; begin < count; ) { begin++; if (begin.Equals(count)) { client.Send(Packet.RankListsDonateHunter()); return; } } return; } } } catch (Exception ex) { Log.Exception(ex); } } } } catch (Exception ex) { Log.Exception(ex); } }
//########################################################################################### // Start teleporting //########################################################################################### public void Teleport_Start() { try { lock (this) { //Checks before we continue if (Character.Action.PickUping) return; //Timer checks StopTimers(); //Open the packet reader PacketReader Reader = new PacketReader(PacketInformation.buffer); //Teleport id int teleportidinfo = Reader.Int32(); //Number byte number = Reader.Byte(); //Teleport selected int teleportselect = Reader.Int32(); Reader.Close(); //Find price information int price = ObjData.Manager.TeleportPrice.Find(pc => (pc.ID == number)).price; //If the user has less gold then it costs if (Character.Information.Gold < price) { //Send error message client.Send(Packet.Message(OperationCode.SERVER_TELEPORTSTART, Messages.UIIT_MSG_INTERACTION_FAIL_NOT_ENOUGH_MONEY)); return; } //If the user level is lower then the required level if (ObjData.Manager.TeleportPrice.Find(dd => (dd.ID == teleportselect)).level > 0 && Character.Information.Level < ObjData.Manager.TeleportPrice.Find(dd => (dd.ID == teleportselect)).level) { client.Send(Packet.Message(OperationCode.SERVER_TELEPORTSTART, Messages.UIIT_MSG_INTERACTION_FAIL_OUT_OF_REQUIRED_LEVEL_FOR_TELEPORT)); return; } //If the user is currently with job transport (TODO). //Update players gold Character.Information.Gold -= price; //Update players gold in database SaveGold(); //Close buffs BuffAllClose(); //Send teleport packet #1 client.Send(Packet.TeleportStart()); //Set state Character.InGame = false; //Update location Teleport_UpdateXYZ(Convert.ToByte(teleportselect)); //Despawn objects ObjectDeSpawnCheck(); //Despawn player to other players DeSpawnMe(); //Required client.Send(Packet.TeleportStart2()); //Send loading screen image client.Send(Packet.TeleportImage(ObjData.Manager.PointBase[Convert.ToByte(teleportselect)].xSec, ObjData.Manager.PointBase[Convert.ToByte(teleportselect)].ySec)); //Set bool Character.Teleport = true; /* List<ObjData.slotItem> EquipedItems = new List<ObjData.slotItem>(); for (byte q = 0; q < 8; q++) { EquipedItems.Add(GetItem((uint)Character.Information.CharacterID, q, 0)); } for (byte qp = 9; qp < 14; qp++) { EquipedItems.Add(GetItem((uint)Character.Information.CharacterID, qp, 0)); } //Needs fixing will check it later. /*foreach (ObjData.slotItem sitem in EquipedItems) { if (ObjData.Manager.ItemBlue[sitem.dbID].totalblue > 0) { LoadBluesid(sitem.dbID); AddRemoveBlues(this, sitem, false); } }*/ } } catch (Exception ex) { Console.WriteLine("Teleport select error {0}", ex); Log.Exception(ex); } }
public void NormalRequest() { try { //Create new packet reader PacketReader Reader = new PacketReader(PacketInformation.buffer); //Get invited member int Target = Reader.Int32(); //Get party type byte PartyType = Reader.Byte(); //Close reader Reader.Close(); //Get target player information PlayerMgr InvitedPlayer = Helpers.GetInformation.GetPlayer(Target); //First we check the our own player level if (Character.Information.Level < 5) { //Send message //Return return; } //Check target level if (InvitedPlayer.Character.Information.Level < 5) { //Send message //Return return; } //Set target information for invited player InvitedPlayer.Character.Network.TargetID = Character.Information.UniqueID; //If the player inviting, has no party yet. if (Character.Network.Party == null) { //Create new party WorldMgr.party Party = new WorldMgr.party(); //Set leader of party Party.LeaderID = Character.Information.UniqueID; //Set party type Party.Type = PartyType; //Add to party net info Character.Network.Party = Party; } //If the target player has no party yet. if (InvitedPlayer.Character.Network.Party == null) { //Send invitation packet InvitedPlayer.client.Send(Packet.PartyRequest(2, this.Character.Information.UniqueID, PartyType)); //Set invite bools InvitedPlayer.Character.Information.CheckParty = true; Character.Information.CheckParty = true; } } //Catch bad exception errors catch (Exception ex) { //Write information to the console Console.WriteLine(ex); //Write information to the debug log } }
public static void PlayerQuickBar(PacketWriter Writer, int ID) { PacketReader Reader = new PacketReader(System.IO.File.ReadAllBytes(Environment.CurrentDirectory + @"\PlayerData\Hotkey\" + ID + ".ClientSettings")); byte amm = 0; int[] skillid = new int[51]; byte[] slotn = new byte[51]; for (byte i = 0; i <= 50; i++) { slotn[i] = Reader.Byte(); if (slotn[i] != 0) { skillid[i] = Reader.Int32(); amm++; } else Reader.Skip(4); } Writer.Byte(amm); for (byte i = 0; i <= 50; i++) { if (slotn[i] != 0) { Writer.Byte(i); Writer.Byte(slotn[i]); Writer.DWord(skillid[i]); } } Reader.Close(); }