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