コード例 #1
0
        static public void F_FLIGHT(BaseClient client, PacketIn packet)
        {
            GameClient cclient = client as GameClient;

            UInt16 TargetOID = packet.GetUint16();
            UInt16 State     = packet.GetUint16();

            Log.Info("F_FLIGHT", "TargetOid = " + TargetOID + ",State=" + State);

            if (State == 20) // Flight Master
            {
                Object Obj = cclient.Plr.Zone.GetObject(TargetOID);
                if (Obj == null || !Obj.IsCreature())
                {
                    Log.Error("F_FLIGHT", "Invalid Creature OID : " + TargetOID);
                    return;
                }

                UInt16 FlyID = packet.GetUint16();

                List <Zone_Taxi> Taxis = WorldMgr.GetTaxis(cclient.Plr);
                if (Taxis.Count <= FlyID - 1)
                {
                    return;
                }

                if (!cclient.Plr.RemoveMoney(Taxis[FlyID - 1].Info.Price))
                {
                    cclient.Plr.SendLocalizeString("", GameData.Localized_text.TEXT_MERCHANT_INSUFFICIENT_MONEY_TO_BUY);
                    return;
                }

                cclient.Plr.Teleport(Taxis[FlyID - 1].ZoneID, Taxis[FlyID - 1].WorldX, Taxis[FlyID - 1].WorldY, Taxis[FlyID - 1].WorldZ, Taxis[FlyID - 1].WorldO);
            }
        }
コード例 #2
0
        public static void F_DUMP_STATICS(BaseClient client, PacketIn packet)
        {
            GameClient cclient = (GameClient)client;

            if (cclient.Plr == null || !cclient.Plr.IsInWorld())
            {
                return;
            }

            cclient.Plr.MoveBlock = false;

            uint   Unk1 = packet.GetUint32();
            ushort Unk2 = packet.GetUint16();
            ushort OffX = packet.GetUint16();
            ushort Unk3 = packet.GetUint16();
            ushort OffY = packet.GetUint16();

            //cclient.Plr.DebugMessage("DUMP_STATICS : OFFSETS "+OffX+", "+OffY);
            cclient.Plr.SetOffset(OffX, OffY);

            if (!cclient.Plr.IsActive)
            {
                cclient.Plr.IsActive = true;
            }

            if (cclient.Plr.PendingDumpStatic)
            {
                cclient.Plr.OnClientLoaded();
            }
        }
コード例 #3
0
        public static void F_PLAYER_INFO(BaseClient client, PacketIn packet)
        {
            GameClient cclient = client as GameClient;

            if (cclient.Plr == null || !cclient.Plr.IsInWorld())
            {
                return;
            }

            packet.GetUint16();
            ushort Oid        = packet.GetUint16();
            byte   LOS        = packet.GetUint8();          // line of sight updates   96 if in los 32 if targeting someone out of los  0 if channiling a spell and target runs out of los
            byte   TargetType = packet.GetUint8();

            //cclient.Plr.DebugMessage("F_PLAYER_INFO: SetTarget: "+Oid);
            if (TargetType == (byte)TargetTypes.TARGETTYPES_TARGET_SELF)
            {
                TargetType = (byte)TargetTypes.TARGETTYPES_TARGET_ALLY;
            }

            cclient.Plr.CbtInterface.SetTarget(Oid, (TargetTypes)TargetType);

            if (LOS == 0)
            {
                cclient.Plr.AbtInterface.Cancel(true, (ushort)AbilityResult.ABILITYRESULT_NOTVISIBLECLIENT);
            }
        }
コード例 #4
0
        public static void F_SALVAGE_ITEM(BaseClient client, PacketIn packet)
        {
            GameClient cclient = client as GameClient;

            if (cclient.Plr == null)
            {
                return;
            }

            ushort Slot = packet.GetUint16();
            ushort Stat = packet.GetUint16();

            cclient.Plr.GatherInterface.Salvage_Item(Slot, Stat);
        }
