Exemplo n.º 1
0
        private ServerInventoryItem GiveWeaponReward(MmoActor player, ContractWeaponDataReward weaponReward)
        {
            var playerCharacter = player.GetComponent <CharacterObject>();

            WeaponDropper.WeaponDropParams dropParams = new WeaponDropper.WeaponDropParams(
                player.resource,
                playerCharacter.level,
                (Workshop)playerCharacter.workshop,
                WeaponDamageType.damage,
                Difficulty.none
                );
            ColorInfo     colorInfo     = player.resource.ColorRes.Color(ColoredObjectType.Weapon, weaponReward.color);
            DropManager   dropManager   = DropManager.Get(player.resource);
            WeaponDropper weaponDropper = dropManager.GetWeaponDropper(dropParams);
            WeaponObject  weapon        = weaponDropper.DropWeapon(colorInfo);

            return(new ServerInventoryItem(weapon, 1));
        }
Exemplo n.º 2
0
        public override ServerInventoryItem Roll(IRes resource, int level, Workshop workshop)
        {
            DropManager dropManager = DropManager.Get(resource);
            var         cl          = resource.colorLists.GetList(colorList);
            ObjectColor color       = cl.Roll();

            WeaponDropper.WeaponDropParams dropParams = new WeaponDropper.WeaponDropParams(
                resource,
                level,
                workshop,
                WeaponDamageType.damage,
                Difficulty.none
                );
            ColorInfo colorInfo = resource.ColorRes.Color(ColoredObjectType.Weapon, color);

            WeaponDropper weaponDropper = dropManager.GetWeaponDropper(dropParams);
            WeaponObject  weapon        = weaponDropper.DropWeapon(colorInfo);

            return(new ServerInventoryItem(weapon, 1));
        }
Exemplo n.º 3
0
        public bool BuyStoreItem(string login, string gameRef, string character, int race, int inworkshop, int level, string productType, string server, out RPCErrorCode errorCode)
        {
            errorCode = RPCErrorCode.Ok;

            if (level < application.serverSettings.pvpStoreMinLevel)
            {
                log.InfoFormat("player level very low for pvp store {0}:{1} [red]", level, application.serverSettings.pvpStoreMinLevel);
                errorCode = RPCErrorCode.LevelNotEnough;
                return(false);
            }

            var storeItem = application.pvpStoreItems.GetItem(productType.ToLower());

            if (storeItem == null)
            {
                log.InfoFormat("pvp store item {0} not founded [red]", productType.ToLower());
                errorCode = RPCErrorCode.ObjectNotFound;
                return(false);
            }

            var store = application.Stores.GetOnlyPlayerStore(character);

            if (store == null)
            {
                log.InfoFormat("player store not founded [red]");
                errorCode = RPCErrorCode.ObjectNotFound;
                return(false);
            }

            if (store.pvpPoints < storeItem.price)
            {
                log.InfoFormat("player don't enough pvp points for purchase {0}:{1}", store.pvpPoints, storeItem.price);
                errorCode = RPCErrorCode.DontEnoughPvpPoints;
                return(false);
            }

            int workshop = inworkshop;

            if (Rand.Float01() >= 0.9f)
            {
                workshop = (byte)CommonUtils.RandomWorkshop((Race)(byte)race);
            }

            IInfo result = null;

            if (storeItem.isWeapon)
            {
                WeaponDropper dropper = new WeaponDropper(new WeaponDropper.WeaponDropParams(application.resource, level, (Workshop)(byte)workshop, WeaponDamageType.damage, Difficulty.none), 1f);
                result = (dropper.DropWeapon() as IInfo);
            }
            else
            {
                switch (productType.ToLower())
                {
                case "es":
                {
                    result = CreateModule(workshop, level, ShipModelSlotType.ES);
                }
                break;

                case "cb":
                {
                    result = CreateModule(workshop, level, ShipModelSlotType.CB);
                }
                break;

                case "cm":
                {
                    result = CreateModule(workshop, level, ShipModelSlotType.CM);
                }
                break;

                case "dm":
                {
                    result = CreateModule(workshop, level, ShipModelSlotType.DM);
                }
                break;

                case "df":
                {
                    result = CreateModule(workshop, level, ShipModelSlotType.DF);
                }
                break;
                }
            }

            if (result == null)
            {
                log.InfoFormat("creating item error [red]");
                errorCode = RPCErrorCode.UnknownError;
                return(false);
            }

            var itemHash = result.GetInfo();

            PUTInventoryItemTransactionStart start = new PUTInventoryItemTransactionStart {
                characterID           = character,
                count                 = 1,
                gameRefID             = gameRef,
                itemID                = itemHash.GetValue <string>((int)SPC.Id, string.Empty),
                postTransactionAction = (byte)PostTransactionAction.RemovePvpPoints,
                inventoryType         = (byte)InventoryType.ship,
                tag                    = storeItem.price,
                targetObject           = itemHash,
                transactionID          = Guid.NewGuid().ToString(),
                transactionSource      = (byte)TransactionSource.PvpStore,
                transactionEndServer   = server,
                transactionStartServer = SelectCharacterApplication.ServerId.ToString()
            };
            EventData eventData = new EventData((byte)S2SEventCode.PUTInventoryItemStart, start);

            mPutTransactionPool.StartTransaction(start);
            application.MasterPeer.SendEvent(eventData, new SendParameters());
            log.InfoFormat("pass put transaction started [red]...");
            return(true);
        }
