Esempio n. 1
0
        protected override IBuffer ToBuffer()
        {
            IBuffer res = BufferProvider.Provide();

            res.WriteUInt64(_movedItem.instanceId);
            res.WriteByte((byte)_movedItem.location.zoneType);
            res.WriteByte(_movedItem.location.container);
            res.WriteInt16(_movedItem.location.slot);
            return(res);
        }
Esempio n. 2
0
        private void SendEoNotifyDisappearSchedule(uint instanceId)
        {
            IBuffer res = BufferProvider.Provide();

            res = BufferProvider.Provide();

            res.WriteUInt32(instanceId);
            res.WriteFloat(3.0F);
            _server.Router.Send(Map, (ushort)AreaPacketId.recv_eo_notify_disappear_schedule, res, ServerType.Area);
        }
Esempio n. 3
0
        protected override IBuffer ToBuffer()
        {
            IBuffer res = BufferProvider.Provide();

            res.WriteInt32(0);
            res.WriteInt32(0);
            res.WriteInt32(0);
            res.WriteInt32(0);
            return(res);
        }
        protected override IBuffer ToBuffer()
        {
            IBuffer res = BufferProvider.Provide();

            res.WriteInt64(0);
            res.WriteCString("What");
            res.WriteInt32(0);
            res.WriteInt32(0);
            return(res);
        }
Esempio n. 5
0
        public override void Handle(NecClient client, NecPacket packet)
        {
            IBuffer res = BufferProvider.Provide();

            res.WriteInt32(0);

            Router.Send(client, (ushort)AreaPacketId.recv_stall_open_r, res, ServerType.Area);

            SendStallNotifyOpend(client);
        }
Esempio n. 6
0
        public override void Handle(NecClient client, NecPacket packet)
        {
            long targetItemId = packet.data.ReadInt64();

            IBuffer res = BufferProvider.Provide();

            res.WriteUInt32(client.character.instanceId);

            //Router.Send(client, (ushort) AreaPacketId.recv_party_pass_draw_r, res, ServerType.Area);  //need to find pass draw receive and opcode
        }
Esempio n. 7
0
        private void SendEventMessageNoObject(NecClient client, int instanceId)
        {
            IBuffer res = BufferProvider.Provide();

            res.WriteCString($"NPC#:{instanceId}");                               // Npc name
            res.WriteCString("QuestChat");                                        //Chat Window lable
            res.WriteCString(
                "You've got 5 seconds before this window closes. Think Quick!'"); // it's the npc text, switch automatically to an other window when text finish
            Router.Send(client, (ushort)AreaPacketId.recv_event_message_no_object, res, ServerType.Area);
        }
Esempio n. 8
0
        protected override IBuffer ToBuffer()
        {
            IBuffer res = BufferProvider.Provide();

            //sub_495C70
            res.WriteInt32(0);
            res.WriteInt64(0);
            res.WriteFixedString("Xeno", 0x61);
            res.WriteFixedString("Xeno", 0x5B);
            res.WriteByte(0);
            res.WriteByte(0);
            res.WriteByte(0);
            res.WriteByte(0);
            res.WriteByte(0);
            res.WriteByte(0);
            res.WriteInt32(0);

            res.WriteInt32(0);
            res.WriteInt16(0);
            res.WriteInt32(0);
            res.WriteInt32(0);
            res.WriteInt16(0);

            for (int i = 0; i < 0x3; i++)
            {
                res.WriteInt32(0);
                res.WriteInt32(0);
                for (int j = 0; j < 0x7; j++)
                {
                    res.WriteInt16(0);
                }
            }

            res.WriteByte(0);
            res.WriteInt32(0);
            res.WriteByte(0);

            for (int i = 0; i < 0x3; i++)
            {
                res.WriteByte(0);
            }

            for (int i = 0; i < 0x5; i++)
            {
                res.WriteInt32(0);
            }

            for (int i = 0; i < 0x5; i++)
            {
                res.WriteByte(0);
            }
            //-----endsub
            res.WriteByte(0);
            return(res);
        }
