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); }
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); }
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); }
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); }
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 }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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 }
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); }
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); }