Exemplo n.º 4
0
        private void RewardItemImpl(InventoryItemQuestReward reward)
        {
            ServerInventoryItem targetItem = null;

            switch (reward.ObjectType)
            {
            case InventoryObjectType.Material: {
                MaterialItemQuestReward materialReward = reward as MaterialItemQuestReward;
                if (materialReward != null)
                {
                    MaterialObject material = new MaterialObject(materialReward.OreId);
                    targetItem = new ServerInventoryItem(material, materialReward.Count);
                }
            }
            break;

            case InventoryObjectType.Scheme: {
                SchemeItemQuestReward schemeReward = reward as SchemeItemQuestReward;
                if (schemeReward != null)
                {
                    SchemeObject scheme = new SchemeObject(new SchemeObject.SchemeInitData(
                                                               id: Guid.NewGuid().ToString(),
                                                               name: string.Empty,
                                                               level: PlayerLevel,
                                                               workshop: PlayerWorkshop,
                                                               templateModuleId: resource.ModuleTemplates.Module(PlayerWorkshop, schemeReward.Slot).Id,
                                                               color: schemeReward.Color,
                                                               craftingMaterials: new Dictionary <string, int>(),
                                                               inSetID: string.Empty
                                                               ));
                    targetItem = new ServerInventoryItem(scheme, schemeReward.Count);
                }
            }
            break;

            case InventoryObjectType.Weapon: {
                WeaponItemQuestReward weaponReward = reward as WeaponItemQuestReward;
                if (weaponReward != null)
                {
                    WeaponDropper.WeaponDropParams weaponDropParams = new WeaponDropper.WeaponDropParams(
                        resource: resource,
                        level: PlayerLevel,
                        workshop: PlayerWorkshop,
                        damageType: WeaponDamageType.damage,
                        difficulty: Difficulty.none
                        );
                    ColorInfo     colorInfo     = resource.ColorRes.Color(ColoredObjectType.Weapon, weaponReward.Color);
                    DropManager   dropManager   = DropManager.Get(resource);
                    WeaponDropper weaponDropper = dropManager.GetWeaponDropper(dropParams: weaponDropParams);
                    WeaponObject  weapon        = weaponDropper.DropWeapon(colorInfo);
                    targetItem = new ServerInventoryItem(weapon, weaponReward.Count);
                }
            }
            break;
            }

            if (targetItem != null)
            {
                GetComponent <MmoActor>()?.AddToStationInventory(item: targetItem, sendUpdateEvent: true);
            }
        }