示例#1
0
        public void AddNewGuild(List <Player> players, string guildName)
        {
            Guild g = new Guild
            {
                GuildLogo    = "",
                GuildName    = guildName,
                CreationDate = RandomUtilities.GetRoundedUtc(),
                GuildHistory = new List <HistoryEvent>(),
                GuildRanks   = new List <GuildMemberRank>()
            };

            AddNewRank(g, new GuildMemberRank {
                RankId = 1, RankName = "Guildmaster"
            });
            AddNewRank(g, new GuildMemberRank {
                RankId = 2, RankName = "Recruit"
            });

            foreach (Player player in players)
            {
                AddMemberToGuild(player, g);
                SystemMessages.GuildHasBeenCreated(guildName).Send(player.Connection);
            }

            lock (GuildsLock)
                Cache.Guilds.Add(g.GuildId, g);

            Cache.UsedGuildNames.Add(g.GuildName.ToLower());
        }
示例#2
0
        public override void Process()
        {
            if (GuildName == "")
            {
                return;
            }

            if (Connection.Player.LastPraise != -1 && RandomUtilities.GetRoundedUtc() - Connection.Player.LastPraise > 86400)
            {
                Connection.Player.LastPraise  = -1;
                Connection.Player.PraiseGiven = 0;
            }


            if (Connection.Player.PraiseGiven >= 3)
            {
                new SpSystemNotice("Sorry, but you've exceeded the limit of 3 praises per day.").Send(Connection);
                return;
            }

            Connection.Player.PraiseGiven++;
            Connection.Player.LastPraise = RandomUtilities.GetRoundedUtc();

            Communication.Global.GuildService.PraiseGuild(GuildName);
            Communication.Global.GuildService.SendServerGuilds(Connection.Player, 1);
            SystemMessages.YouPraiseGuildNowYouHavePraisesLeft(GuildName, 3 - Connection.Player.PraiseGiven).Send(Connection.Player);
        }
示例#3
0
        public void OnPlayerEnterWorld(IConnection connection, Player player)
        {
            string uidHex = BitConverter.GetBytes(player.UID).ToHex()
                            + BitConverter.GetBytes(ObjectFamily.Player.GetHashCode()).ToHex();

            new SendPacket("8FCD00000000").Send(connection); //1725 EU
            new SendPacket("0D9600000000").Send(connection); //1725 EU

            //new SpFriendList(pState.Player.Friends).Send(connection);
            //new SpFriendUpdate(pState.Player.Friends).Send(connection);

            new SendPacket("A7F20000000000000000").Send(connection); //1725 EU
            new SendPacket("03E70000000000000000").Send(connection); //1725 EU

            new SpCharacterPosition(player).Send(connection);

            FlyController flyController = player.Controller as FlyController;

            if (flyController != null)
            {
                flyController.EndFly(player.Position.MapId);
            }

            new SendPacket("E1EB" + uidHex + "7CC4000001FFFFFF7F").Send(connection); //1725 EU

            new SpCharacterStats(player).Send(connection);
            new SpCharacterGatherstats(player.PlayerCraftStats).Send(connection);

            CraftService.UpdateCraftRecipes(player);

            player.LastOnlineUtc = RandomUtilities.GetRoundedUtc();
        }
示例#4
0
        public void AddHistoryEvent(Guild guild, HistoryEvent hEvent, Player initiator = null)
        {
            if (guild == null)
            {
                return;
            }

            hEvent.Date = RandomUtilities.GetRoundedUtc();

            guild.GuildHistory.Add(hEvent);

            //TODO update
        }
示例#5
0
        public void PlayerEndGame(Player player)
        {
            player.LastOnlineUtc = RandomUtilities.GetRoundedUtc();

            if (player.Ai != null)
            {
                player.Ai.Release();
                player.Ai = null;
            }

            PlayersOnline.Remove(player);

            DAOManager.inventoryDAO.SaveStorage(player, player.Inventory);
            DAOManager.playerDAO.UpdatePlayer(player);
            DAOManager.questDAO.AddQuests(player);
            DAOManager.skillDAO.SaveSkills(player);
        }
示例#6
0
文件: GuildDAO.cs 项目: tbs005/Temu
        public bool SaveGuild(List <Player> players, string guildName)
        {
            string SQL = "INSERT INTO `guilds` "
                         + "(guildname, guildlogo, level, creationdate) "
                         + "VALUES(?name, ?logo, ?level, ?credate);";
            MySqlCommand cmd = new MySqlCommand(SQL, GuildDAOConnection);

            cmd.Parameters.AddWithValue("?name", guildName);
            cmd.Parameters.AddWithValue("?guildlogo", "");
            cmd.Parameters.AddWithValue("?level", "1");
            cmd.Parameters.AddWithValue("?credate", RandomUtilities.GetRoundedUtc());

            try
            {
                cmd.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                Logger.WriteLine(LogState.Exception, "DAO: Guild Save Failed!" + ex.Message);
                return(false);
            }

            return(true);
        }
示例#7
0
        public override void Write(BinaryWriter writer)
        {
            if (IsForCraftReset)
            {
                WriteDword(writer, 0);
                WriteByte(writer, 1);
                WriteByte(writer, 1);
                return;
            }

            WriteWord(writer, (short)Recipes.Count);
            WriteDword(writer, 0); // first recipe shift

            writer.Seek(6, SeekOrigin.Begin);
            WriteDword(writer, (int)writer.BaseStream.Length);
            writer.Seek(0, SeekOrigin.End);

            for (int i = 0; i < Recipes.Count; i++)
            {
                WriteWord(writer, (short)writer.BaseStream.Length);
                short recShift = (short)writer.BaseStream.Length;
                WriteWord(writer, 0);

                WriteWord(writer, (short)Recipes[i].NeededItems.Count);
                WriteWord(writer, 0); //items start shift

                WriteDword(writer, Recipes[i].RecipeId);
                WriteDword(writer, Recipes[i].CraftStat.GetHashCode());
                WriteDword(writer, 0);                           // O_o
                WriteDword(writer, Recipes[i].ResultItem.Key);   //itemid
                WriteDword(writer, Recipes[i].ResultItem.Value); //counter
                WriteDword(writer, Recipes[i].Level);
                WriteLong(writer, RandomUtilities.GetRoundedUtc());
                WriteByte(writer, 0);
                WriteDword(writer, Recipes[i].NeededItems.Count);

                writer.Seek(recShift + 4, SeekOrigin.Begin);
                WriteWord(writer, (short)writer.BaseStream.Length);
                writer.Seek(0, SeekOrigin.End);

                int counter = 1;
                foreach (KeyValuePair <int, int> itm in Recipes[i].NeededItems)
                {
                    WriteWord(writer, (short)writer.BaseStream.Length);

                    short sh1 = (short)writer.BaseStream.Length;

                    WriteWord(writer, 0);

                    WriteDword(writer, itm.Key);   //itemid
                    WriteDword(writer, itm.Value); //counter

                    if (counter < Recipes[i].NeededItems.Count)
                    {
                        writer.Seek(sh1, SeekOrigin.Begin);
                        WriteWord(writer, (short)writer.BaseStream.Length);
                        writer.Seek(0, SeekOrigin.End);
                    }
                    counter++;
                }

                if (i + 1 < Recipes.Count)
                {
                    writer.Seek(recShift, SeekOrigin.Begin);
                    WriteWord(writer, (short)writer.BaseStream.Length);
                    writer.Seek(0, SeekOrigin.End);
                }
            }
        }