コード例 #5
0
        static public void F_REQUEST_CHAR(BaseClient client, PacketIn packet)
        {
            GameClient cclient = client as GameClient;

            cclient.State = (int)eClientState.CharScreen;

            UInt16 Operation = packet.GetUint16();

            if (Operation == 0x2D58)
            {
                PacketOut Out = new PacketOut((byte)Opcodes.F_REQUEST_CHAR_ERROR);
                Out.WriteByte((byte)CharMgr.GetAccountRealm(cclient._Account.AccountId));
                cclient.SendTCP(Out);
            }

            else
            {
                PacketOut Out = new PacketOut((byte)Opcodes.F_REQUEST_CHAR_RESPONSE);


                Out.FillString(cclient._Account.Username, 25); // account name
                Out.WriteByte(0xFF);
                Out.WriteByte(CharMgr.MAX_SLOT);               // Max characters 20
                Out.WriteUInt16(0);                            // unk
                Out.WriteByte(0);                              // name changing tokens, 1 will enable button
                Out.WriteUInt16(0);                            //unk

                byte[] Chars = CharMgr.BuildCharactersList(cclient._Account.AccountId);
                Out.Write(Chars, 0, Chars.Length);
                cclient.SendTCP(Out);
            }
        }
コード例 #6
0
        static public void F_PLAYER_ENTER_FULL(BaseClient client, PacketIn packet)
        {
            GameClient cclient = client as GameClient;

            UInt16 SID;
            byte   unk1, serverID, characterSlot;

            SID      = packet.GetUint16();
            unk1     = packet.GetUint8();
            serverID = packet.GetUint8();
            string CharName = packet.GetString(24);

            packet.Skip(2);
            string Language = packet.GetString(2);

            packet.Skip(4);
            characterSlot = packet.GetUint8();

            Log.Success("F_PLAYER_ENTER_FULL", "Entrer en jeu de : " + CharName + ",Slot=" + characterSlot);

            if (Program.Rm.RealmId != serverID)
            {
                cclient.Disconnect();
            }
            else
            {
                PacketOut Out = new PacketOut((byte)Opcodes.S_PID_ASSIGN);
                Out.WriteUInt16R((ushort)cclient.Id);
                cclient.SendTCP(Out);
            }
        }
コード例 #7
0
        static public void F_REQUEST_QUEST(BaseClient client, PacketIn packet)
        {
            GameClient cclient = client as GameClient;

            UInt16 QuestID = packet.GetUint16();
            byte   State   = packet.GetUint8();

            switch (State)
            {
            case 0:     // Show Quest
            {
                cclient.Plr.QtsInterface.SendQuest(QuestID);
            } break;

            case 1:     // Decline Quest
            {
                cclient.Plr.QtsInterface.DeclineQuest(QuestID);
            } break;

            case 2:     // Send To Group
            {
            } break;
            }
            ;
        }
コード例 #8
0
ファイル: LOGIN_PROOF.cs プロジェクト: fiki574/rAPB
 public int HandlePacket(BaseClient client, PacketIn packet)
 {
     LobbyClient cclient = client as LobbyClient;
     byte[] clientModulus = new byte[64];
     for (int i = 0; i < 64; ++i) clientModulus[i] = packet.GetUint8();
     cclient.clientModulus = new FrameWork.NetWork.Crypto.BigInteger(1, clientModulus);
     UInt16 unk = packet.GetUint16();
     byte[] Proof = new byte[20];
     for (int i = 0; i < 20; ++i) Proof[i] = packet.GetUint8();
     cclient.Proof = Proof;
     if (IsBanned(cclient))
     {
         ANS_LOGIN_FAILED.Send(cclient, (int)ResponseCodes.RC_LOGIN_ACCOUNT_BLOCKED);
         cclient.Disconnect();
     }
     else
     {
         if (IsValid(cclient))
         {
             ANS_LOGIN_SUCCES.Send(cclient);
             cclient.ECrypt = new TCP.Encryption(cclient.SessionId);
             ANS_CHARACTER_INFO.Send(cclient);
         }
         else
         {
             ANS_LOGIN_FAILED.Send(cclient, (int)ResponseCodes.RC_LOGIN_INVALID_ACCOUNT);
             cclient.Disconnect();
         }
     }
     return 0;
 }
