void GuildPermissions() { try { //Create new packet reader PacketReader Reader = new PacketReader(PacketInformation.buffer); //Skip first Reader.Skip(1); //Read member id int memberid = Reader.Int32(); //Read permission byte byte permissions = (byte)Reader.Int32(); //Set new char bits 8 char[] bits = new char[8]; //Repeat for each 8 bits for (int i = 0; i < 8; ++i) bits[i] = (char)0; //Convert bits to string / to char array bits = Convert.ToString(permissions, 2).ToCharArray(); //Close reader Reader.Close(); //Set amount to player targetindex int targetindex = this.Character.Network.Guild.MembersInfo.FindIndex(i => i.MemberID == memberid); //If character is online if (this.Character.Network.Guild.MembersInfo[targetindex].Online) { //Get detailed player information Systems member = GetPlayerMainid(memberid); //Set bits member.Character.Network.Guild.joinRight = bits[4] == '1' ? true : false; member.Character.Network.Guild.withdrawRight = bits[3] == '1' ? true : false; member.Character.Network.Guild.unionRight = bits[2] == '1' ? true : false; member.Character.Network.Guild.guildstorageRight = bits[0] == '1' ? true : false; member.Character.Network.Guild.noticeeditRight = bits[1] == '1' ? true : false; } // set new amount to every guild members guild class foreach (int m in Character.Network.Guild.Members) { //Set int index (Find member id) int index = Character.Network.Guild.MembersInfo.FindIndex(i => i.MemberID == m); //If the character is online if (Character.Network.Guild.MembersInfo[index].Online) { //Get detailed information of the player Systems sys = Systems.GetPlayerMainid(m); //Set new guild player Global.guild_player mygp = new Global.guild_player(); int myindex = 0; //Repeat for each player foreach (Global.guild_player gp in sys.Character.Network.Guild.MembersInfo) { //if the member id equals the player if (gp.MemberID == memberid) { //Set my gp mygp = gp; //Set bits mygp.joinRight = bits[4] == '1' ? true : false; mygp.withdrawRight = bits[3] == '1' ? true : false; mygp.unionRight = bits[2] == '1' ? true : false; mygp.guildstorageRight = bits[0] == '1' ? true : false; mygp.noticeeditRight = bits[1] == '1' ? true : false; break; } //Index ++ myindex++; } //Set membersinfo index as mygp sys.Character.Network.Guild.MembersInfo[myindex] = mygp; } } //Update guild database information rights MsSQL.UpdateData("UPDATE guild_members SET guild_perm_join='" + bits[4] + "',guild_perm_withdraw='" + bits[3] + "',guild_perm_union='" + bits[2] + "',guild_perm_storage='" + bits[0] + "',guild_perm_notice='" + bits[1] + "' WHERE guild_member_id='" + memberid + "'"); //Send to everyone in guild update of permissions Character.Network.Guild.Send(Packet.GuildUpdate(Character, 4, 0, permissions, 0)); } //If an error happens catch (Exception ex) { //Write the information to the console Console.WriteLine("Guild permission error: {0}", ex); //Write information to the debug log Systems.Debugger.Write(ex); } }
public void LoadGuildMembers() { //Wrap our code in a try to catch bad exception errors try { //Load guild member id's LoadGuildMemberIds(Character.Network.Guild.Guildid, ref Character.Network.Guild.Members); //Repeat for each member in the guild member list foreach (int Guildmember in Character.Network.Guild.Members) { //Set new guild player information Global.guild_player PlayerGuild = new Global.guild_player(); //Set guildmember id PlayerGuild.MemberID = Guildmember; //Create new mssql query to get player information Systems.MsSQL ms = new Systems.MsSQL("SELECT * FROM character WHERE id='" + Guildmember + "'"); //Create mssql data reader using (System.Data.SqlClient.SqlDataReader reader = ms.Read()) { //While the reader is reading while (reader.Read()) { //Get player model PlayerGuild.Model = reader.GetInt32(3); //Get player xsector PlayerGuild.Xsector = reader.GetByte(16); //Get player ysector PlayerGuild.Ysector = reader.GetByte(17); //Get player level PlayerGuild.Level = reader.GetByte(5); //Get player name PlayerGuild.Name = reader.GetString(2); //Get player online state PlayerGuild.Online = (reader.GetInt32(47) == 1); //If player is online if (PlayerGuild.Online) { //Get detailed player information Systems sys = GetPlayerMainid(Guildmember); //Make sure sys is not null if (sys != null) //Add the character client to the client list this.Character.Network.Guild.MembersClient.Add(sys.client); } } } //Create new query to select from table guild_members ms = new Systems.MsSQL("SELECT * FROM guild_members WHERE guild_member_id='" + Guildmember + "'"); //Create new sql data reader using (System.Data.SqlClient.SqlDataReader reader = ms.Read()) { //While the sql data reader is reading while (reader.Read()) { //Get player rights PlayerGuild.joinRight = (reader.GetByte(7) == 1); PlayerGuild.withdrawRight = (reader.GetByte(8) == 1); PlayerGuild.unionRight = (reader.GetByte(9) == 1); PlayerGuild.guildstorageRight = (reader.GetByte(10) == 1); PlayerGuild.noticeeditRight = (reader.GetByte(11) == 1); PlayerGuild.FWrank = reader.GetByte(6); //Get player donated gp PlayerGuild.DonateGP = reader.GetInt32(4); //Get player rank PlayerGuild.Rank = reader.GetByte(3); } } //Close mssql ms.Close(); //Add our character to the guild member info Character.Network.Guild.MembersInfo.Add(PlayerGuild); } } //Catch bad exceptions catch (Exception ex) { //Write error to the console Console.WriteLine(ex); //Write error to the debug log file Systems.Debugger.Write(ex); } }
public static void SetPartyMemberExp(Systems ch, long expamount, short stat, long sp) { try { ch.Character.Information.XP += expamount; bool level = false; while (ch.Character.Information.XP >= Data.LevelData[ch.Character.Information.Level]) { ch.Character.Information.XP -= Data.LevelData[ch.Character.Information.Level]; if (ch.Character.Information.XP < 1) ch.Character.Information.XP = 0; stat += 3; ch.Character.Information.Attributes += 3; ch.Character.Information.Level++; ch.Character.Stat.Intelligence++; ch.Character.Stat.Strength++; ch.UpdateIntelligenceInfo(1); ch.UpdateStrengthInfo(1); ch.SetStat(); level = true; } if (level) { if (ch.Character.Network.Guild.Guildid != 0) { // 1 question again where we set info to databse at lvlup? ah got it :) ch.Character.Network.Guild.Send(Packet.GuildUpdate(ch.Character, 8, 0, 0, 0)); // set new amount to every guild members guild class foreach (int m in ch.Character.Network.Guild.Members) { int targetindex = ch.Character.Network.Guild.MembersInfo.FindIndex(i => i.MemberID == m); if (ch.Character.Network.Guild.MembersInfo[targetindex].Online) { Systems sys = Systems.GetPlayer(m); // here comes the messy way Global.guild_player mygp = new Global.guild_player(); int myindex = 0; foreach (Global.guild_player gp in sys.Character.Network.Guild.MembersInfo) { if (gp.MemberID == ch.Character.Information.CharacterID) { mygp = gp; mygp.Level = ch.Character.Information.Level; break; } myindex++; } sys.Character.Network.Guild.MembersInfo[myindex] = mygp; } } } ch.Send(Packet.Player_LevelUpEffect(ch.Character.Information.UniqueID)); ch.client.Send(Packet.Player_getExp(ch.Character.Information.UniqueID, expamount, sp, stat)); ch.SavePlayerInfo(); } else { ch.client.Send(Packet.Player_getExp(ch.Character.Information.UniqueID, expamount, sp, 0)); ch.SavePlayerExperince(); } } catch (Exception ex) { Systems.Debugger.Write(ex); } }
public void CalcSharedPartyExpSp(int paramexp, party pt, Systems targetplayer, ref long outexp) { try { byte mlv = Data.ObjectBase[this.ID].Level; // party average int k = 0; List<int> NearbyMembers = new List<int>(9); if (pt.Members.Count != 0) { double playerDist; foreach (int memb in pt.Members) { Systems i = Systems.GetPlayer(memb); //playerDist = Formule.gamedistance(targetplayer.Character.Position.x, targetplayer.Character.Position.y, i.Character.Position.x, i.Character.Position.y); playerDist = Formule.gamedistance(targetplayer.Character.Position, i.Character.Position); if (playerDist <= 75) { NearbyMembers.Add(i.Character.Information.UniqueID); } } foreach (int l in NearbyMembers) { k += Systems.GetPlayer(l).Character.Information.Level; } k = (int)(k / pt.Members.Count); //k = átlag. foreach (int mem in NearbyMembers) { Systems ch = Systems.GetPlayer(mem); int ptsp = 97; //This isn't the right formula. TODO: We must find the right one! int ptexp = (int)((((paramexp / mlv) + (mlv - k)) * mlv) / k) * ch.Character.Information.Level; ptexp *= Systems.Rate.Xp; byte kat = this.Kat; if (kat == 20) kat = 25; ptexp *= kat; //we multiply the exp according to type of the mob. //TODO: premium ticket //gap: ptexp -= (ptexp * (ch.Character.Information.Level) - Math.Abs(ch.Character.Information.Level - ch.MasteryGetBigLevel)) * 10 / 100; if (ch.Character.Information.Level == 110 && ch.Character.Information.XP >= 4000000000) ptexp = 0; //we calculate the amount of sp: if (Math.Abs(Data.ObjectBase[this.ID].Level - k) < 10) { int gap = Math.Abs(ch.Character.Information.Level - ch.MasteryGetBigLevel) * 10; if (gap >= 90) gap = 90; ptsp = (ptsp * (100 + gap)) / k; //Instead of 100 I share with the avareage of the party, so we get a proportionate number. ptsp *= kat; ptsp *= Systems.Rate.Sp; } //Send total to all in party (Set exp from formula) SetPartyMemberExp(ch, (long)ptexp, ch.Character.Information.Attributes, (long)ptsp); SetSp(ch, (long)ptsp); if (ch.Character.Network.Guild.Guildid != 0) { if (Math.Abs(ch.Character.Network.Guild.LastDonate - ch.Character.Network.Guild.DonateGP) >= 10) { Systems.MsSQL.UpdateData("UPDATE guild_members SET guild_points='" + ch.Character.Network.Guild.DonateGP + "' WHERE guild_member_id='" + ch.Character.Information.CharacterID + "'"); ch.Character.Network.Guild.LastDonate = ch.Character.Network.Guild.DonateGP; // set new amount to every guild members guild class foreach (int m in ch.Character.Network.Guild.Members) { int targetindex = ch.Character.Network.Guild.MembersInfo.FindIndex(i => i.MemberID == m); if (ch.Character.Network.Guild.MembersInfo[targetindex].Online) { Systems sys = Systems.GetPlayer(m); // here comes the messy way Global.guild_player mygp = new Global.guild_player(); int myindex = 0; foreach (Global.guild_player gp in sys.Character.Network.Guild.MembersInfo) { if (gp.MemberID == ch.Character.Information.CharacterID) { mygp = gp; mygp.DonateGP = ch.Character.Network.Guild.DonateGP; break; } myindex++; } sys.Character.Network.Guild.MembersInfo[myindex] = mygp; } } ch.Character.Network.Guild.Send(Packet.GuildUpdate(ch.Character, 9, 0, 0, 0)); } } outexp = ptexp; } } else return; } catch (Exception ex) { Systems.Debugger.Write(ex); } }
public void LoadGuildMembers() { //Wrap our code in a try to catch bad exception errors try { //Load guild member id's LoadGuildMemberIds(Character.Network.Guild.Guildid, ref Character.Network.Guild.Members); //Repeat for each member in the guild member list foreach (int Guildmember in Character.Network.Guild.Members) { //Set new guild player information Global.guild_player PlayerGuild = new Global.guild_player(); //Set guildmember id PlayerGuild.MemberID = Guildmember; //Create new mssql query to get player information Systems.MsSQL ms = new Systems.MsSQL("SELECT * FROM character WHERE id='" + Guildmember + "'"); //Create mssql data reader using (System.Data.SqlClient.SqlDataReader reader = ms.Read()) { //While the reader is reading while (reader.Read()) { //Get player model PlayerGuild.Model = reader.GetInt32(3); //Get player xsector PlayerGuild.Xsector = reader.GetByte(16); //Get player ysector PlayerGuild.Ysector = reader.GetByte(17); //Get player level PlayerGuild.Level = reader.GetByte(5); //Get player name PlayerGuild.Name = reader.GetString(2); //Get player online state PlayerGuild.Online = (reader.GetInt32(47) == 1); //If player is online if (PlayerGuild.Online) { //Get detailed player information Systems sys = GetPlayerMainid(Guildmember); //Make sure sys is not null if (sys != null) { //Add the character client to the client list this.Character.Network.Guild.MembersClient.Add(sys.client); } } } } //Create new query to select from table guild_members ms = new Systems.MsSQL("SELECT * FROM guild_members WHERE guild_member_id='" + Guildmember + "'"); //Create new sql data reader using (System.Data.SqlClient.SqlDataReader reader = ms.Read()) { //While the sql data reader is reading while (reader.Read()) { //Get player rights PlayerGuild.joinRight = (reader.GetByte(7) == 1); PlayerGuild.withdrawRight = (reader.GetByte(8) == 1); PlayerGuild.unionRight = (reader.GetByte(9) == 1); PlayerGuild.guildstorageRight = (reader.GetByte(10) == 1); PlayerGuild.noticeeditRight = (reader.GetByte(11) == 1); PlayerGuild.FWrank = reader.GetByte(6); //Get player donated gp PlayerGuild.DonateGP = reader.GetInt32(4); //Get player rank PlayerGuild.Rank = reader.GetByte(3); } } //Close mssql ms.Close(); //Add our character to the guild member info Character.Network.Guild.MembersInfo.Add(PlayerGuild); } } //Catch bad exceptions catch (Exception ex) { //Write error to the console Console.WriteLine(ex); //Write error to the debug log file Systems.Debugger.Write(ex); } }
void GuildPermissions() { try { //Create new packet reader PacketReader Reader = new PacketReader(PacketInformation.buffer); //Skip first Reader.Skip(1); //Read member id int memberid = Reader.Int32(); //Read permission byte byte permissions = (byte)Reader.Int32(); //Set new char bits 8 char[] bits = new char[8]; //Repeat for each 8 bits for (int i = 0; i < 8; ++i) { bits[i] = (char)0; } //Convert bits to string / to char array bits = Convert.ToString(permissions, 2).ToCharArray(); //Close reader Reader.Close(); //Set amount to player targetindex int targetindex = this.Character.Network.Guild.MembersInfo.FindIndex(i => i.MemberID == memberid); //If character is online if (this.Character.Network.Guild.MembersInfo[targetindex].Online) { //Get detailed player information Systems member = GetPlayerMainid(memberid); //Set bits member.Character.Network.Guild.joinRight = bits[4] == '1' ? true : false; member.Character.Network.Guild.withdrawRight = bits[3] == '1' ? true : false; member.Character.Network.Guild.unionRight = bits[2] == '1' ? true : false; member.Character.Network.Guild.guildstorageRight = bits[0] == '1' ? true : false; member.Character.Network.Guild.noticeeditRight = bits[1] == '1' ? true : false; } // set new amount to every guild members guild class foreach (int m in Character.Network.Guild.Members) { //Set int index (Find member id) int index = Character.Network.Guild.MembersInfo.FindIndex(i => i.MemberID == m); //If the character is online if (Character.Network.Guild.MembersInfo[index].Online) { //Get detailed information of the player Systems sys = Systems.GetPlayerMainid(m); //Set new guild player Global.guild_player mygp = new Global.guild_player(); int myindex = 0; //Repeat for each player foreach (Global.guild_player gp in sys.Character.Network.Guild.MembersInfo) { //if the member id equals the player if (gp.MemberID == memberid) { //Set my gp mygp = gp; //Set bits mygp.joinRight = bits[4] == '1' ? true : false; mygp.withdrawRight = bits[3] == '1' ? true : false; mygp.unionRight = bits[2] == '1' ? true : false; mygp.guildstorageRight = bits[0] == '1' ? true : false; mygp.noticeeditRight = bits[1] == '1' ? true : false; break; } //Index ++ myindex++; } //Set membersinfo index as mygp sys.Character.Network.Guild.MembersInfo[myindex] = mygp; } } //Update guild database information rights MsSQL.UpdateData("UPDATE guild_members SET guild_perm_join='" + bits[4] + "',guild_perm_withdraw='" + bits[3] + "',guild_perm_union='" + bits[2] + "',guild_perm_storage='" + bits[0] + "',guild_perm_notice='" + bits[1] + "' WHERE guild_member_id='" + memberid + "'"); //Send to everyone in guild update of permissions Character.Network.Guild.Send(Packet.GuildUpdate(Character, 4, 0, permissions, 0)); } //If an error happens catch (Exception ex) { //Write the information to the console Console.WriteLine("Guild permission error: {0}", ex); //Write information to the debug log Systems.Debugger.Write(ex); } }