コード例 #1
0
ファイル: Currency.cs プロジェクト: wb121818778/MapleServer2
        private void UpdateWallet()
        {
            switch (Type)
            {
            case CurrencyType.Meso:
                Player.Session.Send(MesosPacket.UpdateMesos(Player.Session));
                break;

            case CurrencyType.Meret:
            case CurrencyType.GameMeret:
            case CurrencyType.EventMeret:
                Player.Session.Send(MeretsPacket.UpdateMerets(Player.Session));
                break;

            case CurrencyType.ValorToken:
            case CurrencyType.Treva:
            case CurrencyType.Rue:
            case CurrencyType.HaviFruit:
                Player.Session.Send(WalletPacket.UpdateWallet(Type, Amount));
                break;

            case CurrencyType.MesoToken:
                break;

            default:
                break;
            }
        }
コード例 #2
0
    public void DistributeReward()
    {
        if (!Active)
        {
            return;
        }

        if (Receivers.Count == 0) // Nobody joined
        {
            Active = false;
            GameServer.HongBaoManager.RemoveHongBao(this);
            return;
        }
        short dividedAwardAmount = (short)(RewardAmount / Receivers.Count);

        foreach (Player player in Receivers)
        {
            player.Session.FieldManager.BroadcastPacket(PlayerHostPacket.HongbaoGiftNotice(player, this, dividedAwardAmount));
            player.Session.Send(MeretsPacket.UpdateMerets(player.Account, dividedAwardAmount));
            player.Account.EventMeret.Modify(dividedAwardAmount);
        }

        Active = false;
        GameServer.HongBaoManager.RemoveHongBao(this);
    }
コード例 #3
0
ファイル: Currency.cs プロジェクト: AlanMorel/MapleServer2
    private void UpdateWallet()
    {
        switch (Type)
        {
        case CurrencyType.Meso:
            Session.Send(MesosPacket.UpdateMesos(Amount));
            break;

        case CurrencyType.Meret:
        case CurrencyType.GameMeret:
        case CurrencyType.EventMeret:
            Session.Send(MeretsPacket.UpdateMerets(Session.Player.Account));
            break;

        case CurrencyType.ValorToken:
        case CurrencyType.Treva:
        case CurrencyType.Rue:
        case CurrencyType.HaviFruit:
        case CurrencyType.MesoToken:
            Session.Send(WalletPacket.UpdateWallet(Type, Amount));
            break;

        case CurrencyType.BankMesos:
            Session.Send(StorageInventoryPacket.UpdateMesos(Amount));
            break;
        }
    }
コード例 #4
0
        public override void Handle(GameSession session, PacketReader packet)
        {
            RequestTaxiMode mode = (RequestTaxiMode)packet.ReadByte();

            int  mapId     = 0;
            long mesoPrice = 60000;

            if (mode != RequestTaxiMode.DiscoverTaxi)
            {
                mapId = packet.ReadInt();
            }

            switch (mode)
            {
            case RequestTaxiMode.Car:
                mesoPrice = 5000;     //For now make all car taxis cost 5k, as we don't know the formula to calculate it yet.
                goto case RequestTaxiMode.RotorsMeso;

            case RequestTaxiMode.RotorsMeso:
                if (session.Player.Mesos >= mesoPrice)
                {
                    session.Player.Mesos -= mesoPrice;
                    session.Send(MesosPacket.UpdateMesos(session));
                    HandleTeleport(session, mapId);
                }
                break;

            case RequestTaxiMode.RotorsMeret:
                if (session.Player.Merets >= 15)
                {
                    session.Player.Merets -= 15;
                    session.Send(MeretsPacket.UpdateMerets(session));
                    HandleTeleport(session, mapId);
                }
                break;

            case RequestTaxiMode.DiscoverTaxi:
                //TODO: Save somewhere and load somewhere? Perhaps on login.
                session.Send(TaxiPacket.DiscoverTaxi(session.Player.MapId));
                break;

            default:
                IPacketHandler <GameSession> .LogUnknownMode(mode);

                break;
            }
        }
コード例 #5
0
    public HongBao(Player giver, byte totalUserCount, int itemId, int rewardId, short rewardAmount, int duration)
    {
        Id           = GuidGenerator.Int();
        Expiration   = 0;
        Receivers    = new();
        Giver        = giver;
        MaxReceivers = (byte)(totalUserCount - 1);  // subtract one because the giver already received one
        ItemId       = itemId;
        RewardId     = rewardId;
        RewardAmount = rewardAmount;
        Duration     = duration;
        Active       = true;

        giver.Session.Send(MeretsPacket.UpdateMerets(giver.Account, rewardAmount));
        giver.Account.EventMeret.Modify(rewardAmount);
        Task task = Start(this);
    }
コード例 #6
0
    private static void HandleCollectProfit(GameSession session, PacketReader packet)
    {
        long saleId = packet.ReadLong();

        List <UgcMarketSale> sales = GameServer.UgcMarketManager.GetSalesByCharacterId(session.Player.CharacterId);
        long profitDelayTime       = long.Parse(ConstantsMetadataStorage.GetConstant("UGCShopProfitDelayInDays"));
        long totalProfit           = 0;

        foreach (UgcMarketSale sale in sales)
        {
            if (!(sale.SoldTimestamp + profitDelayTime < TimeInfo.Now()))
            {
                continue;
            }
            totalProfit += sale.Profit;
            GameServer.UgcMarketManager.RemoveSale(sale);
            DatabaseManager.UgcMarketSales.Delete(saleId);
        }

        session.Player.Account.GameMeret.Modify(totalProfit);
        session.Send(MeretsPacket.UpdateMerets(session.Player.Account, totalProfit));
        session.Send(MeretMarketPacket.UpdateProfit(saleId));
    }
コード例 #7
0
        public override void Handle(GameSession session, PacketReader packet)
        {
            byte mode  = packet.ReadByte();
            long price = 0;
            bool paid  = false;
            int  mapId = 0;

            if (mode != 5)
            {
                mapId = packet.ReadInt();
            }

            switch (mode)
            {
            case 1:     // car taxi
                price = packet.ReadShort();
                if (session.Player.Mesos >= price)
                {
                    session.Player.Mesos -= price;
                    session.Send(MesosPacket.UpdateMesos(session));
                    paid = true;
                }
                break;

            case 3:     // rotors using mesos
                price = 60000;
                if (session.Player.Mesos >= price)
                {
                    session.Player.Mesos -= price;
                    session.Send(MesosPacket.UpdateMesos(session));
                    paid = true;
                }
                break;

            case 4:     // rotors using merets
                price = 15;
                if (session.Player.Merets >= price)
                {
                    session.Player.Merets -= price;
                    session.Send(MeretsPacket.UpdateMerets(session));
                    paid = true;
                }
                break;

            case 5:     // is sent after using rotors with meret, idk why..
                return;
            }

            if (paid)
            {
                MapPlayerSpawn spawn = MapEntityStorage.GetRandomPlayerSpawn(mapId);

                if (spawn != null)
                {
                    session.Player.MapId    = mapId;
                    session.Player.Coord    = spawn.Coord.ToFloat();
                    session.Player.Rotation = spawn.Rotation.ToFloat();
                    session.Send(FieldPacket.RequestEnter(session.FieldPlayer));
                }
            }
        }