Esempio n. 9
0
        public override void Handle(NecClient client, NecPacket packet)
        {
            int       response  = packet.data.ReadInt32();                                                             //0 for yes, -1 for no;
            NecClient necClient = server.clients.GetByCharacterInstanceId((uint)client.character.eventSelectExecCode); //Salvager

            //Notify the dead client that it has accepted body collection and it's soul now posseses the salvager.
            RecvCharaBodySelfSalvageResult recvCharaBodySelfSalvageResult = new RecvCharaBodySelfSalvageResult(response);

            router.Send(client, recvCharaBodySelfSalvageResult.ToPacket());

            //tell the salvager about your choice.
            RecvCharaBodySalvageRequest recvCharaBodySalvageRequest = new RecvCharaBodySalvageRequest(response);

            router.Send(necClient, recvCharaBodySalvageRequest.ToPacket());


            if (response == (int)MyResponse.AcceptCollection)
            {
                //tell the dead client who collected the body
                RecvCharaBodySalvageNotifySalvager recvCharaBodySalvageNotifySalvager = new RecvCharaBodySalvageNotifySalvager(necClient.character.instanceId, necClient.character.name, necClient.soul.name);
                router.Send(client, recvCharaBodySalvageNotifySalvager.ToPacket());

                //tell the salvager who they collected.
                RecvCharaBodySalvageNotifyBody recvCharaBodySalvageNotifyBody = new RecvCharaBodySalvageNotifyBody(client.character.deadBodyInstanceId, client.character.name, client.soul.name);
                router.Send(necClient, recvCharaBodySalvageNotifyBody.ToPacket());

                //tell the salvager to close the charabody access window.
                RecvCharaBodyAccessEnd recvCharaBodyAccessEnd = new RecvCharaBodyAccessEnd(0);
                router.Send(necClient, recvCharaBodyAccessEnd.ToPacket());

                //Tell the deadBody to disappear from the map, as it's being carried.
                RecvObjectDisappearNotify recvObjectDisappearNotify = new RecvObjectDisappearNotify(client.character.deadBodyInstanceId);
                router.Send(client.map, recvObjectDisappearNotify);

                //Tell the deadClient it can see the salvager even in soul form now.
                RecvDataNotifyCharaData cData = new RecvDataNotifyCharaData(necClient.character, necClient.soul.name);
                router.Send(client, cData.ToPacket());

                //remove the deadBody from the map so newly entering players can't see it.
                client.map.deadBodies.Remove(client.character.deadBodyInstanceId);

                //Add the deadBody to the client that's carrying it for Movement Sends
                necClient.bodyCollection.Add(client.character.deadBodyInstanceId, client);

                //move the soulState client to the salvagers position
                IBuffer res5 = BufferProvider.Provide();
                res5.WriteUInt32(client.character.instanceId);
                res5.WriteFloat(necClient.character.x);
                res5.WriteFloat(necClient.character.y);
                res5.WriteFloat(necClient.character.z);
                res5.WriteByte(necClient.character.heading);      //Heading
                res5.WriteByte(necClient.character.movementAnim); //state
                router.Send(client, (ushort)AreaPacketId.recv_object_point_move_notify, res5, ServerType.Area);
            }
        }
        public override void Execute(string[] command, NecClient client, ChatMessage message,
                                     List <ChatResponse> responses)
        {
            x = 0;
            for (int j = 0; j < 19; j++)
            {
                IBuffer res = BufferProvider.Provide();
                //recv_item_instance = 0x86EA,
                x++;
                res.WriteInt64(client.Character
                               .EquipId[x]);     //  Assume Unique ID instance identifier. 1 here makes item green icon
                res.WriteInt32(EquipItemType[x] - 1);
                res.WriteByte(1);                //number of items in stack
                res.WriteInt32(
                    1);                          // 0001 Shows correct icon in bag, 0010 unknown, 0100 shows broken, 1000 shows cursed, 1 0000 shows blessed
                res.WriteFixedString("WhatIsThis", 0x10);
                res.WriteByte(0);                // 0 = adventure bag. 1 = character equipment
                res.WriteByte(0);                // 0~2
                res.WriteInt16((short)x);        // bag index
                res.WriteInt32(EquipBitMask[x]); //bit mask. This indicates where to put items.   ??
                res.WriteInt32(0);
                res.WriteByte(0);
                res.WriteByte(0);
                res.WriteCString("ThisIsThis"); // find max size
                res.WriteInt16(0);
                res.WriteInt16(0);
                res.WriteInt32(client.Character.EquipId[x]);
                res.WriteByte(0);
                res.WriteInt32(client.Character.EquipId[x]);
                int numEntries = 2;
                res.WriteInt32(numEntries); // less than or equal to 2
                for (int i = 0; i < numEntries; i++)
                {
                    res.WriteInt32(client.Character.EquipId[x]);
                }

                numEntries = 3;
                res.WriteInt32(numEntries); // less than or equal to 3
                for (int i = 0; i < numEntries; i++)
                {
                    res.WriteByte(0); //bool
                    res.WriteInt32(client.Character.EquipId[x]);
                    res.WriteInt32(client.Character.EquipId[x]);
                    res.WriteInt32(client.Character.EquipId[x]);
                }

                res.WriteInt32(0);
                res.WriteInt32(0);
                res.WriteInt16(0);
                res.WriteInt32(1); //1 here lables the item "Gaurd".   no effect from higher numbers
                res.WriteInt16(0);

                Router.Send(client, (ushort)AreaPacketId.recv_item_instance, res, ServerType.Area);
            }
        }
        public override void Handle(NecClient client, NecPacket packet)
        {
            uint   objective = packet.data.ReadUInt32();
            int    details   = packet.data.ReadInt32();
            int    unknown   = packet.data.ReadInt32();
            uint   otherCheckBoxSelection = packet.data.ReadUInt32();
            string comment = packet.data.ReadFixedString(60);


            IBuffer res = BufferProvider.Provide();

            res.WriteUInt32(client.character.instanceId);
            res.WriteInt32(0x14); // cmp to 0x14

            int numEntries = 0x14;

            for (int i = 0; i < numEntries; i++)
            {
                res.WriteInt32(510 + i);                      //Party ID
                res.WriteInt32(1);                            //Party type; 0 = closed, 1 = open.
                res.WriteInt32(1);                            //Normal item distribution; 0 = do not distribute, 1 = random.
                res.WriteInt32(1);                            //Rare item distribution; 0 = do not distribute, 1 = Draw.
                res.WriteUInt32(client.character.instanceId); //Target playyer?
                res.WriteUInt32(client.character.instanceId); //From player instance ID (but doesn't work?)

                int numEntries2 = 0x4;
                for (int j = 0; j < numEntries2; j++)
                {
                    res.WriteInt32(0); //?
                    res.WriteUInt32(client.character.instanceId);
                    res.WriteFixedString($"{client.soul.name}{j}", 0x31);
                    res.WriteFixedString($"{client.character.name}{j}", 0x5B);
                    res.WriteUInt32(client.character.classId);
                    res.WriteByte(client.character.level);
                    res.WriteByte(2); //Criminal Status
                    res.WriteByte(1); //Beginner Protection (bool)
                    res.WriteByte(1); //Membership Status
                    res.WriteByte(1);
                }

                res.WriteByte(3);           //party member count per listed party

                res.WriteUInt32(objective); //objective per listed party
                res.WriteInt32(details);
                res.WriteInt32(unknown);
                res.WriteByte(0);  //party match requirements. 1 for no match error
                res.WriteInt32(i); //recruiting classes per listed party

                res.WriteInt32(i); //"other" column or objective per listed party

                res.WriteFixedString($"Party Comment Box : Loop{i}", 0xB5);
            }

            router.Send(client, (ushort)AreaPacketId.recv_party_search_recruited_party_r, res, ServerType.Area);
        }
        //To be implemented for monsters
        private void SendBattleReportKnockBack(NecClient client, IInstance instance)
        {
            MonsterSpawn monster = (MonsterSpawn)instance;
            IBuffer      res     = BufferProvider.Provide();

            res.WriteUInt32(monster.instanceId);
            res.WriteFloat(0);
            res.WriteFloat(2); // delay in seconds
            router.Send(client.map, (ushort)AreaPacketId.recv_battle_report_noact_notify_knockback, res,
                        ServerType.Area);
        }
        protected override IBuffer ToBuffer()
        {
            IBuffer res = BufferProvider.Provide();

            res.WriteByte(0);
            res.WriteByte(0);
            res.WriteByte(0);

            res.WriteCString("ToBeFound");
            return(res);
        }
        protected override IBuffer ToBuffer()
        {
            IBuffer res = BufferProvider.Provide();

            res.WriteByte(_fromZone);
            res.WriteByte(_fromContainer);
            res.WriteInt16(_fromSlot);
            res.WriteCString(_soulName);  //Length 31-2=DEC47
            res.WriteCString(_charaName); //Length 5B-1=DEC90
            return(res);
        }
        private void SendNotifyDataComplete(NecClient client)
        {
            IBuffer res2 = BufferProvider.Provide();

            res2.WriteByte(0);                         //bool Result
            res2.WriteUInt32(0);                       //Wanted_dead_CharaId - for when a char got sent to prison.  Slot of character in prison
            res2.WriteInt64(0b1111111111111111);       //Soul Premium Flags
            res2.WriteByte(client.soul.criminalLevel); //Crime Level.
            res2.WriteUInt32(0);                       //Soul State
            router.Send(client, (ushort)MsgPacketId.recv_chara_notify_data_complete, res2, ServerType.Msg);
        }
        protected override IBuffer ToBuffer()
        {
            IBuffer res        = BufferProvider.Provide();
            int     numEntries = 0x1E;

            res.WriteInt32(numEntries); //less than or equal to 0x1E
            for (int i = 0; i < numEntries; i++)
            {
                res.WriteInt32(0);
                res.WriteByte(0);
                res.WriteByte(0); //New
                res.WriteFixedString("", 0x61);
                res.WriteInt32(0);
                res.WriteInt32(0);
                res.WriteFixedString("", 0x61);
                res.WriteByte(0); //bool
                res.WriteByte(0); //bool
                res.WriteInt32(0);
                res.WriteInt32(0);
                res.WriteInt32(0);
                res.WriteInt32(0);
                res.WriteInt32(0);
                res.WriteInt32(0);
                res.WriteInt32(0);
                res.WriteInt32(0);
                for (int j = 0; j < 0xA; j++)
                {
                    res.WriteInt32(0);
                    res.WriteFixedString("", 0x10);
                    res.WriteInt16(0);
                    res.WriteInt32(0);
                    res.WriteByte(0);
                    res.WriteInt16(0);
                }

                res.WriteByte(0);
                for (int k = 0; k < 0xC; k++)
                {
                    res.WriteInt32(0);
                    res.WriteFixedString("", 0x10);
                    res.WriteInt16(0);
                    res.WriteInt32(0);
                    res.WriteByte(0);
                    res.WriteInt16(0);
                }

                res.WriteByte(0);
                res.WriteFixedString("", 0x181);
                res.WriteInt32(0); //new
            }

            res.WriteInt32(0);
            return(res);
        }