コード例 #9
0
ファイル: InventoryHandlers.cs プロジェクト: wardev1/WarEmu-1
        static public void F_TRANSFER_ITEM(BaseClient client, PacketIn packet)
        {
            GameClient cclient = client as GameClient;

            if (cclient.Plr == null || !cclient.Plr.IsInWorld())
            {
                return;
            }

            ushort Oid   = packet.GetUint16();
            ushort To    = packet.GetUint16();
            ushort From  = packet.GetUint16();
            ushort Count = packet.GetUint16();

            cclient.Plr.ItmInterface.MoveSlot(From, To, Count);
        }
コード例 #10
0
ファイル: CombatHandlers.cs プロジェクト: wardev1/WarEmu-1
        static public void F_PLAYER_INFO(BaseClient client, PacketIn packet)
        {
            GameClient cclient = client as GameClient;

            if (cclient.Plr == null || !cclient.Plr.IsInWorld())
            {
                return;
            }

            packet.GetUint16();
            UInt16 Oid        = packet.GetUint16();
            byte   Unk        = packet.GetUint8();
            byte   TargetType = packet.GetUint8();

            cclient.Plr.CbtInterface.SetTarget(Oid, (GameData.TargetTypes)TargetType);
        }
コード例 #11
0
ファイル: InventoryHandlers.cs プロジェクト: wardev1/WarEmu-1
        static public void F_USE_ITEM(BaseClient client, PacketIn packet)
        {
            GameClient cclient = client as GameClient;

            if (!cclient.IsPlaying())
            {
                return;
            }

            Player Plr = cclient.Plr;

            ushort slot = packet.GetUint16();

            Item item = Plr.ItmInterface.GetItemInSlot(slot);

            if (Plr.Level < item.Info.MinRank)
            {
                Plr.SendLocalizeString("", GameData.Localized_text.TEST_ITEM_PLAYER_LEVEL_TOO_LOW);
                return;
            }
            else if (Plr.Rank < item.Info.MinRenown)
            {
                Plr.SendLocalizeString("", GameData.Localized_text.TEST_ITEM_PLAYER_RENOWN_TOO_LOW);
                return;
            }

            if (item.Info.Type == 31 && item.Info.ScriptName == "HealthPotion") // Potion
            {
                Plr.DealHeal(Plr, (uint)item.Info.MinRank * 100);
                Plr.ItmInterface.DeleteItem(slot, 1, true);
            }
        }
コード例 #12
0
        static public void HandlePacket(BaseClient client, PacketIn packet)
        {
            LobbyClient cclient = client as LobbyClient;

            byte[] PublicKey = new byte[64];
            for (int i = 0; i < 64; ++i)
            {
                PublicKey[i] = packet.GetUint8();
            }
            Reverse(PublicKey, 64);
            cclient.A = PublicKey;

            UInt16 unk = packet.GetUint16();

            byte[] Proof = new byte[20];
            for (int i = 0; i < 20; ++i)
            {
                Proof[i] = packet.GetUint8();
            }
            Reverse(Proof, 20);
            cclient.Proof = Proof;

            if (IsValid(cclient))
            {
                ANS_LOGIN_SUCCES.Send(cclient);
            }
            else
            {
                cclient.Disconnect();
            }
        }
コード例 #13
0
        static public void F_REQUEST_QUEST(BaseClient client, PacketIn packet)
        {
            GameClient cclient = client as GameClient;

            Log.Success("HandlePacket", "Handle F_REQUEST_QUEST");

            UInt16 QuestID = packet.GetUint16();
            byte   State   = packet.GetUint8();

            switch (State)
            {
            case 0:     // Show Quest
            {
                Log.Info("F_REQUEST_QUEST", "Show Quest : " + QuestID);
                cclient.Plr.QtsInterface.SendQuest(QuestID);
            } break;

            case 1:     // Decline Quest
            {
                Log.Info("F_REQUEST_QUEST", "Decline Quest : " + QuestID);
                cclient.Plr.QtsInterface.DeclineQuest(QuestID);
            } break;

            case 2:     // Send To Group
            {
            } break;
            }
            ;
        }
