Example #1
0
        public static GroupMember ReadGroupMemberFromDatabase(long pCharId)
        {
            //--------------------------------------------------
            // Quries used in this function
            //--------------------------------------------------
            const string get_groupmem_query =
                "SELECT `Name`, `IsGroupMaster` " +
                "FROM `fiesta_world`.`characters` " +
                "WHERE `CharID` = '{0}'";

            //--------------------------------------------------
            // Read member from database.
            //--------------------------------------------------
            string name     = "";
            bool   isOnline = false;
            bool   isMaster = false;

            using (var client = Program.DatabaseManager.GetClient())
                using (var cmd = new MySqlCommand(string.Format(get_groupmem_query, pCharId), client.GetConnection()))
                    using (var reader = cmd.ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            name = reader.GetString("Name");
                            if (reader.IsDBNull(reader.GetOrdinal("IsGroupMaster")))
                            {
                                isMaster = false;
                            }
                            else
                            {
                                isMaster = reader.GetBoolean("IsGroupMaster");
                            }
                        }
                    }

            GroupMember member = new GroupMember(name, isMaster, isOnline);

            if (ClientManager.Instance.HasClient(name))
            {
                var client = ClientManager.Instance.GetClientByCharName(name);
                member.IsOnline  = true;
                member.Character = client.Character;
            }
            else
            {
                member.IsOnline = (bool)InterFunctionCallbackProvider.Instance.QueuePacket(id =>
                {
                    var packet = new InterPacket(InterHeader.FunctionCharIsOnline);
                    packet.WriteLong(id);
                    packet.WriteString(name, 16);
                    return(packet);
                }, packet =>
                {
                    bool value = false;
                    packet.TryReadBool(out value);
                    return(value);
                });
            }
            return(member);
        }
Example #2
0
 public static void UpdateMoneyWorld(long Money, string charname)
 {
     using (var packet = new InterPacket(InterHeader.UpdateMoney))
     {
         packet.WriteString(charname, 16);
         packet.WriteLong(Money);
         WorldConnector.Instance.SendPacket(packet);
     }
 }
Example #3
0
 public void ChangeMoney(long NewMoney)
 {
     Character.Money = NewMoney;
     using (var packet = new InterPacket(InterHeader.UpdateMoneyFromWorld))
     {
         packet.WriteInt(Character.ID);
         packet.WriteLong(NewMoney);
     }
 }
Example #4
0
 public static void SendReciveCoper(string name, long Coper, bool CoperType)
 {
     using (var packet = new InterPacket(InterHeader.ReciveCoper))
     {
         packet.WriteString(name, 16);
         packet.WriteLong(Coper);
         packet.WriteBool(CoperType);
         WorldConnector.Instance.SendPacket(packet);
     }
 }
Example #5
0
        private void SendAddMemberInterPacket(GroupMember pMember)
        {
            ZoneConnection con = Program.GetZoneByMap(pMember.Character.Character.PositionInfo.Map);

            using (var pack = new InterPacket(InterHeader.AddPartyMember))
            {
                pack.WriteLong(this.Id);
                pack.WriteString(pMember.Name, 16);
                con.SendPacket(pack);
            }
        }
Example #6
0
        private void SendNewPartyInterPacket(long pId)
        {
            using (var packet = new InterPacket(InterHeader.NewPartyCreated))
            {
                packet.WriteLong(pId);

                foreach (var connection in Program.Zones.Select(pair => pair.Value))
                {
                    connection.SendPacket(packet);
                }
            }
        }
Example #7
0
        private void SendGroupBrokeUpInterPacket(long pId)
        {
            using (var packet = new InterPacket(InterHeader.PartyBrokeUp))
            {
                packet.WriteLong(pId);

                foreach (var zone in Program.Zones.Select(m => m.Value))
                {
                    zone.SendPacket(packet);
                }
            }
        }
Example #8
0
        public static void FunctionGetCharacterOnline(ZoneConnection pConnection, InterPacket pPacket)
        {
            long   id;
            string charName;

            if (!pPacket.TryReadLong(out id) || !pPacket.TryReadString(out charName, 16))
            {
                throw new InvalidPacketException();
            }

            var isOnline = ClientManager.Instance.IsOnline(charName);

            using (var packet = new InterPacket(InterHeader.FunctionAnswer))
            {
                packet.WriteLong(id);
                packet.WriteBool(isOnline);
                pConnection.SendPacket(packet);
            }
        }