WriteRpcLog() public static méthode

public static WriteRpcLog ( Object obj ) : void
obj Object
Résultat void
Exemple #1
0
        public void sendSetMissionObjective(ushort id, ushort state, string missionObjective, WorldClient client)
        {
            //format : rpcsize+uint16header+ uint8(0) + uint16(0600), + uint8 state + sizedString (uint16 size + string + 00?)
            PacketContent pak = new PacketContent();

            pak.addUint16((UInt16)RPCResponseHeaders.SERVER_MISSION_SET_OBJECTIVE, 0);
            pak.addUintShort(id);
            pak.addUint16(6, 1);
            pak.addUintShort(state);
            pak.addSizedTerminatedString(missionObjective);
            Output.WriteRpcLog("MISSION PAK: " + StringUtils.bytesToString(pak.returnFinalPacket()));
            // Now send the message to the player queue
            client.messageQueue.addRpcMessage(pak.returnFinalPacket());
        }
Exemple #2
0
        public void processHyperJump(ref byte[] rpcData)
        {
            double       xDest  = 0;
            double       yDest  = 0;
            double       zDest  = 0;
            PacketReader reader = new PacketReader(rpcData);

            xDest = reader.readDouble(1);
            yDest = reader.readDouble(1);
            zDest = reader.readDouble(1);

            // ToDo: figure out what this 6 bytes are could be
            // Skip 6 bytes as we currently didnt knew
            byte[] unknownJumpBytes = reader.readBytes(6);
            float  maybeMaxHeight   = reader.readFloat(1);

            reader.incrementOffsetByValue(1);
            UInt32 clientJumpIdUnknown = reader.readUInt32(1);

            // Players current X Z Y
            double x = 0; double y = 0; double z = 0;

            byte[] Ltvector3d = Store.currentClient.playerInstance.Position.getValue();
            NumericalUtils.LtVector3dToDoubles(Ltvector3d, ref x, ref y, ref z);
            int   rotation = (int)Store.currentClient.playerInstance.YawInterval.getValue()[0];
            float xPos     = (float)x;
            float yPos     = (float)y;
            float zPos     = (float)z;

            LtVector3f[] JumpMovements = Maths.ParabolicMovement(new LtVector3f(xPos, yPos, zPos), new LtVector3f((float)xDest, (float)yDest, (float)zDest), 50, 12);

            float  distance = Maths.getDistance(xPos, yPos, zPos, (float)xDest, (float)yDest, (float)zDest);
            UInt16 duration = (UInt16)(distance * 0.5f);

            UInt32 startTime = TimeUtils.getUnixTimeUint32();
            UInt32 endTime   = startTime + duration;

            ServerPackets packets = new ServerPackets();

            packets.sendHyperJumpID(clientJumpIdUnknown);
            foreach (LtVector3f currentJumpPos in JumpMovements)
            {
                packets.SendHyperJumpStepUpdate(currentJumpPos, xDest, yDest, zDest, maybeMaxHeight, endTime);
            }

            //packets.SendHyperJumpUpdate(xPos,yPos,zPos,(float)xDest,(float)yDest,(float)zDest,startTime,endTime);
            #if DEBUG
            Output.WriteRpcLog("Finished the HyperJumps");
            #endif
        }
Exemple #3
0
        public void processMissionaccept(ref byte[] packet)
        {
            byte[] contactBytes = { packet[0], packet[1] };
            UInt16 contactId    = NumericalUtils.ByteArrayToUint16(contactBytes, 1);
            ushort missionId    = packet[2];

            Output.WriteRpcLog("Mission Accept Data:" + StringUtils.bytesToString(packet));
            ServerPackets pak = new ServerPackets();

            pak.sendMissionAccept(Store.currentClient, contactId, missionId);
            pak.sendSetMissionObjective(1, 0, "This is the test Mission, mate", Store.currentClient);
            pak.sendSetMissionObjective(2, 0, "Success", Store.currentClient);
            //pak.sendSetMissionObjective(3, 2, "Failed Remain", Store.currentClient);
            //pak.sendSetMissionObjective(4, 3, "Failed Clear", Store.currentClient);
        }