コード例 #14
0
        public static void F_TRANSFER_ITEM(BaseClient client, PacketIn packet)
        {
            GameClient cclient = client as GameClient;

            if (cclient.Plr == null || !cclient.Plr.IsInWorld())
            {
                return;
            }

            ushort Oid   = packet.GetUint16();
            ushort To    = packet.GetUint16();
            ushort From  = packet.GetUint16();
            ushort Count = packet.GetUint16();

            // Log.Info("","move item " + cclient.Plr.ItmInterface.GetItemInSlot(From).Info.Entry + " slot " + From + " count "+Count+"    to slot  " + To +" item "+cclient.Plr.ItmInterface.GetItemInSlot(To).Info.Entry);
            cclient.Plr.ItmInterface.MoveSlot(From, To, Count);
        }
コード例 #15
0
        static public void F_DUMP_STATICS(BaseClient client, PacketIn packet)
        {
            GameClient cclient = client as GameClient;

            if (cclient.Plr == null || !cclient.Plr.IsInWorld())
                return;

            UInt32 Unk1 = packet.GetUint32();
            UInt16 Unk2 = packet.GetUint16();
            UInt16 OffX = packet.GetUint16();
            UInt16 Unk3 = packet.GetUint16();
            UInt16 OffY = packet.GetUint16();

            Log.Success("F_DUMP_STATIC", "X=" + OffX + ",Y=" + OffY);

            cclient.Plr.SetOffset(OffX, OffY);
        }
コード例 #16
0
        public static void F_FLIGHT(BaseClient client, PacketIn packet)
        {
            GameClient cclient = (GameClient)client;

            ushort targetOid = packet.GetUint16();
            ushort state     = packet.GetUint16();

            if (state == 20) // Flight Master
            {
                Creature flightMaster = cclient.Plr.Region.GetObject(targetOid) as Creature;

                if (flightMaster == null || flightMaster.InteractType != InteractType.INTERACTTYPE_FLIGHT_MASTER || cclient.Plr.Get2DDistanceToObject(flightMaster, true) > FLIGHT_DISTANCE_TOLERANCE)
                {
                    cclient.Plr.SendLocalizeString(ChatLogFilters.CHATLOGFILTERS_USER_ERROR, Localized_text.TEXT_FLIGHT_MASTER_RANGE_ERR);
                    return;
                }

                ushort destId = packet.GetUint16();

                List <Zone_Taxi> destinations = WorldMgr.GetTaxis(cclient.Plr);

                if (destinations.Count <= destId - 1)
                {
                    return;
                }

                Zone_Taxi destination = destinations[destId - 1];

                if (!cclient.Plr.RemoveMoney(destination.Info.Price))
                {
                    cclient.Plr.SendLocalizeString(ChatLogFilters.CHATLOGFILTERS_USER_ERROR, Localized_text.TEXT_FLIGHT_LACK_FUNDS);
                    return;
                }

                Pet pet = cclient.Plr.CrrInterface.GetTargetOfInterest() as Pet;
                if (pet != null)
                {
                    pet.Destroy();
                }
                cclient.Plr.AbtInterface.ResetCooldowns();
                cclient.Plr.Teleport(destination.ZoneID, destination.WorldX, destination.WorldY, destination.WorldZ, destination.WorldO);
            }
        }
コード例 #17
0
        public static void F_FIRE_SIEGE_WEAPON(BaseClient client, PacketIn packet)
        {
            GameClient cclient = client as GameClient;

            if (cclient.Plr == null || !cclient.Plr.IsInWorld())
            {
                return;
            }

            ushort siegeOid     = packet.GetUint16();
            ushort targetID     = packet.GetUint16();
            var    targetX      = packet.GetUint16();
            var    targetY      = packet.GetUint16();
            var    targetZ      = packet.GetUint16();
            var    targetZoneID = packet.GetUint16();
            var    power        = packet.GetUint8(); // ram power
            var    unk2         = packet.GetUint8();

            var siege = (Creature)cclient.Plr.Region.GetObject(siegeOid);

            if (siege != null)
            {
                if (siege.Spawn.Proto.CreatureSubType == (byte)GameData.CreatureSubTypes.SIEGE_RAM)
                {
                    siege.SiegeInterface.RamSwing(cclient.Plr, targetID, power);
                }
                else
                {
                    siege.SiegeInterface.Fire(cclient.Plr, targetID, targetX, targetY, targetZ, targetZoneID, power);
                }
            }
        }
