public override OperationResponse Handle(OperationRequest request, SendParameters sendParameters)
        {
            RPCInvokeOperation operation = new RPCInvokeOperation(peer.Protocol, request);

            if (!operation.IsValid)
            {
                return(InvalidParametersOperationResponse(Common.SelectCharacterOperationCode.RPCInvokeMethod));
            }

            OperationResponse response = null;

            switch (operation.rpcId)
            {
#if LOCAL
            case RPCID.rpc_sc_SetRaceStatus: {
                response = CallSetRaceStatus(request, operation);
            }
            break;
#endif
            case RPCID.rpc_sc_DepositCreditsToCoalition: {
                response = DepositCreditsToCoalition(request, operation);
            }
            break;

            case RPCID.rpc_sc_DepositPvpPointsToCoalition: {
                response = DepositPvpPointsToCoalition(request, operation);
            }
            break;

            case RPCID.rpc_sc_WithdrawCreditsFromCoalition: {
                response = WithdrawCreditsFromCoalition(request, operation);
            }
            break;

            case RPCID.rpc_sc_WithdrawPvpPointsFromCoalition: {
                response = WithdrawPvpPointsFromCoalition(request, operation);
            }
            break;

            case RPCID.rpc_sc_SetCoalitionPoster: {
                response = SetCoalitionPoster(request, operation);
            }
            break;

            default:
                response = new OperationResponse(request.OperationCode)
                {
                    ReturnCode   = (short)ReturnCode.InvalidRPCID,
                    DebugMessage = string.Format("not found rpc: {0} at SelectCharacterApplication", operation.rpcId)
                };
                break;
            }
            return(response);
        }
 private OperationResponse SetCoalitionPoster(OperationRequest request, RPCInvokeOperation op)
 {
     if (op.parameters != null && op.parameters.Length >= 3)
     {
         string            cid              = (string)op.parameters[0];
         string            gid              = (string)op.parameters[1];
         string            poster           = (string)op.parameters[2];
         ActionResult      actionResult     = application.Guilds.SetPoster(cid, gid, poster);
         RPCInvokeResponse responseInstance = new RPCInvokeResponse {
             rpcId  = op.rpcId,
             result = actionResult.GetInfo()
         };
         return(new OperationResponse(request.OperationCode, responseInstance));
     }
     return(DefaultError());
 }
        private OperationResponse CallSetRaceStatus(OperationRequest request, RPCInvokeOperation op)
        {
            if (op.parameters != null && op.parameters.Length >= 3)
            {
                string gameRef    = (string)op.parameters[0];
                string charId     = (string)op.parameters[1];
                int    raceStatus = (int)op.parameters[2];
                bool   success    = application.Players.SetRaceStatus(gameRef, charId, raceStatus);

                RPCInvokeResponse responseInstance = new RPCInvokeResponse {
                    rpcId  = op.rpcId,
                    result = success
                };
                return(new OperationResponse(request.OperationCode, responseInstance));
            }
            return(DefaultError());
        }
        private OperationResponse CallGetAchievments(MmoActor player, OperationRequest request, RPCInvokeOperation op)
        {
            Hashtable         hash             = player.ActionExecutor.GetAchievmentInfo();
            RPCInvokeResponse responseInstance = new RPCInvokeResponse {
                rpcId  = op.rpcId,
                result = hash
            };

            return(new OperationResponse(request.OperationCode, responseInstance));
        }
        private OperationResponse CallGetParamDetail(MmoActor player, OperationRequest request, RPCInvokeOperation op)
        {
            if (op.parameters != null && op.parameters.Length >= 1)
            {
                int parameterName = (int)op.parameters[0];
                RPCInvokeResponse responseInstance = null;
                switch (parameterName)
                {
                case ShipParamName.speed: {
                    var       movable         = player.GetComponent <PlayerShipMovable>();
                    Hashtable speedDetailHash = null;
                    if (movable != null)
                    {
                        speedDetailHash = movable.GetSpeedDetail();
                    }
                    else
                    {
                        speedDetailHash = new Hashtable();
                    }
                    speedDetailHash.Add((int)SPC.ShipParamName, ShipParamName.speed);
                    responseInstance = new RPCInvokeResponse {
                        rpcId  = op.rpcId,
                        result = speedDetailHash
                    };
                }
                break;

                case ShipParamName.resist: {
                    var       playerShip = player.GetComponent <PlayerShip>();
                    Hashtable resistHash = null;
                    if (playerShip != null)
                    {
                        resistHash = playerShip.GetResistanceDetail();
                    }
                    else
                    {
                        resistHash = new Hashtable();
                    }
                    resistHash.Add((int)SPC.ShipParamName, ShipParamName.resist);
                    responseInstance = new RPCInvokeResponse {
                        rpcId  = op.rpcId,
                        result = resistHash
                    };
                }
                break;

                default:
                    return(InvalidOperationParameter(request));
                }

                return(new OperationResponse(request.OperationCode, responseInstance));
            }
            return(InvalidOperationParameter(request));
        }
 private OperationResponse CallResetNew(MmoActor player, OperationRequest request, RPCInvokeOperation op)
 {
     if (op.parameters != null && op.parameters.Length >= 1)
     {
         InventoryType inventoryType = (InventoryType)(byte)op.parameters[0];
         bool          success       = true;
         if (inventoryType == InventoryType.ship)
         {
             player.Inventory.ResetNew();
         }
         else if (inventoryType == InventoryType.station)
         {
             player.Station.StationInventory.ResetNew();
         }
         else
         {
             success = false;
         }
         RPCInvokeResponse responseInstance = new RPCInvokeResponse {
             rpcId  = op.rpcId,
             result = success
         };
         return(new OperationResponse(request.OperationCode, responseInstance));
     }
     return(InvalidOperationParameter(request));
 }
        private OperationResponse CallUnlockLore(MmoActor player, OperationRequest request, RPCInvokeOperation op)
        {
            if (op.parameters != null && op.parameters.Length >= 1)
            {
                string            loreBoxId = (string)op.parameters[0];
                NebulaObject      loreBoxObject;
                RPCInvokeResponse responseInstance = new RPCInvokeResponse {
                    rpcId = op.rpcId
                };

                if (player.nebulaObject.mmoWorld().TryGetObject((byte)ItemType.Bot, loreBoxId, out loreBoxObject))
                {
                    float distance = player.transform.DistanceTo(loreBoxObject.transform);
                    if (distance <= LORE_BOX_ACTION_DISTANCE)
                    {
                        var loreBoxComponent = loreBoxObject.GetComponent <LoreBoxComponent>();

                        if (loreBoxComponent != null)
                        {
                            if (player.GetComponent <AchievmentComponent>().FoundLoreRecord(loreBoxComponent.recordId))
                            {
                                (loreBoxObject as GameObject).Destroy();

                                responseInstance.result = new Hashtable {
                                    { (int)SPC.ReturnCode, (int)RPCErrorCode.Ok }
                                };
                            }
                            else
                            {
                                responseInstance.result = new Hashtable {
                                    { (int)SPC.ReturnCode, (int)RPCErrorCode.LoreRecordAlreadyUnlocked }
                                };
                            }
                        }
                        else
                        {
                            responseInstance.result = new Hashtable {
                                { (int)SPC.ReturnCode, (int)RPCErrorCode.ComponentNotFound }
                            };
                        }
                    }
                    else
                    {
                        responseInstance.result = new Hashtable {
                            { (int)SPC.ReturnCode, (int)RPCErrorCode.DistanceIsFar }
                        };
                    }
                }
                else
                {
                    responseInstance.result = new Hashtable {
                        { (int)SPC.ReturnCode, (int)RPCErrorCode.ItemNotFound },
                    };
                }

                return(new OperationResponse(request.OperationCode, responseInstance));
            }
            else
            {
                return(InvalidOperationParameter(request));
            }
        }
 /// <summary>
 /// Handle start collecting asteroid action. Receive request from client and send StartCollectAsteroid generic event to all subscribers
 /// </summary>
 private OperationResponse CallStartAsteroidCollecting(MmoActor player, OperationRequest request, RPCInvokeOperation op)
 {
     if (op.parameters != null && op.parameters.Length >= 2)
     {
         byte   containerType = (byte)op.parameters[0];
         string containerId   = (string)op.parameters[1];
         var    mmoComponent  = player.GetComponent <MmoMessageComponent>();
         if (mmoComponent)
         {
             mmoComponent.PublishStartAsteroidCollecting(containerType, containerId);
         }
         RPCInvokeResponse responseInstance = new RPCInvokeResponse {
             rpcId  = op.rpcId,
             result = new Hashtable {
                 { (int)SPC.ReturnCode, (int)RPCErrorCode.Ok },
                 { (int)SPC.ItemId, containerId },
                 { (int)SPC.ItemType, containerType }
             }
         };
         return(new OperationResponse(request.OperationCode, responseInstance));
     }
     else
     {
         return(InvalidOperationParameter(request));
     }
 }
 private OperationResponse CallUseCreditsBag(MmoActor player, OperationRequest request, RPCInvokeOperation op)
 {
     if (op.parameters != null && op.parameters.Length >= 1)
     {
         string itemId = (string)op.parameters[0];
         ServerInventoryItem creditsBagItem;
         if (player.Station.StationInventory.TryGetItem(InventoryObjectType.credits_bag, itemId, out creditsBagItem))
         {
             if (creditsBagItem.Count > 0)
             {
                 int count = (creditsBagItem.Object as CreditsBagObject).count;
                 player.ActionExecutor._AddCredits(count);
                 player.Station.StationInventory.Remove(InventoryObjectType.credits_bag, itemId, 1);
                 player.EventOnStationHoldUpdated();
                 RPCInvokeResponse respInstance = new RPCInvokeResponse {
                     rpcId  = op.rpcId,
                     result = new Hashtable {
                         { (int)SPC.ReturnCode, (int)RPCErrorCode.Ok },
                         { (int)SPC.Count, count }
                     }
                 };
                 return(new OperationResponse(request.OperationCode, respInstance));
             }
             else
             {
                 return(ErrorResponse(request, op.rpcId, RPCErrorCode.CountIsZero));
             }
         }
         else
         {
             return(ErrorResponse(request, op.rpcId, RPCErrorCode.ItemNotFound));
         }
     }
     return(InvalidOperationParameter(request));
 }
        private OperationResponse CallUserEvent(MmoActor player, OperationRequest request, RPCInvokeOperation op)
        {
            if (op.parameters != null && op.parameters.Length > 0)
            {
                RPCErrorCode  code      = RPCErrorCode.Ok;
                UserEventName eventName = (UserEventName)(int)op.parameters[0];
                switch (eventName)
                {
                case UserEventName.object_scanner_select_ship:
                case UserEventName.start_moving:
                case UserEventName.rotate_camera: {
                    //if (player.GetComponent<QuestManager>().TryCheckActiveQuests(new UserEvent(eventName))) {
                    //    s_Log.InfoFormat("player complete some quest with event: {0}".Lime(), eventName);
                    //} else {
                    //    s_Log.InfoFormat("no quest completed by event: {0}".Orange(), eventName);
                    //}
                }
                break;

                case UserEventName.dialog_completed: {
                    //if(op.parameters.Length > 1) {
                    //    string dialogId = (string)op.parameters[1];
                    //    player.GetComponent<DialogManager>().CompleteDialog(dialogId);
                    //} else {
                    //    code = RPCErrorCode.MissedParameter;
                    //}
                }
                break;

                default: {
                    s_Log.Info(string.Format("error: no support for event: {0}", eventName).Red());
                    code = RPCErrorCode.UnsupportedEvent;
                }
                break;
                }

                RPCInvokeResponse respInstance = new RPCInvokeResponse {
                    rpcId  = op.rpcId,
                    result = (int)code
                };
                return(new OperationResponse(request.OperationCode, respInstance));
            }
            return(InvalidOperationParameter(request));
        }
        private OperationResponse CallResetQuests(MmoActor player, OperationRequest request, RPCInvokeOperation op)
        {
            //player.GetComponent<QuestManager>().Reset();
            //player.GetComponent<DialogManager>().Reset();
            RPCInvokeResponse respInstance = new RPCInvokeResponse {
                rpcId  = op.rpcId,
                result = (int)RPCErrorCode.Ok
            };

            return(new OperationResponse(request.OperationCode, respInstance));
        }
 private OperationResponse CallActivate(MmoActor player, OperationRequest request, RPCInvokeOperation op)
 {
     if (op.parameters != null && op.parameters.Length > 0)
     {
         string activatorId = op.parameters[0] as string;
         if (!string.IsNullOrEmpty(activatorId))
         {
             Hashtable         hash         = player.ActionExecutor.Activate(activatorId);
             RPCInvokeResponse respInstance = new RPCInvokeResponse {
                 rpcId  = op.rpcId,
                 result = hash
             };
             return(new OperationResponse(request.OperationCode, respInstance));
         }
     }
     return(InvalidOperationParameter(request));
 }
        private OperationResponse CallSendEventOnOtherChannel(MmoActor player, OperationRequest request, RPCInvokeOperation op)
        {
            player.GetComponent <MmoMessageComponent>()?.TestReceiveEventOnOtherChannel();
            RPCInvokeResponse responseInstance = new RPCInvokeResponse {
                rpcId  = op.rpcId,
                result = new Hashtable()
            };

            return(new OperationResponse(request.OperationCode, responseInstance));
        }
        private OperationResponse CallGetNewQuestsUpdateEvent(MmoActor player, OperationRequest request, RPCInvokeOperation op)
        {
            player.GetComponent <QuestManager>()?.SendQuestsUpdate();
            RPCInvokeResponse responseInstance = new RPCInvokeResponse {
                rpcId  = op.rpcId,
                result = new Hashtable()
            };

            return(new OperationResponse(request.OperationCode, responseInstance));
        }
        public override OperationResponse Handle(MmoActor actor, OperationRequest request, SendParameters sendParameters)
        {
            var operation = new RPCInvokeOperation(actor.Peer.Protocol, request);

            if (!operation.IsValid)
            {
                return(new OperationResponse(request.OperationCode)
                {
                    ReturnCode = (int)ReturnCode.InvalidOperationParameter,
                    DebugMessage = operation.GetErrorMessage()
                });
            }

            switch (operation.rpcId)
            {
            case RPCID.rpc_ProposeContract:
                return(CallProposeContract(actor, request, operation));

#if LOCAL
            case RPCID.rpc_RestartLoop:
                return(CallRestartLoop(actor, request, operation));
#endif
            case RPCID.rpc_AcceptContract:
                return(CallAcceptContract(actor, request, operation));

            case RPCID.rpc_DeclineContract:
                return(CallDeclineContract(actor, request, operation));

            case RPCID.rpc_CompleteContract:
                return(CallCompleteContract(actor, request, operation));

#if LOCAL
            case RPCID.rpc_TestAddContractItems:
                return(CallTestAddContractItems(actor, request, operation));

            case RPCID.rpc_TestRemoveContractItems:
                return(CallTestRemoveContractItems(actor, request, operation));
#endif
            case RPCID.rpc_GetAchievments:
                return(CallGetAchievments(actor, request, operation));

            case RPCID.rpc_GetParamDetail:
                return(CallGetParamDetail(actor, request, operation));

            case RPCID.rpc_SetPlayerMark:
                return(CallSetPlayerMark(actor, request, operation));

            case RPCID.rpc_ResetNew:
                return(CallResetNew(actor, request, operation));

#if LOCAL
            case RPCID.rpc_TestKill:
                return(CallTestKill(actor, request, operation));
#endif
            case RPCID.rpc_UnlockLore:
                return(CallUnlockLore(actor, request, operation));

#if LOCAL
            case RPCID.rpc_TestUnlockFullLore:
                return(CallUnlockAllLore(actor, request, operation));
#endif
            case RPCID.rpc_StartAsteroidCollecting:
                return(CallStartAsteroidCollecting(actor, request, operation));

            case RPCID.rpc_ForceDispose:
                return(CallForceDispose(actor, request, operation));

            case RPCID.rpc_UseCreditsBag:
                return(CallUseCreditsBag(actor, request, operation));

            case RPCID.rpc_CreateCommandCenter:
                return(CallCreateCommandCenter(actor, request, operation));

            case RPCID.rpc_CreatePlanetObjectTurret:
                return(CallCreatePlanetTurret(actor, request, operation));

            case RPCID.rpc_CreatePlanetObjectResourceHangar:
                return(CallCreatePlanetResourceHangar(actor, request, operation));

            case RPCID.rpc_CreatePlanetObjectResourceAccelerator:
                return(CallCreatePlanetResourceAccelerator(actor, request, operation));

            case RPCID.rpc_CreatePlanetObjectMiningStation:
                return(CallCreatePlanetMiningStation(actor, request, operation));

            case RPCID.rpc_GetCells:
                return(CallGetCells(actor, request, operation));

//#if LOCAL
            case RPCID.rpc_resetSystemToNeutral:
                return(CallResetSystemToNeutral(actor, request, operation));

//#endif
            case RPCID.rpc_CollectOreFromPlanetMiningStation:
                return(CallCollectOreFromPlanetMiningStation(actor, request, operation));

#if LOCAL
            case RPCID.rpc_CreateTestSharedChest:
                return(CallCreateTestSharedChest(actor, request, operation));
#endif
            case RPCID.rpc_MoveAllFromInventoryToStationWithExclude:
                return(CallMoveAllFromInventoryToStationWithExclude(actor, request, operation));

#if LOCAL
            case RPCID.rpc_TestStun:
                return(CallTestStun(actor, request, operation));

            case RPCID.rpc_TestAreaInvisibility:
                return(CallTestAreaInvisibilty(actor, request, operation));
#endif
            case RPCID.rpc_GetQuests:
                return(CallGetQuests(actor, request, operation));

            case RPCID.rpc_CompleteQuest:
                return(CallCompleteQuest(actor, request, operation));

            case RPCID.rpc_GetDialogs:
                return(CallGetDialogs(actor, request, operation));

            case RPCID.rpc_UserEvent:
                return(CallUserEvent(actor, request, operation));

            case RPCID.rpc_ResetQuests:
                return(CallResetQuests(actor, request, operation));

            case RPCID.rpc_Activate:
                return(CallActivate(actor, request, operation));

#if LOCAL
            case RPCID.rpc_RestartQuest:
                return(CallRestartQuest(actor, request, operation));
#endif
            case RPCID.rpc_UseQuestItem:
                return(CallUseQuestItem(actor, request, operation));

            case RPCID.rpc_SendEventOnOtherChannel:
                return(CallSendEventOnOtherChannel(actor, request, operation));

            case RPCID.rpc_GetNewQuestsUpdateEvent:
                return(CallGetNewQuestsUpdateEvent(actor, request, operation));

            case RPCID.rpc_RestartQuests:
                return(CallRestartQuests(actor, request, operation));

            case RPCID.rpc_ForceStartQuest:
                return(CallForceStartQuest(actor, request, operation));

            case RPCID.rpc_RewardQuest:
                return(CallRewardQuest(actor, request, operation));

            case RPCID.rpc_AcceptQuest:
                return(CallAcceptQuest(actor, request, operation));

            default:
                return(new OperationResponse(request.OperationCode)
                {
                    ReturnCode = (int)ReturnCode.InvalidRPCID,
                    DebugMessage = string.Format("not found rpc with id = {0}", operation.rpcId)
                });
            }
        }
        private OperationResponse CallGetCells(MmoActor player, OperationRequest request, RPCInvokeOperation op)
        {
            RPCInvokeResponse respInstance = new RPCInvokeResponse {
                rpcId  = op.rpcId,
                result = player.nebulaObject.mmoWorld().GetCellInfo()
            };

            return(new OperationResponse(request.OperationCode, respInstance));
        }
 private OperationResponse CallCreateCommandCenter(MmoActor player, OperationRequest request, RPCInvokeOperation op)
 {
     if (op.parameters != null && op.parameters.Length >= 3)
     {
         int               row          = (int)op.parameters[0];
         int               column       = (int)op.parameters[1];
         string            itemId       = (string)op.parameters[2];
         Hashtable         resp         = player.ActionExecutor.CreatePlanetObjectCommandCenter(row, column, itemId);
         RPCInvokeResponse respInstance = new RPCInvokeResponse {
             rpcId  = op.rpcId,
             result = resp
         };
         return(new OperationResponse(request.OperationCode, respInstance));
     }
     return(InvalidOperationParameter(request));
 }
 private OperationResponse CallCompleteQuest(MmoActor player, OperationRequest request, RPCInvokeOperation op)
 {
     //if(op.parameters != null && op.parameters.Length > 0 ) {
     //    string questId = (string)op.parameters[0];
     //    bool status = player.GetComponent<QuestManager>().CompleteReadyQuest(questId);
     //    RPCInvokeResponse respInstance = new RPCInvokeResponse {
     //        rpcId = op.rpcId,
     //        result = status
     //    };
     //    return new OperationResponse(request.OperationCode, respInstance);
     //}
     return(InvalidOperationParameter(request));
 }
        private OperationResponse CallForceDispose(MmoActor player, OperationRequest request, RPCInvokeOperation op)
        {
            player.SetForceDispose();
            RPCInvokeResponse responseInstance = new RPCInvokeResponse {
                rpcId  = op.rpcId,
                result = new Hashtable {
                    { (int)SPC.ReturnCode, (int)RPCErrorCode.Ok }
                }
            };

            return(new OperationResponse(request.OperationCode, responseInstance));
        }
        private OperationResponse CallGetQuests(MmoActor player, OperationRequest request, RPCInvokeOperation op)
        {
            RPCInvokeResponse respInstance = new RPCInvokeResponse {
                rpcId  = op.rpcId,
                result = (int)ReturnCode.Ok
            };

            //player.GetComponent<QuestManager>().SendInfo();
            return(new OperationResponse(request.OperationCode, respInstance));
        }
        /// <summary>
        /// Unlock all existing lore operation
        /// </summary>
        private OperationResponse CallUnlockAllLore(MmoActor player, OperationRequest request, RPCInvokeOperation op)
        {
            string[] humanStory = new string[] { "st_0_rec_0", "st_0_rec_1", "st_0_rec_2", "st_0_rec_3", "st_0_rec_4", "st_0_rec_5",
                                                 "st_0_rec_6", "st_0_rec_7", "st_0_rec_8", "st_0_rec_9", "st_0_rec_10", "st_0_rec_11", "st_0_rec_12", "st_0_rec_13",
                                                 "st_0_rec_14", "st_0_rec_15", "st_0_rec_16", "st_0_rec_17", "st_0_rec_18", "st_0_rec_19" };
            string[] criptizidStory = new string[] { "st_1_rec_0", "st_1_rec_1", "st_1_rec_2", "st_1_rec_3", "st_1_rec_4", "st_1_rec_5", "st_1_rec_6",
                                                     "st_1_rec_7", "st_1_rec_8", "st_1_rec_9", "st_1_rec_10", "st_1_rec_11", "st_1_rec_12", "st_1_rec_13", "st_1_rec_14",
                                                     "st_1_rec_15", "st_1_rec_16", "st_1_rec_17", "st_1_rec_18", "st_1_rec_19" };
            string[] borgStory = new string[] { "st_2_rec_0", "st_2_rec_1", "st_2_rec_2", "st_2_rec_3", "st_2_rec_4",
                                                "st_2_rec_5", "st_2_rec_6", "st_2_rec_7", "st_2_rec_8", "st_2_rec_9" };

            var achievmentComponent = player.GetComponent <AchievmentComponent>();

            foreach (string id in humanStory)
            {
                achievmentComponent.FoundLoreRecord(id);
            }
            foreach (string id in criptizidStory)
            {
                achievmentComponent.FoundLoreRecord(id);
            }
            foreach (string id in borgStory)
            {
                achievmentComponent.FoundLoreRecord(id);
            }
            RPCInvokeResponse responseInstance = new RPCInvokeResponse {
                rpcId = op.rpcId
            };

            responseInstance.result = new Hashtable {
                { (int)SPC.ReturnCode, (int)RPCErrorCode.LoreRecordAlreadyUnlocked }
            };
            return(new OperationResponse(request.OperationCode, responseInstance));
        }
 private OperationResponse CallTestAreaInvisibilty(MmoActor player, OperationRequest request, RPCInvokeOperation op)
 {
     if (op.parameters != null && op.parameters.Length > 0)
     {
         float             radius       = (float)op.parameters[0];
         RPCInvokeResponse respInstance = new RPCInvokeResponse {
             rpcId  = op.rpcId,
             result = player.ActionExecutor.TestSetAreaInvisibility(radius)
         };
         return(new OperationResponse(request.OperationCode, respInstance));
     }
     return(InvalidOperationParameter(request));
 }
        private OperationResponse CallTestKill(MmoActor player, OperationRequest request, RPCInvokeOperation op)
        {
            bool success         = false;
            var  targetComponent = player.GetComponent <PlayerTarget>();

            if (targetComponent.targetObject != null)
            {
                var targetDamagableComponent = targetComponent.targetObject.GetComponent <DamagableObject>();
                if (targetDamagableComponent != null)
                {
                    WeaponDamage weaponDamage = new WeaponDamage(WeaponBaseType.Rocket, 100000, 0, 0);
                    DamageParams damageParams = new DamageParams();
                    damageParams.SetReflrected(false);
                    damageParams.SetIgnoreFixedDamage(true);
                    targetDamagableComponent.ReceiveDamage(new InputDamage(player.nebulaObject, weaponDamage, damageParams));
                    success = true;
                }
            }
            RPCInvokeResponse responseInstance = new RPCInvokeResponse {
                rpcId  = op.rpcId,
                result = success
            };

            return(new OperationResponse(request.OperationCode, responseInstance));
        }
 private OperationResponse CallMoveAllFromInventoryToStationWithExclude(MmoActor player, OperationRequest request, RPCInvokeOperation op)
 {
     if (op.parameters != null && op.parameters.Length > 0)
     {
         string[]          excludeItems = (string[])op.parameters[0];
         Hashtable         hash         = player.ActionExecutor.MoveAllFromInventoryToStationWithExclude(excludeItems);
         RPCInvokeResponse respInstance = new RPCInvokeResponse {
             rpcId  = op.rpcId,
             result = hash
         };
         return(new OperationResponse(request.OperationCode, respInstance));
     }
     return(InvalidOperationParameter(request));
 }
 private OperationResponse CallSetPlayerMark(MmoActor player, OperationRequest request, RPCInvokeOperation op)
 {
     if (op.parameters != null && op.parameters.Length >= 2)
     {
         string id              = (string)op.parameters[0];
         byte   type            = (byte)op.parameters[1];
         var    targetComponent = player.GetComponent <PlayerTarget>();
         if (targetComponent != null)
         {
             if (string.IsNullOrEmpty(id))
             {
                 targetComponent.ClearMarkedItem();
             }
             else
             {
                 targetComponent.SetMarkedItem(id, type);
             }
             RPCInvokeResponse responseInstance = new RPCInvokeResponse {
                 rpcId  = op.rpcId,
                 result = true
             };
             return(new OperationResponse(request.OperationCode, responseInstance));
         }
     }
     return(InvalidOperationParameter(request));
 }
        private OperationResponse CallCreateTestSharedChest(MmoActor player, OperationRequest request, RPCInvokeOperation op)
        {
            RPCInvokeResponse responseInstance = new RPCInvokeResponse {
                rpcId  = op.rpcId,
                result = player.ActionExecutor.CreateTestSharedChest()
            };

            return(new OperationResponse(request.OperationCode, responseInstance));
        }
        private OperationResponse CallTestAddContractItems(MmoActor player, OperationRequest request, RPCInvokeOperation op)
        {
            int result = player.ActionExecutor.TestAddContractItems();
            RPCInvokeResponse responseInstance = new RPCInvokeResponse {
                rpcId  = op.rpcId,
                result = result
            };

            return(new OperationResponse(request.OperationCode, responseInstance));
        }
 private OperationResponse CallCollectOreFromPlanetMiningStation(MmoActor player, OperationRequest request, RPCInvokeOperation op)
 {
     if (op.parameters != null && op.parameters.Length > 0)
     {
         string            itemId       = (string)op.parameters[0];
         Hashtable         hash         = player.ActionExecutor.CollectOreFromPlanetMiningStation(itemId);
         RPCInvokeResponse respInstance = new RPCInvokeResponse {
             rpcId  = op.rpcId,
             result = hash
         };
         return(new OperationResponse(request.OperationCode, respInstance));
     }
     return(InvalidOperationParameter(request));
 }
 private OperationResponse CallAcceptContract(MmoActor player, OperationRequest request, RPCInvokeOperation op)
 {
     if (op.parameters != null && op.parameters.Length >= 1)
     {
         string            contractId       = op.parameters[0] as string;
         Hashtable         ret              = player.ActionExecutor.AcceptContract(contractId);
         RPCInvokeResponse responseInstance = new RPCInvokeResponse {
             rpcId  = op.rpcId,
             result = ret
         };
         return(new OperationResponse(request.OperationCode, responseInstance));
     }
     return(InvalidOperationParameter(request));
 }
        private OperationResponse CallResetSystemToNeutral(MmoActor player, OperationRequest request, RPCInvokeOperation op)
        {
            var forts = (player.World as MmoWorld).FindObjectsOfType <Outpost>();

            foreach (var kf in forts)
            {
                (kf.Value.nebulaObject as GameObject).Destroy();
            }
            s_Log.InfoFormat("removed: {0} fortifications", forts.Count);

            var outposts = (player.World as MmoWorld).FindObjectsOfType <MainOutpost>();

            foreach (var kf in outposts)
            {
                (kf.Value.nebulaObject as GameObject).Destroy();
            }
            s_Log.InfoFormat("removed: {0} outposts", outposts.Count);

            forts.Clear();
            outposts.Clear();

            (player.World as MmoWorld).SetUnderAttack(false);
            (player.World as MmoWorld).SetCurrentRace(Race.None);
            RPCInvokeResponse respInstance = new RPCInvokeResponse {
                rpcId  = op.rpcId,
                result = new Hashtable {
                    { (int)SPC.ReturnCode, (int)RPCErrorCode.Ok }
                }
            };

            return(new OperationResponse(request.OperationCode, respInstance));
        }