Exemple #4
0
        /**
         * This handles all RPC requests for the client
         */

        public void HandleRpc(int header, ref byte[] rpcData)
        {
            ServerPackets pak = new ServerPackets();

                        #if DEBUG
            pak.sendSystemChatMessage(Store.currentClient, "Handle RPC Client Request Header " + StringUtils.bytesToString_NS(NumericalUtils.int32ToByteArray(header, 0)), "BROADCAST");
                        #endif
            switch (header)
            {
            case (int)RPCRequestHeader.CLIENT_SPAWN_READY:
                new PlayerHandler().processSpawn();
                new PlayerHandler().processAttributes();
                break;

            case (int)RPCRequestHeader.CLIENT_CLOSE_COMBAT:
                                        #if DEBUG
                Output.WriteRpcLog("CLOSE COMBAT REQUEST");
                                        #endif
                new TestUnitHandler().testCloseCombat(ref rpcData);
                break;

            case (int)RPCRequestHeader.CLIENT_LEAVE_COMBAT:

                break;

            case (int)RPCRequestHeader.CLIENT_RANGE_COMBAT:
                                #if DEBUG
                Output.WriteRpcLog("RANGE COMBAT REQUEST");
                                        #endif
                new TestUnitHandler().testCloseCombat(ref rpcData);
                break;

            case (int)RPCRequestHeader.CLIENT_CHAT:
                new ChatHandler().processChat(ref rpcData);
                break;

            case (int)RPCRequestHeader.CLIENT_OBJECTINTERACTION_DYNAMIC:
                new ObjectInteractionHandler().processObjectDynamic(ref rpcData);
                break;

            case (int)RPCRequestHeader.CLIENT_OBJECTINTERACTION_STATIC:
                new ObjectInteractionHandler().processObjectStatic(ref rpcData);
                break;

            case (int)RPCRequestHeader.CLIENT_JUMP_START:
                //ToDo: Split Jump and Hyperjump
                new AbilityHandler().processHyperJump(ref rpcData);
                break;

            case (int)RPCRequestHeader.CLIENT_JUMP_CANCEL:
                // ToDo:
                new AbilityHandler().processHyperJumpCancel(ref rpcData);
                break;

            case (int)RPCRequestHeader.CLIENT_TARGET:
                new PlayerHelper().processTargetChange(ref rpcData, Store.currentClient);
                break;

            case (int)RPCRequestHeader.CLIENT_MISSION_INVITE_PLAYER:
                new MissionHandler().processInvitePlayerToMissionTeam(ref rpcData);
                break;

            case (int)RPCRequestHeader.CLIENT_MISSION_REQUEST:
                new MissionHandler().processMissionList(ref rpcData);
                break;

            case (int)RPCRequestHeader.CLIENT_MISSION_INFO:
                new MissionHandler().processLoadMissionInfo(ref rpcData);
                break;

            case (int)RPCRequestHeader.CLIENT_MISSION_ACCEPT:
                new MissionHandler().processMissionaccept(ref rpcData);
                break;

            case (int)RPCRequestHeader.CLIENT_MISSION_ABORT:
                new MissionHandler().processAbortMission(ref rpcData);
                break;

            case (int)RPCRequestHeader.CLIENT_PARTY_LEAVE:
                break;

            // Team
            case (int)RPCRequestHeader.CLIENT_HANDLE_MISSION_INVITE:
                new TeamHandler().processInviteAnswer(ref rpcData);
                break;

            // Faction and Crews
            case (int)RPCRequestHeader.CREW_INVITE_PLAYER:
                new FCHandler().processInvitePlayerToCrew(ref rpcData);
                break;

            case (int)RPCRequestHeader.CLIENT_FACTION_INFO:
                new FCHandler().processLoadFactionName(ref rpcData);
                break;

            // Abilitys
            case (int)RPCRequestHeader.CLIENT_UPGRADE_ABILITY_LEVEL:
                // ToDo: Research and implement^^
                break;

            case (int)RPCRequestHeader.CLIENT_ABILITY_HANDLER:
                new AbilityHandler().processAbility(ref rpcData);
                break;

            case (int)RPCRequestHeader.CLIENT_CHANGE_CT:
                // ToDo: Implement Change of CT
                break;

            case (int)RPCRequestHeader.CLIENT_ABILITY_LOADER:
                new PlayerHelper().processLoadAbility(ref rpcData);
                break;

            case (int)RPCRequestHeader.CLIENT_HARDLINE_EXIT_LA_CONFIRM:
                new TeleportHandler().processHardlineExitConfirm(ref rpcData);
                break;

            case (int)RPCRequestHeader.CLIENT_EXIT_GAME_FINISH:
                new TeleportHandler().processGameFinish();
                break;

            case (int)RPCRequestHeader.CLIENT_READY_WORLDCHANGE:
                new TeleportHandler().processTeleportReset(ref rpcData);
                break;

            case (int)RPCRequestHeader.CLIENT_TELEPORT_HL:
                new TeleportHandler().processHardlineTeleport(ref rpcData);
                break;

            case (int)RPCRequestHeader.CLIENT_HARDLINE_STATUS_REQUEST:
                new TeleportHandler().processHardlineStatusRequest(ref rpcData);
                break;


            // Inventory
            case (int)RPCRequestHeader.CLIENT_ITEM_MOUNT_RSI:
                new InventoryHandler().processMountItem(ref rpcData);
                break;

            case (int)RPCRequestHeader.CLIENT_ITEM_UNMOUNT_RSI:
                new InventoryHandler().processUnmountItem(ref rpcData);
                break;

            case (int)RPCRequestHeader.CLIENT_ITEM_MOVE_SLOT:
                new InventoryHandler().processItemMove(ref rpcData);
                break;

            case (int)RPCRequestHeader.CLIENT_ITEM_RECYCLE:
                new InventoryHandler().processItemDelete(ref rpcData);
                break;

            // Vendor
            case (int)RPCRequestHeader.CLIENT_VENDOR_BUY:
                new VendorHandler().processBuyItem(ref rpcData);
                break;

            // MarketPlace
            case (int)RPCRequestHeader.CLIENT_MP_OPEN:
                new TestUnitHandler().processMarketTest(ref rpcData);
                break;

            case (int)RPCRequestHeader.CLIENT_MP_LIST_ITEMS:
                new MarketPlaceHandler().processMarketplaceList(ref rpcData);
                break;

            // Player

            case (int)RPCRequestHeader.CLIENT_PLAYER_GET_BACKGROUND:
                new PlayerHandler().processGetBackgroundRequest(ref rpcData);
                break;

            case (int)RPCRequestHeader.CLIENT_PLAYER_SET_BACKGROUND:
                new PlayerHandler().processSetBackgroundRequest(ref rpcData);
                break;

            // Command Helper
            case (int)RPCRequestHeader.CLIENT_CMD_WHEREAMI:
                new CommandHandler().processWhereamiCommand(ref rpcData);
                break;

            case (int)RPCRequestHeader.CLIENT_CMD_WHO:
                new CommandHandler().processWhoCommand(ref rpcData);
                break;

            // Emote and Mood Helpers
            case (int)RPCRequestHeader.CLIENT_CHANGE_MOOD:
                new PlayerHandler().processMood(ref rpcData);
                break;

            case (int)RPCRequestHeader.CLIENT_EMOTE:
                new PlayerHandler().processEmote(ref rpcData);
                break;

            case (int)RPCRequestHeader.CLIENT_REGION_LOADED:
                new RegionHandler().processRegionLoaded(ref rpcData);
                //new PlayerInitHelper().processRegionSettings();
                break;

            case (int)RPCRequestHeader.CLIENT_LOOT_ACCEPT:
                new PlayerHandler().processLootAccepted();
                break;


            default:
                //PASS :D
                byte[] headers = NumericalUtils.int32ToByteArray(header, 1);

                                #if DEBUG
                string message = "RPCMAIN : Unknown Header " +
                                 StringUtils.bytesToString_NS(new byte[] { headers[0], headers[1] }) + " \n Content:\n " +
                                 StringUtils.bytesToString_NS(rpcData);
                Output.WriteRpcLog(message);
                                        #endif

                break;
            }
        }