コード例 #18
0
        public static void F_AUCTION_POST_ITEM(BaseClient client, PacketIn packet)
        {
            GameClient cclient = (GameClient)client;

            if (!cclient.IsPlaying() || !cclient.Plr.IsInWorld())
            {
                return;
            }

            Player plr = cclient.Plr;

            if (AuctionHouse.PlayerAuctionCount(plr.CharacterId) >= AuctionHouse.MAX_AUCTIONS_PER_CHAR)
            {
                plr.SendMessage("You have reached the maximum of " + AuctionHouse.MAX_AUCTIONS_PER_CHAR + " auctions.", ChatLogFilters.CHATLOGFILTERS_USER_ERROR);
                return;
            }

            ushort slot = packet.GetUint16();

            packet.Skip(2);
            uint price = packet.GetUint32();

            if (plr.ItmInterface.GetItemInSlot(slot) == null)
            {
                return;
            }

            if (plr.ItmInterface.GetItemInSlot(slot).BoundtoPlayer || plr.ItmInterface.GetItemInSlot(slot).Info.Bind == 1)
            {
                plr.SendLocalizeString(plr.ItmInterface.GetItemInSlot(slot).Info.Name, ChatLogFilters.CHATLOGFILTERS_USER_ERROR, GameData.Localized_text.TEXT_AUCTION_ITEM_IS_BOUND);
                return;
            }

            Auction auction = new Auction
            {
                Item         = plr.ItmInterface.GetItemInSlot(slot).Info,
                ItemId       = plr.ItmInterface.GetItemInSlot(slot).Info.Entry,
                _Talismans   = plr.ItmInterface.GetItemInSlot(slot).GetTalismans(),
                PrimaryDye   = plr.ItmInterface.GetItemInSlot(slot).GetPrimaryDye(),
                SecondaryDye = plr.ItmInterface.GetItemInSlot(slot).GetSecondaryDye(),
                Count        = plr.ItmInterface.GetItemInSlot(slot).Count,
                Seller       = plr.Info,
                SellerId     = plr.CharacterId,
                SellPrice    = price,
                StartTime    = (uint)TCPManager.GetTimeStamp(),
                Realm        = plr.Info.Realm,
                AuctionId    = (uint)AuctionHouse.GenerateAuctionGUID()
            };

            AuctionHouse.AddAuction(auction);
            plr.ItmInterface.DeleteItem(slot);
        }
コード例 #19
0
        public static void CL_LOGIN(BaseClient client, PacketIn packet)
        {
            Client cclient = client as Client;

            var username = packet.GetString16();
            var hashLen  = packet.GetUint16();
            var hash     = new byte[hashLen];

            packet.Read(hash, 0, hashLen);
            var installID = packet.GetString();

            cclient.Login(username, hash, installID);
        }
コード例 #20
0
ファイル: CombatHandlers.cs プロジェクト: wardev1/WarEmu-1
        static public void F_INTERACT(BaseClient client, PacketIn packet)
        {
            GameClient cclient = client as GameClient;

            if (cclient.Plr == null || !cclient.Plr.IsInWorld())
            {
                return;
            }

            if (cclient.Plr.IsDead)
            {
                return;
            }

            InteractMenu Menu = new InteractMenu();

            Menu.Unk   = packet.GetUint16();
            Menu.Oid   = packet.GetUint16();
            Menu.Menu  = packet.GetUint16();
            Menu.Page  = packet.GetUint8();
            Menu.Num   = packet.GetUint8();
            Menu.Count = packet.GetUint16();

            Object Obj = cclient.Plr.Region.GetObject(Menu.Oid);

            if (Obj == null)
            {
                return;
            }

            if (Obj.GetDistanceTo(cclient.Plr) > 20)
            {
                //Log.Error("F_INTERACT", "Distance = " + Obj.GetDistanceTo(cclient.Plr));
                return;
            }

            Menu.Packet = packet;
            Obj.SendInteract(cclient.Plr, Menu);
        }