Esempio n. 17
0
        public override void Handle(NecClient client, NecPacket packet)
        {
            int itemId = 10200101;

            IBuffer res = BufferProvider.Provide();

            res.WriteInt32(0);
            Router.Send(client.Map, (ushort)AreaPacketId.recv_shop_identify_r, res, ServerType.Area);

            SendItemInstanceUnidentified(client, itemId);
        }
Esempio n. 18
0
        public override void Handle(NecClient client, NecPacket packet)
        {
            IBuffer res = BufferProvider.Provide();

            res.WriteInt32(0); // Error: 0 - Success, other values (maybe) erro code
            res.WriteByte(1);  // 0 - Request password for enter, 1 - Set new password     (bool type)
            //Router.Send(client, (ushort)MsgPacketId.recv_soul_select_r, res, ServerType.Msg);

            // res.WriteInt32(1); // 0 = OK | 1 = Failed to return to soul selection
            // Router.Send(client, (ushort) MsgPacketId.recv_chara_select_back_soul_select_r, res, ServerType.Msg);
        }
Esempio n. 19
0
        protected override IBuffer ToBuffer()
        {
            IBuffer res = BufferProvider.Provide();

            res.WriteInt64(0); //item instance ID
            res.WriteInt64(0);
            res.WriteInt64(0);
            res.WriteInt64(0);
            res.WriteInt64(0);
            return(res);
        }
