Пример #1
0
 public async Task NotifyTamingBuildSuccessMessageHandler(NotifyTamingBuildSuccessMessage message, Player player)
 {
     await player.OnNotifyTamingBuildSuccessMessage.InvokeAsync(message);
 }
Пример #2
0
        public async Task OnNotifyTamingBuildSuccessMessage(NotifyTamingBuildSuccessMessage msg)
        {
            var player = (msg.Associate as Player);
            await player.GetComponent <MissionInventoryComponent>().TamePetAsync(GameObject.Lot);

            player.PlayFX("", "petceleb");

            // We need to create the build object

            /*CdClientContext context = new CdClientContext(); TODO: fix
             * var model = GameObject.Instantiate(default,
             *  new Lot(context.TamingBuildPuzzlesTable.Where(i => i.NPCLot.Value == GameObject.Lot).First()
             *      .PuzzleModelLot.Value), msg.BuildPosition);
             *
             * Start(model);*/

            player.Message(new NotifyTamingModelLoadedOnServerMessage
            {
                Associate = player
            });

            player.Message(new PetResponseMessage
            {
                Associate      = player,
                Pet            = GameObject,
                PetCommandType = 0,
                Response       = 10, // Not entirely sure what this response ID is
                TypeId         = 0
            });

            var inventoryComponent = player.GetComponent <InventoryManagerComponent>();
            await inventoryComponent.AddLotAsync(GameObject.Lot, 1);

            var pet = inventoryComponent.FindItem(GameObject.Lot);

            player.Message(new AddPetToPlayerMessage
            {
                Associate     = player,
                ElementalType = 0, // This appears to be just unused, they are in the DB but they weren't sent correctly in the packet captures
                Name          = GameObject.Name,
                PetDBId       = pet,
                PetLot        = GameObject.Lot
            });

            player.Message(new RegisterPetIdMessage
            {
                Associate = player,
                Pet       = GameObject,
            });

            player.Message(new RegisterPetDbIdMessage
            {
                Associate = player,
                Pet       = pet,
            });

            player.Message(new MarkInventoryItemAsActiveMessage
            {
                Associate = player,
                Active    = true,
                ItemId    = pet,
            });

            // TODO: Add listener for name select
        }