コード例 #21
0
        static public void F_DUMP_STATICS(BaseClient client, PacketIn packet)
        {
            GameClient cclient = client as GameClient;

            if (cclient.Plr == null || !cclient.Plr.IsInWorld())
            {
                return;
            }

            UInt32 Unk1 = packet.GetUint32();
            UInt16 Unk2 = packet.GetUint16();
            UInt16 OffX = packet.GetUint16();
            UInt16 Unk3 = packet.GetUint16();
            UInt16 OffY = packet.GetUint16();

            cclient.Plr.SetOffset(OffX, OffY);

            if (!cclient.Plr.IsActive)
            {
                cclient.Plr.IsActive = true;
            }
        }
コード例 #22
0
        public static void F_REQUEST_INIT_OBJECT(BaseClient client, PacketIn packet)
        {
            GameClient cclient = (GameClient)client;

            if (cclient.Plr == null)
            {
                return;
            }

            ushort oid = packet.GetUint16();

            cclient.Plr.GetObjectInRange(oid)?.SendMeTo(cclient.Plr);
        }
コード例 #23
0
        public static void F_START_SIEGE_MULTIUSER(BaseClient client, PacketIn packet)
        {
            GameClient cclient = client as GameClient;

            if (cclient.Plr == null || !cclient.Plr.IsInWorld())
            {
                return;
            }

            ushort siegeOid = packet.GetUint16();

            cclient.Plr.CurrentSiege?.SiegeInterface?.SendSiegeMultiuser();
        }
コード例 #24
0
        public static void F_PLAY_VOICE_OVER(BaseClient client, PacketIn packet)
        {
            GameClient cclient = client as GameClient;

            packet.GetUint16(); // Unk
            ushort ZoneId = packet.GetUint16();

            Player Plr = cclient.Plr;

            if (Plr.Region == null)
            {
                return;
            }

            ZoneMgr Zone = Plr.Zone;

            if (Zone == null)
            {
                return;
            }

            List <PublicQuest> PQuests = Zone.PQuests;

            PacketOut Out = new PacketOut((byte)Opcodes.F_OBJECTIVE_UPDATE, 64);

            Out.WriteUInt32(0);
            Out.WriteByte(6);
            Out.WriteUInt32(ZoneId);
            Out.WriteUInt16((ushort)PQuests.Count);

            foreach (PublicQuest PQuest in PQuests)
            {
                Out.WriteUInt32(PQuest.Info.Entry);
                Out.WriteUInt16((ushort)PQuest.ActivePlayers.Count);
            }

            cclient.Plr.SendPacket(Out);
        }
コード例 #25
0
ファイル: ClientDatas.cs プロジェクト: cooler-SAI/ProjectWAR
        public static void F_CLIENT_DATA(BaseClient client, PacketIn packet)
        {
            GameClient cclient = client as GameClient;

            Player plr = cclient.Plr;

            if (plr == null)
            {
                return;
            }

            ushort offset = packet.GetUint16();
            ushort size   = packet.GetUint16();

            MemoryStream ms = new MemoryStream(plr.Info.ClientData.Data)
            {
                Position = offset
            };

            ms.Write(packet.Read(size), 0, size);
            plr.Info.ClientData.Dirty = true;
            CharMgr.Database.SaveObject(plr.Info.ClientData);
        }
コード例 #26
0
        public static void F_TROPHY_SETLOCATION(BaseClient client, PacketIn packet)
        {
            GameClient cclient = client as GameClient;

            if (!cclient.IsPlaying())
            {
                return;
            }

            packet.GetUint8();
            byte   Trophyslot = packet.GetUint8();
            ushort value      = packet.GetUint16();

            cclient.Plr.ItmInterface.AssignTrophy(Trophyslot, value);
        }
