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());
     }
 }
Beispiel #2
0
        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();
            }
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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();
        }