///////////////////////////////////////////////////////////////////////////////// // 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); } }
/////////////////////////////////////////////////////////////////////////// // 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)); }
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 } }
public void GuildTransferLeaderShip() { try { //Create new packet reader PacketReader Reader = new PacketReader(PacketInformation.buffer); //Read guild id int Guildid = Reader.Int32(); //Read guild member id to transfer to int GuildMemberID = Reader.Int32(); //Close reader Reader.Close(); //Get detailed player information PlayerMgr NewLeader = Helpers.GetInformation.GetPlayerid(GuildMemberID); //Update database DB.query("UPDATE guild_members SET guild_rank='10',guild_perm_join='0',guild_perm_withdraw='0',guild_perm_union='0',guild_perm_storage='0',guild_perm_notice='0' WHERE guild_member_id='" + Character.Information.CharacterID + "'"); DB.query("UPDATE guild_members SET guild_rank='0',guild_perm_join='1',guild_perm_withdraw='1',guild_perm_union='1',guild_perm_storage='1',guild_perm_notice='1' WHERE guild_member_id='" + GuildMemberID + "'"); //Repeat for each member in our guild foreach (int member in Character.Network.Guild.Members) { //Make sure member is not null if (member != 0) { //Get information for the guildmember PlayerMgr guildmember = Helpers.GetInformation.GetPlayerMainid(member); //Make sure the guildmember isnt null if (guildmember != null) { //Send update packet of new leader guildmember.client.Send(Packet.GuildUpdate(Character, 3, GuildMemberID, 0, 0)); } } } //Send message to old owner PacketWriter Writer = new PacketWriter(); //Add opcode Writer.Create(OperationCode.SERVER_GUILD_TRANSFER_MSG); //Static byte 1 Writer.Byte(1); //Send bytes to client client.Send(Writer.GetBytes()); } //If a bad exception error happens catch (Exception ex) { Log.Exception(ex); } }
///////////////////////////////////////////////////////////////////////// // Union Apply ///////////////////////////////////////////////////////////////////////// public void unionapply() { try { //Open our packet reader PacketReader Reader = new PacketReader(PacketInformation.buffer); //Get target id (Targeted). int Target = Reader.Int32(); //Close reader Reader.Close(); //Get target details PlayerMgr targetplayer = Helpers.GetInformation.GetPlayer(Target); //Make sure the target is still there if (targetplayer != null) { //If allready in union if (targetplayer.Character.Network.Guild.UnionActive) return; //Set bools for both players targetplayer.Character.State.UnionApply = true; Character.State.UnionApply = true; //Set target player to us targetplayer.Character.Network.TargetID = Character.Information.UniqueID; //Send request to targeted player targetplayer.client.Send(Packet.PartyRequest(6, Character.Information.UniqueID, 0)); } } catch (Exception ex) { Log.Exception(ex); } }
public void Mastery_Skill_Up() { PacketReader Reader = new PacketReader(PacketInformation.buffer); int SkillID = Reader.Int32(); /*if (Array.Exists(ObjData.Manager.SkillBase, GetSkill => GetSkill.ID == SkillID) == false) { Console.WriteLine("SkillID bulunamadı:{0}", Character.Information.Name); } */ if (Character.Information.SkillPoint < ObjData.Manager.SkillBase[SkillID].SkillPoint) { Console.WriteLine("SP LAZIM"); return; } int check = DB.GetRowsCount("SELECT * FROM saved_skills WHERE skillid = " + SkillID + " AND owner=" + Character.Information.CharacterID); if (check == 1) { client.Send(Packet.Message(OperationCode.SERVER_SKILL_UPDATE, Messages.UIIT_STT_SKILL_LEARN_MASTERY_LIMIT)); return; } else { Character.Stat.Skill.AmountSkill++; Character.Stat.Skill.Skill[Character.Stat.Skill.AmountSkill] = SkillID; } if (SkillGetOpened(SkillID)) { Character.Information.SkillPoint -= ObjData.Manager.SkillBase[SkillID].SkillPoint; client.Send(Packet.InfoUpdate(2, Character.Information.SkillPoint, 0)); client.Send(Packet.SkillUpdate(SkillID)); client.Send(Packet.PlayerStat(Character)); SaveSkill(SkillID); } else { return; } }
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); } }
public void PartyAddmembers() { try { //Create new packet reader PacketReader Reader = new PacketReader(PacketInformation.buffer); //Read target id int targetid = Reader.Int32(); //Close packet reader Reader.Close(); //Get detailed information from target PlayerMgr InvitedPlayer = Helpers.GetInformation.GetPlayer(targetid); //Check if the targeted player allready is in a party. if (InvitedPlayer.Character.Network.Party == null) { //Set target id of target player to our id InvitedPlayer.Character.Network.TargetID = this.Character.Information.UniqueID; //Send request InvitedPlayer.client.Send(Packet.PartyRequest(2, Character.Information.UniqueID, Character.Network.Party.Type)); } } //Write bad exception errors catch (Exception ex) { //Write error to the console. Console.WriteLine(ex); //Write error to the debug log } }
public void SelectObject() { try { if (Character.Information.Scroll) return; PacketReader Reader = new PacketReader(PacketInformation.buffer); int objectid = Reader.Int32(); if (objectid == 0) return; //Character.Action.Target = objectid; //if (Character.Position.Walking) StopPlayerMovementO(objectid); if (objectid == Character.Information.UniqueID) return; WorldMgr.Monsters o = Helpers.GetInformation.GetObject(objectid); if (o != null) { byte[] bb = Packet.SelectObject(objectid, o.ID, o.LocalType, o.HP); if (bb == null) return; client.Send(bb); //Character.Action.Object = o; return; } PlayerMgr sys = Helpers.GetInformation.GetPlayers(objectid); if (o == null && sys != null) { client.Send(Packet.SelectObject(objectid, 0, 5, sys.Character.Stat.Hp)); Character.Action.Object = sys; return; } Reader.Close(); } catch (Exception ex) { Console.WriteLine("Selectobject error: {0}", ex); } }
public void GuildWarGold() { PacketReader Reader = new PacketReader(PacketInformation.buffer); int guildid = Reader.Int32(); Reader.Close(); if (Character.Guild.GuildWarGold == 0) { //Send Packet Message No War Gold Received client.Send(Packet.GuildWarMsg(2)); } else { //Sniff packet for war gold } }
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); } }
public void HandleClosePet() { try { PacketReader Reader = new PacketReader(PacketInformation.buffer); int petid = Reader.Int32(); if (petid == Character.Transport.Horse.UniqueID) { Send(Packet.Player_UpToHorse(Character.Information.UniqueID, false, petid)); client.Send(Packet.PetSpawn(petid, 1, Character.Transport.Horse)); Character.Transport.Horse.DeSpawnMe(); Character.Transport.Right = false; if (Character.Position.Walking) Timer.Movement.Dispose(); } } 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 EnterStall() { try { if (Character.Information.Scroll) return; PacketReader Reader = new PacketReader(PacketInformation.buffer); PlayerMgr staller = Helpers.GetInformation.GetPlayer(Reader.Int32()); Character.Network.Stall = staller.Character.Network.Stall; staller.Character.Network.Stall.Members.Add(Character.Information.UniqueID); staller.Character.Network.Stall.MembersClient.Add(client); client.Send(Packet.EnterStall(Character.Information.UniqueID, staller.Character.Network.Stall)); staller.Character.Network.Stall.Send(Packet.StallPlayerUpdate(Character.Information.UniqueID, 2), client); Character.Stall.Stallactive = true; } catch (Exception ex) { Log.Exception(ex); } }
public void GuildTitle() { //Wrap our function inside a catcher try { //Extra hack check if (Character.Network.Guild.Level < 4) return; //Create new packet reader PacketReader Reader = new PacketReader(PacketInformation.buffer); //Read integer guild member selected int SelectedGuildMember = Reader.Int32(); //Read short lenght of title for guild member short GuildMemberTitleLEN = Reader.Int16(); //Read string guild member title string GuildMemberTitle = Reader.String(GuildMemberTitleLEN); //Close packet reader Reader.Close(); //Get selected guild member information PlayerMgr playerinfo = Helpers.GetInformation.GetPlayerMainid(SelectedGuildMember); //Make sure the character is still there if (playerinfo.Character != null) { //Update database set new title DB.query("UPDATE guild_members SET guild_grant='" + GuildMemberTitle + "' WHERE guild_member_id='" + playerinfo.Character.Information.CharacterID + "'"); //Send new character guild title update to each player in spawn reach Send(Packet.GuildSetTitle(Character.Guild.GuildID, playerinfo.Character.Information.Name, GuildMemberTitle)); //Send Final packet to client playerinfo.client.Send(Packet.GuildSetTitle2(Character.Guild.GuildID, SelectedGuildMember, GuildMemberTitle)); } } //Catch bad exception errors 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 }
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 SkillMain(byte type, PacketReader Reader) { try { if (!SkillGetOpened(Character.Action.UsingSkillID)) return; client.Send(Packet.ActionState(1, 1)); switch (type) { case 1: if (Character.Action.sAttack) return; if (Character.Action.sCasting) return; if (Character.Action.nAttack) StopAttackTimer(); if (!Base.Skill.CheckWeapon(Character.Information.Item.wID, Character.Action.UsingSkillID)) { client.Send(Packet.Message(OperationCode.SERVER_ACTION_DATA, Messages.UIIT_SKILL_USE_FAIL_WRONGWEAPON)); client.Send(Packet.Messages2(OperationCode.SERVER_ACTIONSTATE, Messages.UIIT_SKILL_USE_FAIL_WRONGWEAPON)); return; } Character.Action.Target = Reader.Int32(); Character.Action.Skill.MainSkill = Character.Action.UsingSkillID; Character.Action.UsingSkillID = 0; Character.Action.Object = Helpers.GetInformation.GetObjects(Character.Action.Target); if (ObjData.Manager.SkillBase[Character.Action.Skill.MainSkill].isAttackSkill) { Character.Action.Skill = Base.Skill.Info(Character.Action.Skill.MainSkill, Character); if (!Character.Action.Skill.canUse || Character.Action.Target == Character.Information.UniqueID) return; WorldMgr.Monsters o = null; if (Character.Action.Object != null && Character.Action.Object.GetType().ToString() == "WorldMgr.Monsters") { o = Character.Action.Object as WorldMgr.Monsters; //if (o.AgressiveDMG == null) o.AgressiveDMG = new List<_agro>(); //if (Character.Action.Skill.OzelEffect == 5 && o.State != 4) return; //if (o.State == 4 && Character.Action.Skill.OzelEffect != 5) return; } if (o == null && Character.Action.Object != null && Character.Action.Object.GetType().ToString() == "CLGameServer.PlayerMgr") { if (!Character.Information.PvP || Character.State.Die) return; PlayerMgr sys = Character.Action.Object as PlayerMgr; //if (Character.Action.Skill.OzelEffect == 5 && sys.Character.State.LastState != 5) return; //if (sys.Character.State.LastState == 4 && Character.Action.Skill.OzelEffect != 5) return; } Character.Action.sAttack = true; ActionSkillAttack(); Reader.Close(); } else { Character.Action.sAttack = true; ActionSkill(); } break; case 0: SkillBuff(); break; case 2: MovementSkill(Reader); break; default: Console.WriteLine("Skillmain type: {0}", type); break; } } 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 JoinFormedParty() { try { PacketReader Reader = new PacketReader(PacketInformation.buffer); //Packet reader party id int PartyID = Reader.Int32(); Reader.Close(); //Checks if (PartyID == 0) return; //Get character id from the party id int Playerid = Helpers.GetInformation.GetPartyleader(PartyID); //Get character information PlayerMgr sys = Helpers.GetInformation.GetPlayer(Playerid); //Open the invite sys.client.Send(Packet.JoinFormedRequest(Character, sys.Character)); } catch (Exception ex) { Console.WriteLine("Formed party join error {0}", 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 GuildPromote() { try { //Read client information int32 id PacketReader reader = new PacketReader(PacketInformation.buffer); int guildid = reader.Int32(); reader.Close(); //When a guild has reached its max level if (Character.Network.Guild.Level == 5) { //Send packet to client and return (Message level up max). client.Send(Packet.Message(OperationCode.SERVER_GUILD_WAIT, Messages.UIIT_MSG_ERROR_GUILD_LEVEL_UP_FULL)); return; } //Definition for gold needed int GoldRequired; //Definition for guild points needed int GuildPointRequired; //Check if player is allready in process of upgrading if (!IsUpgrading) { //Set bool to true, so we cant dupe IsUpgrading = true; //Load player guild information before we continue (Check last info). LoadPlayerGuildInfo(false); //Create switch on guildl evel switch (Character.Network.Guild.Level) { case 1: GoldRequired = 3000000; GuildPointRequired = 5400; break; case 2: GoldRequired = 9000000; GuildPointRequired = 50400; break; case 3: GoldRequired = 15000000; GuildPointRequired = 135000; break; case 4: GoldRequired = 21000000; GuildPointRequired = 378000; break; default: return; } //Set new guild level definition + 1 int NewLevel = Character.Network.Guild.Level + 1; //Set new guild storage slot amount int NewStorageSlots = Character.Network.Guild.StorageSlots + 30; //If character's gold is not enough if (Character.Information.Gold < GoldRequired) { //Send message to client client.Send(Packet.Message(OperationCode.SERVER_GUILD_PROMOTE_MSG, Messages.UIIT_MSG_ERROR_GUILD_LEVEL_UP_GOLD_DEFICIT)); return; } //Not enough guildpoints if (Character.Network.Guild.PointsTotal < GuildPointRequired) { //Send client message client.Send(Packet.Message(OperationCode.SERVER_GUILD_PROMOTE_MSG, Messages.UIIT_MSG_ERROR_GUILD_LEVEL_UP_GP_DEFICIT)); return; } //Max level if (Character.Network.Guild.Level == 5) { //Send client message client.Send(Packet.Message(OperationCode.SERVER_GUILD_PROMOTE_MSG, Messages.UIIT_MSG_ERROR_GUILD_LEVEL_UP_FULL)); return; } //If everything else is fine else //Upgrade guild initiate { //If max level return just incase. if (Character.Network.Guild.Level == 5) return; //Reduct guildpoints Character.Network.Guild.PointsTotal -= GuildPointRequired; //If the upgrade is final upgrade set points to 0 if (Character.Network.Guild.Level == 4) Character.Network.Guild.PointsTotal = 0; //Reduct gold Character.Information.Gold -= GoldRequired; //Send update information to client client.Send(Packet.InfoUpdate(1, Character.Network.Guild.PointsTotal, 0)); //Send success message to client client.Send(Packet.PromoteOrDisband(2)); //Update guild in database DB.query("UPDATE guild SET guild_level='" + NewLevel + "',guild_points='" + Character.Network.Guild.PointsTotal + "',guild_storage_slots='" + NewStorageSlots + "' WHERE guild_name='" + Character.Network.Guild.Name + "'"); //Repeat for each member in our guild foreach (int member in Character.Network.Guild.Members) { //Check if memeber is not null if (member != 0) { //Get detailed member information PlayerMgr memberinfo = Helpers.GetInformation.GetPlayerMainid(member); //Make sure the member is not null if (memberinfo != null) { //Reload information for the current guild member memberinfo.LoadPlayerGuildInfo(false); //Send guild update packet for current guild member memberinfo.client.Send(Packet.GuildUpdate(Character, 5, 0, 0, 0)); } } } //Save player's gold SaveGold(); //Send update gold packet to client client.Send(Packet.UpdateGold(Character.Information.Gold)); } } //Disable the bool so we can upgrade again IsUpgrading = false; } //If any error accures catch (Exception ex) { Log.Exception(ex); } }
public void PartyBan() { try { //Open our packet reader PacketReader Reader = new PacketReader(PacketInformation.buffer); int TargetID = Reader.Int32(); Reader.Close(); //Get targeted player information PlayerMgr s = Helpers.GetInformation.GetPlayers(TargetID); //Remove id of the member Character.Network.Party.Members.Remove(s.Character.Information.UniqueID); //Remove the client of the member Character.Network.Party.MembersClient.Remove(s.client); //Repeat for each member the updated party information foreach (int partymember in Character.Network.Party.Members) { //Get player information for the next member PlayerMgr partym = Helpers.GetInformation.GetPlayer(partymember); //Remove the kicked player partym.Character.Network.Party.Members.Remove(s.Character.Information.UniqueID); partym.Character.Network.Party.MembersClient.Remove(s.client); //If we have one member remaining in the party we disband the party if (partym.Character.Network.Party.Members.Count == 1) { //If its formed in the list remove the listening if (partym.Character.Network.Party.IsFormed) partym.DeleteFormedParty(Character.Network.Party.ptid); //Send update packet to the party member partym.client.Send(Packet.Party_Data(1, 0)); //Send update packet to the current player client.Send(Packet.Party_Data(1, 0)); //Set party to null for the current player Character.Network.Party = null; //Set party to null for the remaining member partym.Character.Network.Party = null; //Set bool for current player Character.Information.CheckParty = false; //Set bool for the remaining party member partym.Character.Information.CheckParty = false; } //If there are more members (Not autodisband party). else { //Send the update packet to the party member partym.client.Send(Packet.Party_Data(3, TargetID)); } } //Set the kicked player bool to false s.Character.Information.CheckParty = false; //Remove the party network for the kicked player s.Character.Network.Party = null; //Send update packet to the kicked player s.client.Send(Packet.Party_Data(1, 0)); } catch (Exception ex) { Console.WriteLine("Party Ban Error {0}", 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 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(); }
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // 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); } }
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 void DeleteFormedParty(int partynetid) { try { //If the party is beeing deleted manually from listening if (partynetid == 0) { //Read our packet data PacketReader Reader = new PacketReader(PacketInformation.buffer); //Read party id integer int partyid = Reader.Int32(); //Close packet reader Reader.Close(); //Find the related party id Helpers.Manager.Party.Remove(Helpers.Manager.Party.Find(delegate (WorldMgr.party pt) { //If found return the information return pt.IsFormed && (pt.ptid == partyid); })); //Send removal packet for listening PacketWriter Writer = new PacketWriter(); Writer.Create(OperationCode.SERVER_DELETE_FORMED_PARTY); Writer.Byte(1); Writer.DWord(partyid); client.Send(Writer.GetBytes()); //Set party state Character.Network.Party.IsFormed = false; } //If listening is deleted due to auto disband else { //Find the related party given from partynetid Helpers.Manager.Party.Remove(Helpers.Manager.Party.Find(delegate (WorldMgr.party pt) { //Return information return pt.IsFormed && (pt.ptid == partynetid); })); //Remove from listening PacketWriter Writer = new PacketWriter(); Writer.Create(OperationCode.SERVER_DELETE_FORMED_PARTY); Writer.Byte(1); Writer.DWord(partynetid); client.Send(Writer.GetBytes()); //Set party state Character.Network.Party.IsFormed = false; } //If theres only one member leave and remove party data if (Character.Network.Party.Members.Count == 1) { Character.Network.Party.Members.Remove(Character.Information.UniqueID); Character.Network.Party.MembersClient.Remove(client); Character.Network.Party = null; } } //Catch bad exception errors catch (Exception ex) { Log.Exception(ex); } }