Esempio n. 20
0
        public override void Execute(string[] command, NecClient client, ChatMessage message,
                                     List <ChatResponse> responses)
        {
            //recv_item_update_state = 0x3247,
            IBuffer res = BufferProvider.Provide();

            res.WriteInt64(300000); //ItemID
            res.WriteInt32(200000); //Icon type, [x]00000 = certain armors, 1 = orb? 2 = helmet, up to 6

            Router.Send(client, (ushort)AreaPacketId.recv_item_update_state, res, ServerType.Area);
        }
Esempio n. 21
0
        private void SendCharaPoseNotify(NecClient client)
        {
            IBuffer res = BufferProvider.Provide();

            res.WriteUInt32(client.Character.InstanceId);   //Character ID
            res.WriteInt32(client.Character.charaPose);     //Character pose



            Router.Send(client.Map, (ushort)AreaPacketId.recv_chara_pose_notify, res, ServerType.Area, client);
        }
Esempio n. 22
0
        protected override IBuffer ToBuffer()
        {
            IBuffer res = BufferProvider.Provide();

            res.WriteInt32(0);
            res.WriteInt32(0);
            res.WriteCString(""); //max size is 0x801
            res.WriteCString(""); //max size is 0x801
            res.WriteCString(""); //max size 0x11
            return(res);
        }
