public static void Add(CharacterGuild member) { try { MySqlCommand Command = new MySqlCommand() { Connection = DatabaseManager.Provider.getConnection(), CommandText = "REPLACE INTO `characters_guild` VALUES(@guid,@guild,@name,@level,@look,@rank,@xpdone,@pxp,@rights,@align,@lastConnection);", }; Command.Prepare(); Command.Parameters.AddWithValue("@guid", member.ID); Command.Parameters.AddWithValue("@guild", member.Guild); Command.Parameters.AddWithValue("@name", member.Name); Command.Parameters.AddWithValue("@level", member.Level); Command.Parameters.AddWithValue("@look", member.Gfx); Command.Parameters.AddWithValue("@rank", member.Grade); Command.Parameters.AddWithValue("@xpdone", member.Experience); Command.Parameters.AddWithValue("@pxp", member.ExperiencePercent); Command.Parameters.AddWithValue("@rights", member.Restriction); Command.Parameters.AddWithValue("@align", member.Alignement); Command.Parameters.AddWithValue("@lastConnection", member.lastConnection); Command.ExecuteNonQuery(); } catch (Exception e) { Logger.Error("Can't execute query : " + e.ToString()); } }
private static void ProcessGuildJoinRequestAccept(WorldClient Client) { if (!Client.IsGameAction(GameActionTypeEnum.BASIC_REQUEST)) { Client.Send(new BasicNoOperationMessage()); return; } if (!(Client.GetBaseRequest() is GuildJoinRequest)) { Client.Send(new BasicNoOperationMessage()); return; } if (Client == Client.GetBaseRequest().Requester) { Client.Send(new BasicNoOperationMessage()); return; } if (Client.GetBaseRequest().Accept()) { Client.GetBaseRequest().Requester.Send(new GuildJoinMessage('K', GuildJoinReason.REASON_IN_GUILD, Client.GetCharacter().Name)); var Guild = Client.GetBaseRequest().Requester.GetCharacter().GetGuild(); var member = new CharacterGuild() { ID = Client.Character.ID, Name = Client.Character.Name, Level = Client.Character.Level, Gfx = Client.Character.Look, ExperiencePercent = 0, Experience = 0, Alignement = Client.Character.Alignement, lastConnection = Client.Account.LastConnectionDate, }; Client.Character.setCharacterGuild(member); Guild.Register(Client); Guild.AddPlayer(Client.GetCharacter().getCharacterGuild(), GuildGradeEnum.GRADE_ESSAI); CharactersGuildTable.Add(member); Client.GetCharacter().getCharacterGuild().SendGuildSettingsInfos(); Client.Send(new GuildJoinMessage('K', GuildJoinReason.REASON_JOIN_ACCEPT)); Client.EndGameAction(GameActionTypeEnum.BASIC_REQUEST); Client.GetCharacter().RefreshOnMap(); } }
public static long CalculateGuildXp(Player Character, Tera.WorldServer.World.Fights.GameFightEndResult.Result result) { CharacterGuild gm = Character.getCharacterGuild(); if (gm == null) { return(0); } double xp = (double)result.WinExp, Lvl = Character.Level, LvlGuild = Character.GetGuild().Level, pXpGive = (double)gm.ExperiencePercent / 100; double maxP = xp * pXpGive * 0.10; //Le maximum donné à la guilde est 10% du montant prélevé sur l'xp du combat double diff = Math.Abs(Lvl - LvlGuild); //Calcul l'écart entre le niveau du personnage et le niveau de la guilde double toGuild; if (diff >= 70) { toGuild = maxP * 0.10; //Si l'écart entre les deux honor est de 70 ou plus, l'experience donnée a la guilde est de 10% la valeur maximum de don } else if (diff >= 31 && diff <= 69) { toGuild = maxP - ((maxP * 0.10) * (Math.Floor((diff + 30) / 10))); } else if (diff >= 10 && diff <= 30) { toGuild = maxP - ((maxP * 0.20) * (Math.Floor(diff / 10))); } else //Si la différence est [0,9] { toGuild = maxP; } result.WinExp = ((long)(xp - xp * pXpGive)); long wonXP = (long)Math.Round(toGuild); if (wonXP > 0) { Character.getCharacterGuild().giveXpToGuild(wonXP); } return(wonXP); }
private static void ProcessGuildCreateRequest(WorldClient Client, string Packet) { if (!Client.IsGameAction(GameActionTypeEnum.GUILD_CREATE)) { Client.Send(new BasicNoOperationMessage()); return; } if (!Packet.Contains('|')) { Client.Send(new GuildCreateMessage(false, "a")); return; } var GuildInfos = Packet.Substring(2).Split('|'); if (GuildInfos.Length != 5) { Client.Send(new GuildCreateMessage(false, "a")); return; } var BackGroundId = StringHelper.EncodeBase36(int.Parse(GuildInfos[0])); var BackGroundColor = StringHelper.EncodeBase36(int.Parse(GuildInfos[1])); var EmblemId = StringHelper.EncodeBase36(int.Parse(GuildInfos[2])); var EmblemColor = StringHelper.EncodeBase36(int.Parse(GuildInfos[3])); var FullEmblem = BackGroundId + "," + BackGroundColor + "," + EmblemId + "," + EmblemColor; var GuildName = GuildInfos[4]; if (GuildTable.Contains(GuildName) || GuildName.Length > 20) { Client.Send(new GuildCreateMessage(false, "an")); return; } var Guild = GuildTable.TryCreateGuild(Client, GuildName, FullEmblem); if (Guild == null) { Client.Send(new GuildCreateMessage(false, "an")); return; } Guild.CharactersGuildCache = new List <CharacterGuild>(); var member = new CharacterGuild() { ID = Client.Character.ID, Name = Client.Character.Name, Level = Client.Character.Level, Gfx = Client.Character.Look, ExperiencePercent = 0, Experience = 0, Alignement = Client.Character.Alignement, lastConnection = Client.Account.LastConnectionDate, }; Guild.AddPlayer(member, GuildGradeEnum.GRADE_BOSS); Guild.Register(Client); Client.Character.setCharacterGuild(member); CharactersGuildTable.Add(member); Client.GetCharacter().getCharacterGuild().SendGuildSettingsInfos(); Client.EndGameAction(GameActionTypeEnum.GUILD_CREATE); Client.GetCharacter().RefreshOnMap(); }