コード例 #27
0
ファイル: CombatHandlers.cs プロジェクト: wardev1/WarEmu-1
        static public void F_DO_ABILITY_AT_POS(BaseClient client, PacketIn packet)
        {
            GameClient cclient = client as GameClient;

            if (cclient.Plr == null)
            {
                return;
            }

            ushort unk        = packet.GetUint16();
            ushort Oid        = packet.GetUint16();
            ushort CastPx     = packet.GetUint16();
            ushort CastPy     = packet.GetUint16();
            ushort CastZoneId = packet.GetUint16();

            ushort unk2      = packet.GetUint16();
            ushort AbilityId = packet.GetUint16();
            ushort Px        = packet.GetUint16();
            ushort Py        = packet.GetUint16();
            ushort ZoneId    = packet.GetUint16();

            //Log.Info("Ability", AbilityId + " Cast Ability At position : " + Px + "," + Py);
            cclient.Plr.AbtInterface.StartCast(AbilityId);
        }
コード例 #28
0
        private static void CommandSelectTitle(Player plr, PacketIn packet)
        {
            packet.ReadByte();

            // Read the titleId
            ushort titleId = packet.GetUint16();

            // Verify player has this title unlocked
            if (titleId != 0 && !plr.TokInterface.HasTok(titleId))
            {
                plr.SendClientMessage("You attempted to select a title that you have not yet unlocked.", ChatLogFilters.CHATLOGFILTERS_USER_ERROR);
            }
            else
            {
                plr.SetTitleId(titleId);
            }
        }
コード例 #29
0
        public static void F_REQUEST_QUEST(BaseClient client, PacketIn packet)
        {
            GameClient cclient = (GameClient)client;

            ushort questID = packet.GetUint16();
            byte   state   = packet.GetUint8();

            switch (state)
            {
            case 0:     // Show Quest
            {
                cclient.Plr.QtsInterface.SendQuest(questID);
            } break;

            case 1:     // Decline Quest
            {
                cclient.Plr.QtsInterface.AbandonQuest(questID);
            } break;

            case 2:     // Send To Group
            {
                if (cclient.Plr.WorldGroup != null)
                {
                    foreach (Player member in cclient.Plr.WorldGroup.GetPlayersCloseTo(cclient.Plr, 25))
                    {
                        if (member != cclient.Plr)
                        {
                            if (Services.World.QuestService._Quests[questID].Shareable)
                            {
                                member.QtsInterface.AcceptQuest(questID);
                                cclient.Plr.SendClientMessage("You shared quest '" + Services.World.QuestService._Quests[questID].Name + "' with " + member.Name);
                                member.SendClientMessage(cclient.Plr.Name + " shared quest '" + Services.World.QuestService._Quests[questID].Name + "' with you");
                            }
                            else
                            {
                                member.SendClientMessage("Quest '" + Services.World.QuestService._Quests[questID].Name + "' cannot be shared.");
                                cclient.Plr.SendClientMessage("You cannot share quest '" + Services.World.QuestService._Quests[questID].Name + "' with " + member.Name);
                            }
                        }
                    }
                    //WorldServer.Services.World.QuestService._Quests[questID].Shareable = 1;
                    //WorldServer.Services.World.QuestService._
                }
            } break;
            }
        }
コード例 #30
0
ファイル: CombatHandlers.cs プロジェクト: wardev1/WarEmu-1
        static public void F_DO_ABILITY(BaseClient client, PacketIn packet)
        {
            GameClient cclient = client as GameClient;

            if (cclient.Plr == null)
            {
                return;
            }

            UInt32 Unk, Unk2, Unk3 = 0;
            UInt16 AbilityID = 0;

            Unk       = packet.GetUint32();
            Unk2      = packet.GetUint32();
            Unk3      = packet.GetUint32();
            AbilityID = packet.GetUint16();

            cclient.Plr.AbtInterface.StartCast(AbilityID);
        }
コード例 #31
0
        static public void F_REQUEST_INIT_OBJECT(BaseClient client, PacketIn packet)
        {
            GameClient cclient = client as GameClient;

            if (cclient.Plr == null)
            {
                return;
            }

            ushort Oid = packet.GetUint16();

            foreach (Object Obj in cclient.Plr._ObjectRanged)
            {
                if (Obj != null && !Obj.IsDisposed && Obj.Oid == Oid)
                {
                    Obj.SendMeTo(cclient.Plr);
                }
            }
        }