Esempio n. 23
0
        public override void Handle(NecClient client, NecPacket packet)
        {
            IBuffer res = BufferProvider.Provide();

            router.Send(client, (ushort)AreaPacketId.recv_battle_release_attack_pose_self, res, ServerType.Area);

            res.WriteUInt32(client.character.instanceId);

            router.Send(client.map, (ushort)AreaPacketId.recv_battle_release_attack_pose_r, res, ServerType.Area);
            router.Send(client.map, (ushort)AreaPacketId.recv_battle_attack_pose_end_notify, res, ServerType.Area, client);
        }
        protected override IBuffer ToBuffer()
        {
            IBuffer res = BufferProvider.Provide();

            res.WriteInt32((int)_response.MessageType);
            res.WriteUInt32(_response.CharacterInstanceId);
            res.WriteFixedString(_response.SoulName, 49);
            res.WriteFixedString(_response.CharacterName, 37);
            res.WriteFixedString(_response.Message, 769);
            return(res);
        }
Esempio n. 25
0
        public override void Handle(NecClient client, NecPacket packet)
        {
            int honorTitleId = packet.data.ReadInt32();

            server.settingRepository.honor.TryGetValue(honorTitleId, out HonorSetting honorSetting);
            IBuffer res = BufferProvider.Provide();

            _Logger.Debug($"You hovered over a new title. {honorSetting.name}  Great job!");

            //Update the database entry for Honor ID (readInt32)  from new 0 to .. not-new  1
        }
Esempio n. 26
0
        public override void Handle(NecClient client, NecPacket packet)
        {
            int doorInstanceId = packet.data.ReadInt32();
            int doorState      = packet.data.ReadInt32();

            IBuffer res = BufferProvider.Provide();

            res.WriteInt32(0); //Door instance id?
            router.Send(client.map, (ushort)AreaPacketId.recv_door_close_r, res, ServerType.Area);
            SendDoorUpdateNotify(client, doorInstanceId, doorState);
        }
        protected override IBuffer ToBuffer()
        {
            IBuffer res = BufferProvider.Provide();

            res.WriteInt32(1);             //Result

            res.WriteInt32(_objectId);     //objectID

            res.WriteCString("ToBeFound"); // name
            return(res);
        }
        private void SendChatNotifyMessage(NecClient client, string Message, int ChatType)
        {
            IBuffer res = BufferProvider.Provide();

            res.WriteInt32(ChatType);
            res.WriteUInt32(client.Character.InstanceId);
            res.WriteFixedString($"{client.Soul.Name}", 49);
            res.WriteFixedString($"{client.Character.Name}", 37);
            res.WriteFixedString($"{Message}", 769);
            Router.Send(client.Map, (ushort)AreaPacketId.recv_chat_notify_message, res, ServerType.Area);
        }
Esempio n. 29
0
        public override void Handle(NecClient client, NecPacket packet)
        {
            IBuffer res = BufferProvider.Provide();

            router.Send(client, (ushort)AreaPacketId.recv_raisescale_view_close, res, ServerType.Area);

            IBuffer res7 = BufferProvider.Provide();

            res7.WriteByte(0);
            router.Send(client, (ushort)AreaPacketId.recv_event_end, res7, ServerType.Area);
        }
        protected override IBuffer ToBuffer()
        {
            IBuffer res = BufferProvider.Provide();

            res.WriteByte(0);
            res.WriteByte(0);
            res.WriteInt32(0);
            res.WriteInt64(0);
            res.WriteFixedString("", 0x10);
            return(res);
        }