Exemple #5
0
        /**
         * This handles all RPC requests for the client
         */

        public void HandleRpc(int header, ref byte[] rpcData)
        {
            ServerPackets pak = new ServerPackets();

            pak.sendSystemChatMessage(Store.currentClient, "Handle RPC Client Request Header " + StringUtils.bytesToString_NS(NumericalUtils.int32ToByteArray(header, 0)), "BROADCAST");
            switch (header)
            {
            case (int)RPCRequestHeader.CLIENT_SPAWN_READY:
                new PlayerHandler().processSpawn();
                new PlayerHandler().processAttributes();
                break;

            case (int)RPCRequestHeader.CLIENT_CLOSE_COMBAT:
                Output.WriteRpcLog("CLOSE COMBAT REQUEST");
                new TestUnitHandler().testCloseCombat(ref rpcData);
                break;

            case (int)RPCRequestHeader.CLIENT_LEAVE_COMBAT:

                break;

            case (int)RPCRequestHeader.CLIENT_RANGE_COMBAT:
                Output.WriteRpcLog("RANGE COMBAT REQUEST");
                new TestUnitHandler().testCloseCombat(ref rpcData);
                break;

            case (int)RPCRequestHeader.CLIENT_CHAT:
                new ChatHandler().processChat(ref rpcData);
                break;

            case (int)RPCRequestHeader.CLIENT_OBJECTINTERACTION_DYNAMIC:
                new ObjectInteractionHandler().processObjectDynamic(ref rpcData);
                Output.writeToLogForConsole("RPCMAIN : Handle OBJECTINTERACTION_DYNAMIC");
                break;

            case (int)RPCRequestHeader.CLIENT_OBJECTINTERACTION_STATIC:
                new ObjectInteractionHandler().processObjectStatic(ref rpcData);
                Output.writeToLogForConsole("RPCMAIN : Handle OBJECTINTERACTION_STATIC");
                break;

            case (int)RPCRequestHeader.CLIENT_JUMP:
                Output.writeToLogForConsole("RPCMAIN : Handle JUMP");
                //ToDo: Split Jump and Hyperjump
                //new TestUnitHandler().processHyperJump(ref rpcData);
                new TestUnitHandler().processHyperJump(ref rpcData);
                break;

            case (int)RPCRequestHeader.CLIENT_TARGET:
                new PlayerHelper().processTargetChange(ref rpcData, Store.currentClient);
                break;

            case (int)RPCRequestHeader.CLIENT_MISSION_REQUEST:
                new MissionHandler().processMissionList(ref rpcData);
                break;

            case (int)RPCRequestHeader.CLIENT_MISSION_INFO:
                new MissionHandler().processLoadMissionInfo(ref rpcData);
                break;

            case (int)RPCRequestHeader.CLIENT_MISSION_ACCEPT:
                new MissionHandler().processMissionaccept(ref rpcData);
                break;

            case (int)RPCRequestHeader.CLIENT_MISSION_ABORT:
                new MissionHandler().processAbortMission(ref rpcData);
                break;

            case (int)RPCRequestHeader.CLIENT_PARTY_LEAVE:
                break;

            // Team
            case (int)RPCRequestHeader.CLIENT_HANDLE_MISSION_INVITE:
                new TeamHandler().processTeamInviteAnswer(ref rpcData);
                break;

            // Faction and Crews
            case (int)RPCRequestHeader.CLIENT_FACTION_INFO:
                new FCHandler().processLoadFactionName(ref rpcData);
                // ToDo: implement response with following format :
                // size + 80 f5 + uint32 factionId + String(40 size? unusual...)
                // Example: 30 80 f5 11 ba 00 00 48 79 50 6e 30 74 69 5a 65 44 20 4d 69 4e 64 5a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
                break;

            // Abilitys
            case (int)RPCRequestHeader.CLIENT_UPGRADE_ABILITY_LEVEL:
                // ToDo: Research and implement^^
                break;

            case (int)RPCRequestHeader.CLIENT_ABILITY_HANDLER:
                new AbilityHandler().processAbility(ref rpcData);
                break;

            case (int)RPCRequestHeader.CLIENT_CHANGE_CT:
                new PlayerHelper().processUpdateExp();
                break;

            case (int)RPCRequestHeader.CLIENT_ABILITY_LOADER:
                new PlayerHelper().processLoadAbility(ref rpcData);
                break;

            case (int)RPCRequestHeader.CLIENT_HARDLINE_EXIT_LA_CONFIRM:
                new TeleportHandler().processHardlineExitConfirm(ref rpcData);
                break;

            case (int)RPCRequestHeader.CLIENT_READY_WORLDCHANGE:
                Output.WriteLine("RPCMAIN : RESET_RPC detect");
                new TeleportHandler().processTeleportReset(ref rpcData);
                break;

            case (int)RPCRequestHeader.CLIENT_TELEPORT_HL:
                new TeleportHandler().processHardlineTeleport(ref rpcData);
                break;

            case (int)RPCRequestHeader.CLIENT_HARDLINE_STATUS_REQUEST:
                new TeleportHandler().processHardlineStatusRequest(ref rpcData);
                break;


            // Inventory
            case (int)RPCRequestHeader.CLIENT_ITEM_MOVE_SLOT:
                new InventoryHandler().processItemMove(ref rpcData);
                break;

            case (int)RPCRequestHeader.CLIENT_ITEM_RECYCLE:
                new InventoryHandler().processItemDelete(ref rpcData);
                break;

            // Vendor
            case (int)RPCRequestHeader.CLIENT_VENDOR_BUY:
                new VendorHandler().processBuyItem(ref rpcData);
                break;

            // MarketPlace
            case (int)RPCRequestHeader.CLIENT_MP_OPEN:
                new TestUnitHandler().processMarketTest(ref rpcData);
                break;

            case (int)RPCRequestHeader.CLIENT_MP_LIST_ITEMS:
                new MarketPlaceHandler().processMarketplaceList(ref rpcData);
                break;


            // Command Helper
            case (int)RPCRequestHeader.CLIENT_CMD_WHEREAMI:
                new CommandHandler().processWhereamiCommand(ref rpcData);
                break;

            // Emote and Mood Helpers
            case (int)RPCRequestHeader.CLIENT_CHANGE_MOOD:
                new PlayerHandler().processMood(ref rpcData);
                break;

            case (int)RPCRequestHeader.CLIENT_EMOTE:
                new PlayerHandler().processEmote(ref rpcData);
                break;

            case (int)RPCRequestHeader.CLIENT_REGION_LOADED:
                new RegionHandler().processRegionLoaded(ref rpcData);
                //new PlayerInitHelper().processRegionSettings();
                break;


            default:
                //PASS :D
                byte[] headers = NumericalUtils.int32ToByteArray(header, 1);

                string message = "RPCMAIN : Unknown Header " + StringUtils.bytesToString_NS(new byte[] { headers[0], headers[1] }) + " \n Content:\n " + StringUtils.bytesToString_NS(rpcData);
                Output.WriteLine(message);
                Output.WriteRpcLog(message);

                break;
            }
        }