private void Cac(RoomUser Bot, Room Room, RoomUser User) { int Dmg = ButterflyEnvironment.GetRandomNumber(this.WeaponCac.DmgMin, this.WeaponCac.DmgMax); if (!User.IsBot) { RolePlayer Rp = User.Roleplayer; if (Rp != null) { Rp.Hit(User, Dmg, Room); } } else { if (User.BotData.RoleBot != null) { User.BotData.RoleBot.Hit(User, Dmg, Room, Bot.VirtualId, User.BotData.RoleBot.Config.TeamId); } } int WeaponEanble = this.WeaponCac.Enable; Bot.ApplyEffect(WeaponEanble, true); Bot.TimerResetEffect = this.WeaponCac.FreezeTime + 1; if (Bot.FreezeEndCounter <= this.WeaponCac.FreezeTime + 1) { Bot.Freeze = true; Bot.FreezeEndCounter = this.WeaponCac.FreezeTime + 1; } }
private void CloseTrade(RPTroc Troc) { RolePlayerManager RPManager = ButterflyEnvironment.GetGame().GetRoleplayManager().GetRolePlay(Troc.RPId); if (RPManager == null) { return; } RolePlayer PlayerOne = RPManager.GetPlayer(Troc.UserOne.UserId); if (PlayerOne != null) { PlayerOne.TradeId = 0; PlayerOne.SendWebPacket(new RpTrocStopComposer()); } RolePlayer PlayerTwo = RPManager.GetPlayer(Troc.UserTwo.UserId); if (PlayerTwo != null) { PlayerTwo.TradeId = 0; PlayerTwo.SendWebPacket(new RpTrocStopComposer()); } this.Troc.TryRemove(Troc.Id, out Troc); }
private void setJester(PlayerController jester) { RolePlayer JesterRolePlayer = new RolePlayer(jester, "Jester"); JesterRolePlayer.RoleEjected.UseRoleEjected = true; jester.ClearTasks(); jester.PlayerTaskObjects = new Il2CppSystem.Collections.Generic.List <PILBGHDHJLH>(); var intro = JesterRolePlayer.RoleIntro; intro.UseRoleIntro = true; intro.RoleNameColor = new Color(0.74901960784f, 0, 1f); intro.BackgroundColor = new Color(127 / 255f, 0 / 255f, 186 / 255f); intro.RoleDescription = $"Trick the crewmates into thinking\n" + $"that you are an {Functions.ColorRed}Impostor[]\n"; var outro = JesterRolePlayer.RoleOutro; outro.WinText = "Victory"; outro.WinTextColor = new Color(175 / 255f, 43 / 255f, 237 / 255f); outro.BackgroundColor = new Color(127 / 255f, 0 / 255f, 186 / 255f); AllRolePlayers.Add(JesterRolePlayer); if (AllRolePlayers.Where(x => x.AmRolePlayer).Count() > 0) { foreach (var role in AllRolePlayers) { role.PlayerController.PlayerControl.nameText.Color = new Color(0.74901960784f, 0, 1f); } } }
public void AddTrade(int RPId, int UserOne, int UserTwo, string UserNameOne, string UserNameTwo) { RolePlayerManager RPManager = ButterflyEnvironment.GetGame().GetRoleplayManager().GetRolePlay(RPId); if (RPManager == null) { return; } RolePlayer PlayerOne = RPManager.GetPlayer(UserOne); RolePlayer PlayerTwo = RPManager.GetPlayer(UserTwo); if (PlayerOne == null || PlayerTwo == null || PlayerOne.TradeId != 0 || PlayerTwo.TradeId != 0) { return; } TradeId++; this.Troc.TryAdd(TradeId, new RPTroc(TradeId, RPId, UserOne, UserTwo)); PlayerOne.TradeId = TradeId; PlayerOne.SendWebPacket(new RpTrocStartComposer(UserTwo, UserNameTwo)); PlayerTwo.TradeId = TradeId; PlayerTwo.SendWebPacket(new RpTrocStartComposer(UserOne, UserNameOne)); }
private bool CheckUserTouch(RoomUser UserTouch, ItemTemp Item) { if (UserTouch != null) { if (!this._room.RpRoom) { return(true); } else { if (UserTouch.VirtualId != Item.VirtualUserId) { if (UserTouch.IsBot) { if (UserTouch.BotData.RoleBot != null && !UserTouch.BotData.RoleBot.Dead) { return(true); } } else { RolePlayer Rp = UserTouch.Roleplayer; if (Rp != null) { if ((Rp.PvpEnable || Rp.AggroTimer > 0) && !Rp.Dead && !Rp.SendPrison) { return(true); } } } } } } return(false); }
private void CheckUserHit(RoomUser UserTouch, ItemTemp Item) { if (UserTouch != null) { if (_room.RpRoom) { if (UserTouch.VirtualId != Item.VirtualUserId) { if (UserTouch.IsBot) { if (UserTouch.BotData.RoleBot != null) { UserTouch.BotData.RoleBot.Hit(UserTouch, Item.Value, this._room, Item.VirtualUserId, Item.TeamId); } } else { RolePlayer Rp = UserTouch.Roleplayer; if (Rp != null) { if (Rp.PvpEnable || Rp.AggroTimer > 0) { Rp.Hit(UserTouch, Item.Value, this._room, true); } } } } } else { _room.GetWiredHandler().TriggerCollision(UserTouch, null); } } }
public void Parse(WebClient Session, ClientPacket Packet) { GameClient Client = ButterflyEnvironment.GetGame().GetClientManager().GetClientByUserID(Session.UserId); if (Client == null || Client.GetHabbo() == null) { return; } Room Room = Client.GetHabbo().CurrentRoom; if (Room == null || !Room.RpRoom) { return; } RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabboId(Client.GetHabbo().Id); if (User == null) { return; } RolePlayer Rp = User.Roleplayer; if (Rp == null || Rp.TradeId == 0) { return; } ButterflyEnvironment.GetGame().GetRoleplayManager().GetTrocManager().Confirme(Rp.TradeId, User.UserId); }
public void AddPlayer(int UserId) { if (this._player.ContainsKey(UserId)) { return; } RolePlayer player = null; using (IQueryAdapter queryreactor = ButterflyEnvironment.GetDatabaseManager().GetQueryReactor()) { queryreactor.SetQuery("SELECT * FROM user_rp WHERE user_id = '" + UserId + "' AND roleplay_id = '" + this._id + "'"); DataRow dRow = queryreactor.GetRow(); if (dRow == null) { queryreactor.RunQuery("INSERT INTO `user_rp` (`user_id`, `roleplay_id`) VALUES ('" + UserId + "', '" + this._id + "')"); player = new RolePlayer(this._id, UserId, 100, 0, 0, 0, 100, 0, 0); } else { player = new RolePlayer(this._id, UserId, (int)dRow["health"], (int)dRow["money"], (int)dRow["munition"], (int)dRow["exp"], (int)dRow["energy"], (int)dRow["weapon_far"], (int)dRow["weapon_cac"]); } } if (player != null) { this._player.TryAdd(UserId, player); player.SendUpdate(true); player.LoadInventory(); //Faire le packet LoadInventoryRP } }
private void OnGetPlayerInfosRes(byte[] res) { ///清除上一次生成的游戏物体 for (int i = 0; i < caches.Count; i++) { Destroy(caches[i]); } caches.Clear(); ///基于反馈数据生成新的游戏物体 GetPlayerInfosRes response = ProtoBufUtils.Deserialize <GetPlayerInfosRes>(res); int stat = response.code.status; if (stat == 0) { PlayerData.MyPlayers = response.infos; PlayerInfo temp; for (int i = 0; i < PlayerData.MyPlayers.Count; i++) { temp = PlayerData.MyPlayers[i]; var go = GameObject.Instantiate <GameObject>(ResourceMgr.Load <GameObject>("GUIs/RolePlayer")); RolePlayer role = go.GetComponent <RolePlayer>(); role.SetUI(temp); go.transform.SetParent(layout, false); caches.Add(go); } addCharacter.transform.SetAsLastSibling(); } else { RequestCharacterInfos(); } }
public void AddItem(int TradeId, int UserId, int ItemId) { RPTroc Troc = GetTroc(TradeId); if (Troc == null) { return; } if (Troc.AllAccepted || Troc.AllConfirmed) { return; } RPTrocUser TrocUser = Troc.GetUser(UserId); if (TrocUser == null || TrocUser.Accepted || TrocUser.Confirmed) { return; } RPItem RpItem = ButterflyEnvironment.GetGame().GetRoleplayManager().GetItemManager().GetItem(ItemId); if (RpItem == null || RpItem.Category == RPItemCategory.QUETE || !RpItem.AllowStack) { return; } RolePlayerManager RPManager = ButterflyEnvironment.GetGame().GetRoleplayManager().GetRolePlay(Troc.RPId); if (RPManager == null) { return; } RolePlayer Player = RPManager.GetPlayer(UserId); if (Player == null) { return; } RolePlayInventoryItem Item = Player.GetInventoryItem(ItemId); if (Item == null) { return; } if (TrocUser.GetCountItem(ItemId) >= Item.Count) { return; } TrocUser.AddItemId(ItemId); this.SendPacketUsers(new RpTrocUpdateItemsComposer(UserId, TrocUser.ItemIds), Troc); }
public RolePlayer GetPlayer(int Id) { if (!this._player.ContainsKey(Id)) { return(null); } RolePlayer player = null; this._player.TryGetValue(Id, out player); return(player); }
public void RemovePlayer(int Id) { RolePlayer player = this.GetPlayer(Id); if (player == null) { return; } player.Destroy(); this._player.TryRemove(Id, out player); }
private void AggroSearch(RoomUser Bot, Room Room) { List <RoomUser> Users = Room.GetGameMap().GetNearUsers(new Point(Bot.X, Bot.Y), this.Config.AggroDistance); if (Users == null) { return; } int BotX = (Bot.SetStep) ? Bot.SetX : Bot.X; int BotY = (Bot.SetStep) ? Bot.SetY : Bot.Y; foreach (RoomUser User in Users) { if (User == Bot) { continue; } int RotationDistance = Math.Abs(Rotation.Calculate(BotX, BotY, User.X, User.Y) - Bot.RotBody); if (RotationDistance >= 2 && !(User.X == BotX && User.Y == BotY)) { continue; } if (!User.IsBot) { RolePlayer Rp = User.Roleplayer; if (Rp == null) { continue; } if (Rp.Dead || (!Rp.PvpEnable && Rp.AggroTimer <= 0) || Rp.SendPrison) { continue; } } else { if (User.BotData.RoleBot == null || (User.BotData.RoleBot.Dead || this.Config.TeamId == User.BotData.RoleBot.Config.TeamId)) { continue; } } this.ResetBot = false; this.ResetBotTimer = 60; this.AggroVirtuelId = User.VirtualId; this.AggroTimer = 0; } }
public static void Prefix([HarmonyArgument(0)] ref GameEndReasonEnum reason) { if (TheJester.GameMode.NumJesters == 0) { return; } if (TheJester.GameMode.JestersWon) { reason = GameEndReasonEnum.ImpostorByKill; foreach (var player in PlayerController.AllPlayerControls.Where(x => x.PlayerData.IsImpostor)) { player.PlayerData.IsImpostor = false; } foreach (var jester in TheJester.GameMode.AllRolePlayers) { jester.RoleOutro.UseRoleOutro = true; jester.PlayerController.PlayerData.IsImpostor = true; } if (TheJester.GameMode.AllRolePlayers.Where(x => x.AmRolePlayer).Count() == 0) { var DefeatRole = new RolePlayer(PlayerController.LocalPlayer, "Other"); DefeatRole.RoleOutro.WinText = "Defeat"; DefeatRole.RoleOutro.WinTextColor = new Color(175 / 255f, 43 / 255f, 237 / 255f); DefeatRole.RoleOutro.BackgroundColor = new Color(127 / 255f, 0 / 255f, 186 / 255f); DefeatRole.RoleOutro.UseRoleOutro = true; } } else { if (reason == GameEndReasonEnum.HumansByVote || reason == GameEndReasonEnum.HumansByTask) { foreach (var jester in TheJester.GameMode.AllRolePlayers) { jester.PlayerController.PlayerData.IsImpostor = true; } } } }
private void setCleaner(PlayerController ctrl) { var role = new RolePlayer(ctrl, "Cleaner"); role.RoleIntro.UseRoleIntro = true; role.RoleIntro.BackgroundColor = new Color(0, 136 / 255f, 255 / 255f); role.RoleIntro.RoleNameColor = new Color(0, 221 / 255f, 255 / 255f); role.RoleIntro.RoleDescription = "Help the [ff0000ff]Impostors[] by [0088ffff]cleaning []the [ff0000ff]crime scene[]."; role.RoleEjected.UseRoleEjected = true; role.NameColor = new Color(0, 221 / 255f, 255 / 255f); role.NameColorVisible = PlayerController.LocalPlayer.PlayerData.IsImpostor; AllRolePlayers.Add(role); if (ctrl.IsLocalPlayer) { CleanStopwatch = new CustomStopwatch(true); } }
private void SendPacketUsers(IServerPacket packet, RPTroc Troc) { RolePlayerManager RPManager = ButterflyEnvironment.GetGame().GetRoleplayManager().GetRolePlay(Troc.RPId); if (RPManager == null) { return; } RolePlayer PlayerOne = RPManager.GetPlayer(Troc.UserOne.UserId); if (PlayerOne != null) { PlayerOne.SendWebPacket(packet); } RolePlayer PlayerTwo = RPManager.GetPlayer(Troc.UserTwo.UserId); if (PlayerTwo != null) { PlayerTwo.SendWebPacket(packet); } }
public void Parse(GameClient Session, ClientPacket Packet) { Room room = ButterflyEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (room == null) { return; } if (room.RpRoom) { RoomUser RoomUser = room.GetRoomUserManager().GetRoomUserByHabboId(Session.GetHabbo().Id); RoomUser RoomUserTarget = room.GetRoomUserManager().GetRoomUserByVirtualId(Packet.PopInt()); if (RoomUser == null || RoomUser.GetClient() == null || RoomUser.GetClient().GetHabbo() == null) { return; } if (RoomUserTarget == null || RoomUserTarget.GetClient() == null || RoomUserTarget.GetClient().GetHabbo() == null) { return; } RolePlayer Rp = RoomUser.Roleplayer; if (Rp == null || Rp.TradeId > 0 || Rp.Dead || Rp.SendPrison || (Rp.PvpEnable && room.Pvp) || Rp.AggroTimer > 0) { RoomUser.SendWhisperChat("Vous devez être en zone safe pour pouvoir troquer"); return; } RolePlayer RpTarget = RoomUserTarget.Roleplayer; if (RpTarget == null || RpTarget.TradeId > 0 || RpTarget.Dead || RpTarget.SendPrison || (RpTarget.PvpEnable && room.Pvp) || RpTarget.AggroTimer > 0) { RoomUser.SendWhisperChat("Ce joueur ne peut pas troc"); return; } ButterflyEnvironment.GetGame().GetRoleplayManager().GetTrocManager().AddTrade(room.RoomData.OwnerId, RoomUser.UserId, RoomUserTarget.UserId, RoomUser.GetUsername(), RoomUserTarget.GetUsername()); return; } if (room.RoomData.TrocStatus == 0) { Session.SendNotification(ButterflyEnvironment.GetLanguageManager().TryGetValue("notif.trade.error.1", Session.Langue)); return; } else if (room.RoomData.TrocStatus == 1 && !room.CheckRights(Session)) { Session.SendNotification(ButterflyEnvironment.GetLanguageManager().TryGetValue("notif.trade.error.2", Session.Langue)); return; } RoomUser roomUserByHabbo = room.GetRoomUserManager().GetRoomUserByHabboId(Session.GetHabbo().Id); RoomUser roomUserByVirtualId = room.GetRoomUserManager().GetRoomUserByVirtualId(Packet.PopInt()); if (roomUserByVirtualId == null || roomUserByVirtualId.GetClient() == null || roomUserByVirtualId.GetClient().GetHabbo() == null) { return; } if (!roomUserByVirtualId.GetClient().GetHabbo().AcceptTrading&& Session.GetHabbo().Rank < 3) { Session.SendNotification(ButterflyEnvironment.GetLanguageManager().TryGetValue("user.tradedisabled", Session.Langue)); } else if (roomUserByVirtualId.transformation || roomUserByHabbo.transformation || roomUserByHabbo.IsSpectator || roomUserByVirtualId.IsSpectator) { Session.SendNotification(ButterflyEnvironment.GetLanguageManager().TryGetValue("notif.trade.error.3", Session.Langue)); } else { room.TryStartTrade(roomUserByHabbo, roomUserByVirtualId); } }
private bool RpUserCommand(RoomUser User) { Room Room = this.item.GetRoom(); if (Room == null || !Room.RpRoom) { return(false); } if (User == null || User.GetClient() == null || User.GetClient().GetHabbo() == null) { return(false); } RolePlayer Rp = User.Roleplayer; if (Rp == null) { return(false); } bool Result = false; switch (this.Effet) { case "inventoryitem": case "inventorynotitem": { int ValueInt = 0; if (!int.TryParse(this.Value, out ValueInt)) { break; } if (Rp.GetInventoryItem(ValueInt) != null) { Result = true; } break; } case "energyplus": { int ValueInt = 0; int.TryParse(this.Value, out ValueInt); if (Rp.Energy >= ValueInt) { Result = true; } break; } case "energymoins": { int ValueInt = 0; int.TryParse(this.Value, out ValueInt); if (Rp.Energy < ValueInt) { Result = true; } break; } case "munition": { int ValueInt = 0; int.TryParse(this.Value, out ValueInt); if (Rp.Munition == ValueInt) { Result = true; } break; } case "munitionplus": { int ValueInt = 0; int.TryParse(this.Value, out ValueInt); if (Rp.Munition >= ValueInt) { Result = true; } break; } case "munitionmoins": { int ValueInt = 0; int.TryParse(this.Value, out ValueInt); if (Rp.Munition < ValueInt) { Result = true; } break; } case "moneyplus": { int ValueInt = 0; int.TryParse(this.Value, out ValueInt); if (Rp.Money >= ValueInt) { Result = true; } break; } case "moneymoins": { int ValueInt = 0; int.TryParse(this.Value, out ValueInt); if (Rp.Money < ValueInt) { Result = true; } break; } case "levelplus": { int.TryParse(this.Value, out int ValueInt); if (Rp.Level >= ValueInt) { Result = true; } break; } case "levelmoins": { int.TryParse(this.Value, out int ValueInt); if (Rp.Level < ValueInt) { Result = true; } break; } case "healthplus": { int.TryParse(this.Value, out int ValueInt); if (Rp.Health >= ValueInt) { Result = true; } break; } case "healthmoins": { int ValueInt = 0; int.TryParse(this.Value, out ValueInt); if (Rp.Health < ValueInt) { Result = true; } break; } case "health": { int ValueInt = 0; int.TryParse(this.Value, out ValueInt); if (Rp.Health == ValueInt) { Result = true; } break; } case "dead": case "notdead": { if (Rp.Dead == true) { Result = true; } break; } case "weaponfarid": case "notweaponfarid": { int ValueInt = 0; int.TryParse(this.Value, out ValueInt); if (Rp.WeaponGun.Id == ValueInt) { Result = true; } break; } case "weaponcacid": case "notweaponcacid": { int ValueInt = 0; int.TryParse(this.Value, out ValueInt); if (Rp.WeaponCac.Id == ValueInt) { Result = true; } break; } } return(Result); }
public override void Loop() { base.Loop(); GameModeSettingsAddition = $"\nRandom Start Location: {Functions.ColorPurple}{(RandomStartLocation ? "On" : "Off")}"; if (!IsInGame) { return; } #region ----- Display new task text ----- string ToDisplay = "----- [ff7b00ff]Battle Royale[] -----\n" + "Be the last man standing!\n" + "\n" + $"Players left: { PlayerController.AllPlayerControls.Where(x => !x.PlayerData.IsDead).Count() }/{ MaxPlayerCount }"; PlayerHudManager.TaskText = ToDisplay + "\n--------------------"; // Current text #endregion #region ----- Display Kill Button ----- PlayerHudManager.HudManager.KillButton.gameObject.SetActive(!PlayerController.LocalPlayer.PlayerData.IsDead); // Activate Kill Button PlayerHudManager.HudManager.KillButton.isActive = !PlayerController.LocalPlayer.PlayerData.IsDead; // Activate Kill Button PlayerHudManager.HudManager.KillButton.transform.position = PlayerHudManager.HudManager.UseButton.transform.position; // Move the Kill Button PlayerHudManager.HudManager.ReportButton.enabled = false; // Disable report button PlayerHudManager.HudManager.ReportButton.gameObject.SetActive(false); // Disable report button PlayerHudManager.HudManager.ReportButton.renderer.color = new Color(1, 1, 1, 0); // Hide report button PlayerHudManager.HudManager.UseButton.enabled = false; // Disable use button PlayerHudManager.HudManager.UseButton.gameObject.SetActive(false); // Disable use button PlayerHudManager.HudManager.UseButton.UseButton.color = new Color(1, 1, 1, 0); // Hide use button #region --- Update Cooldown --- if (GameOptions.KillCooldown - (Functions.GetUnixTime() - LastKilled) <= 0) { LastKilled = 0; } if (LastKilled != 0) { PlayerHudManager.HudManager.KillButton.SetCoolDown(GameOptions.KillCooldown - (Functions.GetUnixTime() - LastKilled), GameOptions.KillCooldown); } else { PlayerHudManager.HudManager.KillButton.SetCoolDown(0, GameOptions.KillCooldown); } #endregion #region ----- End Game If Required ----- if (PlayerController.AllPlayerControls.Where(x => !x.PlayerData.IsDead).Count() == 1 && Started) { Started = false; if (!CheepsAmongUsMod.CheepsAmongUsMod.IsDecidingClient) { return; } Task.Run(async() => { await Task.Delay(2500); Patching.PatchFinishEndGame.CanEndGame = true; ShipStatusClass.PLBGOMIEONF(GameEndReason.ImpostorByKill, false); }); var winner = PlayerController.AllPlayerControls.Where(x => !x.PlayerData.IsDead).First(); winner.PlayerData.IsImpostor = true; RolePlayer MyRole = new RolePlayer(PlayerController.LocalPlayer, "Default"); MyRole.RoleOutro.UseRoleOutro = true; MyRole.RoleOutro.UseRoleOutro = true; if (winner.IsLocalPlayer) { MyRole.RoleOutro.WinText = "Victory Royale"; MyRole.RoleOutro.WinTextColor = new Color(255 / 255f, 174 / 255f, 0 / 255f); MyRole.RoleOutro.BackgroundColor = new Color(1f, 0.8f, 0f); } else { MyRole.RoleOutro.WinText = winner.PlayerData.PlayerName; MyRole.RoleOutro.WinTextColor = new Color(255 / 255f, 174 / 255f, 0 / 255f); MyRole.RoleOutro.BackgroundColor = new Color(1f, 0f, 0f); } RpcManager.SendRpc(BattleRoyale.BattleRoyalRpc, new byte[] { (byte)BattleRoyale.CustomRpcCalls.SetWinner, winner.PlayerId }); } #endregion if (!Started) { return; } #region ----- Get Closest Player ----- IEnumerable <PlayerController> AvailablePlayers = PlayerController.AllPlayerControls.Where(x => !x.PlayerData.IsDead && !x.IsLocalPlayer); PlayerController closest = AvailablePlayers.ToList()[0]; foreach (var player in AvailablePlayers) { float DistOld = Vector2.Distance(closest.Position, PlayerController.LocalPlayer.Position); float DistNew = Vector2.Distance(player.Position, PlayerController.LocalPlayer.Position); if (DistNew < DistOld) { closest = player; } } #endregion #region --- Update Target --- if (Vector2.Distance(closest.Position, PlayerController.LocalPlayer.Position) <= KillDistance) { PlayerHudManager.HudManager.KillButton.SetTarget(closest.PlayerControl); PlayerHudManager.HudManager.KillButton.CurrentTarget = closest.PlayerControl; Patching.PatchPerformKill.Target = closest; } else { Patching.PatchPerformKill.Target = null; } #endregion #endregion }
private void RpcManager_RpcReceived(object sender, RpcEventArgs e) { if (e.Command != BattleRoyale.BattleRoyalRpc) { return; } var command = e.MessageReader.ReadByte(); switch (command) { case (byte)BattleRoyale.CustomRpcCalls.UpdateRandomStartLocation: { RandomStartLocation = Convert.ToBoolean(e.MessageReader.ReadByte()); break; } case (byte)BattleRoyale.CustomRpcCalls.SendStartLocation: { var playerId = e.MessageReader.ReadByte(); float x = e.MessageReader.ReadSingle(); float y = e.MessageReader.ReadSingle(); var loc = new Vector2(x, y); var player = PlayerController.FromPlayerId(playerId); if (player.IsLocalPlayer) { player.RpcSnapTo(loc); } break; } case (byte)BattleRoyale.CustomRpcCalls.SetWinner: { var winner = PlayerController.FromPlayerId(e.MessageReader.ReadByte()); RolePlayer MyRole = new RolePlayer(PlayerController.LocalPlayer, "Default"); MyRole.RoleOutro.UseRoleOutro = true; if (winner.IsLocalPlayer) { MyRole.RoleOutro.WinText = "Victory Royale"; MyRole.RoleOutro.WinTextColor = new Color(255 / 255f, 174 / 255f, 0 / 255f); MyRole.RoleOutro.BackgroundColor = new Color(1f, 0.8f, 0f); } else { MyRole.RoleOutro.WinText = winner.PlayerData.PlayerName; MyRole.RoleOutro.WinTextColor = new Color(255 / 255f, 174 / 255f, 0 / 255f); MyRole.RoleOutro.BackgroundColor = new Color(1f, 0f, 0f); } winner.PlayerData.IsImpostor = true; break; } case (byte)BattleRoyale.CustomRpcCalls.KillPlayer: { var killer = PlayerController.FromPlayerId(e.MessageReader.ReadByte()); var target = PlayerController.FromPlayerId(e.MessageReader.ReadByte()); if (!killer.PlayerData.IsDead && !target.PlayerData.IsDead && CheepsAmongUsMod.CheepsAmongUsMod.IsDecidingClient) { RpcManager.SendRpc(BattleRoyale.BattleRoyalRpc, new byte[] { (byte)BattleRoyale.CustomRpcCalls.MurderPlayer, killer.PlayerId, target.PlayerId }); killer.PlayerControl.MurderPlayer(target.PlayerControl); target.PlayerData.IsDead = true; } break; } case (byte)BattleRoyale.CustomRpcCalls.MurderPlayer: { var killer = PlayerController.FromPlayerId(e.MessageReader.ReadByte()); var target = PlayerController.FromPlayerId(e.MessageReader.ReadByte()); killer.PlayerControl.MurderPlayer(target.PlayerControl); target.PlayerData.IsDead = true; break; } } }
public void Execute(GameClient Session, Room Room, RoomUser UserRoom, string[] Params) { if (Params.Length != 3) { return; } if (!Room.RpRoom) { return; } RolePlayer Rp = UserRoom.Roleplayer; if (Rp == null) { return; } if (Rp.Dead || Rp.SendPrison) { return; } RoomUser TargetRoomUser = Room.GetRoomUserManager().GetRoomUserByHabbo(Params[1].ToString()); if (TargetRoomUser == null || TargetRoomUser.GetClient() == null || TargetRoomUser.GetClient().GetHabbo() == null) { return; } int NumberMoney = 0; if (!int.TryParse(Params[2].ToString(), out NumberMoney)) { return; } if (NumberMoney <= 0) { return; } RolePlayer RpTwo = TargetRoomUser.Roleplayer; if (RpTwo == null) { return; } if (TargetRoomUser.GetClient().GetHabbo().Id == Session.GetHabbo().Id) { return; } if (RpTwo.Dead || RpTwo.SendPrison) { return; } if (Rp.Money < NumberMoney) { return; } if (!((Math.Abs((TargetRoomUser.X - UserRoom.X)) >= 2) || (Math.Abs((TargetRoomUser.Y - UserRoom.Y)) >= 2))) { Rp.Money -= NumberMoney; RpTwo.Money += NumberMoney; Rp.SendUpdate(); RpTwo.SendUpdate(); TargetRoomUser.SendWhisperChat(string.Format(ButterflyEnvironment.GetLanguageManager().TryGetValue("rp.givemoney.receive", TargetRoomUser.GetClient().Langue), NumberMoney, UserRoom.GetUsername())); UserRoom.SendWhisperChat(string.Format(ButterflyEnvironment.GetLanguageManager().TryGetValue("rp.givemoney.send", Session.Langue), NumberMoney, TargetRoomUser.GetUsername())); UserRoom.OnChat(string.Format(ButterflyEnvironment.GetLanguageManager().TryGetValue("rp.givemoney.send.chat", Session.Langue), TargetRoomUser.GetUsername()), 0, true); } }
public void Parse(WebClient Session, ClientPacket Packet) { int ItemId = Packet.PopInt(); int UseCount = Packet.PopInt(); GameClient Client = ButterflyEnvironment.GetGame().GetClientManager().GetClientByUserID(Session.UserId); if (Client == null || Client.GetHabbo() == null) { return; } Room Room = Client.GetHabbo().CurrentRoom; if (Room == null || !Room.RpRoom) { return; } RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabboId(Client.GetHabbo().Id); if (User == null) { return; } if (User.Freeze) { return; } RolePlayer Rp = User.Roleplayer; if (Rp == null || Rp.Dead || Rp.SendPrison || Rp.TradeId > 0) { return; } if (Rp.AggroTimer > 0) { User.SendWhisperChat(string.Format(ButterflyEnvironment.GetLanguageManager().TryGetValue("rp.useitem.notallowed", Client.Langue), Math.Round((double)Rp.AggroTimer / 2))); return; } RPItem RpItem = ButterflyEnvironment.GetGame().GetRoleplayManager().GetItemManager().GetItem(ItemId); if (RpItem == null) { return; } RolePlayInventoryItem RpItemInventory = Rp.GetInventoryItem(ItemId); if (RpItemInventory == null || RpItemInventory.Count <= 0 || RpItem.Type == "none") { return; } if (UseCount <= 0 || RpItem.UseType != 2) { UseCount = 1; } if (UseCount > RpItemInventory.Count) { UseCount = RpItemInventory.Count; } if (User.FreezeEndCounter <= 1) { User.Freeze = true; User.FreezeEndCounter = 1; } if (RpItem.Id == 75) { Rp.AddInventoryItem(45, UseCount); } switch (RpItem.Type) { case "openpage": { User.GetClient().SendPacket(new NuxAlertComposer("habbopages/roleplay/" + RpItem.Value)); break; } case "openguide": { User.GetClient().SendPacket(new NuxAlertComposer("habbopages/westworld/westworld")); break; } case "hit": { Rp.Hit(User, RpItem.Value * UseCount, Room, false, true, false); Rp.RemoveInventoryItem(RpItem.Id, UseCount); break; } case "enable": { User.ApplyEffect(RpItem.Value); break; } case "showtime": { User.SendWhisperChat("Il est " + Room.RpHour + " heures et " + Room.RpMinute + " minutes"); break; } case "money": { Rp.Money += RpItem.Value * UseCount; Rp.RemoveInventoryItem(RpItem.Id, UseCount); Rp.SendUpdate(); break; } case "munition": { Rp.AddMunition(RpItem.Value * UseCount); Rp.RemoveInventoryItem(RpItem.Id, UseCount); Rp.SendUpdate(); break; } case "energytired": { User.ApplyEffect(4, true); User.TimerResetEffect = 2; Rp.AddEnergy(RpItem.Value * UseCount); Rp.Hit(User, RpItem.Value * UseCount, Room, false, true, false); Rp.SendUpdate(); Rp.RemoveInventoryItem(RpItem.Id, UseCount); User.OnChat("*Consomme " + Char.ToLowerInvariant(RpItem.Title[0]) + RpItem.Title.Substring(1) + "*"); break; } case "healthtired": { User.ApplyEffect(4, true); User.TimerResetEffect = 2; Rp.RemoveEnergy(RpItem.Value * UseCount); Rp.AddHealth(RpItem.Value * UseCount); Rp.SendUpdate(); Rp.RemoveInventoryItem(RpItem.Id, UseCount); User.OnChat("*Consomme " + Char.ToLowerInvariant(RpItem.Title[0]) + RpItem.Title.Substring(1) + "*"); break; } case "healthenergy": { User.ApplyEffect(4, true); User.TimerResetEffect = 2; Rp.AddEnergy(RpItem.Value * UseCount); Rp.AddHealth(RpItem.Value * UseCount); Rp.SendUpdate(); Rp.RemoveInventoryItem(RpItem.Id, UseCount); User.OnChat("*Consomme " + Char.ToLowerInvariant(RpItem.Title[0]) + RpItem.Title.Substring(1) + "*"); break; } case "energy": { User.ApplyEffect(4, true); User.TimerResetEffect = 2; Rp.AddEnergy(RpItem.Value * UseCount); Rp.SendUpdate(); Rp.RemoveInventoryItem(RpItem.Id, UseCount); User.OnChat("*Consomme " + Char.ToLowerInvariant(RpItem.Title[0]) + RpItem.Title.Substring(1) + "*"); break; } case "health": { User.ApplyEffect(737, true); User.TimerResetEffect = 4; Rp.AddHealth(RpItem.Value * UseCount); Rp.SendUpdate(); Rp.RemoveInventoryItem(RpItem.Id, UseCount); User.OnChat("*Consomme " + Char.ToLowerInvariant(RpItem.Title[0]) + RpItem.Title.Substring(1) + "*"); break; } case "weapon_cac": { if (Rp.WeaponCac.Id == RpItem.Value) { break; } Rp.WeaponCac = ButterflyEnvironment.GetGame().GetRoleplayManager().GetWeaponManager().GetWeaponCac(RpItem.Value); User.SendWhisperChat(ButterflyEnvironment.GetLanguageManager().TryGetValue("rp.changearmecac", Client.Langue)); break; } case "weapon_far": { if (Rp.WeaponGun.Id == RpItem.Value) { break; } Rp.WeaponGun = ButterflyEnvironment.GetGame().GetRoleplayManager().GetWeaponManager().GetWeaponGun(RpItem.Value); User.SendWhisperChat(ButterflyEnvironment.GetLanguageManager().TryGetValue("rp.changearmefar", Client.Langue)); break; } } }
public void OnDisconnect() { if (this.Disconnected) { return; } this.Disconnected = true; ButterflyEnvironment.GetGame().GetClientManager().UnregisterClient(this.Id, this.Username); if (this.Langue == Language.FRANCAIS) { ButterflyEnvironment.onlineUsersFr--; } else if (this.Langue == Language.ANGLAIS) { ButterflyEnvironment.onlineUsersEn--; } else if (this.Langue == Language.PORTUGAIS) { ButterflyEnvironment.onlineUsersBr--; } if (this.HasFuse("fuse_mod")) { ButterflyEnvironment.GetGame().GetClientManager().RemoveUserStaff(this.Id); } Logging.WriteLine(this.Username + " has logged out."); if (!this.HabboinfoSaved) { this.HabboinfoSaved = true; TimeSpan TimeOnline = DateTime.Now - this.OnlineTime; int TimeOnlineSec = (int)TimeOnline.TotalSeconds; using (IQueryAdapter queryreactor = ButterflyEnvironment.GetDatabaseManager().GetQueryReactor()) { queryreactor.RunQuery("UPDATE users SET online = '0', last_online = '" + ButterflyEnvironment.GetUnixTimestamp() + "', activity_points = " + this.Duckets + ", activity_points_lastupdate = '" + this.LastActivityPointsUpdate + "', credits = " + this.Credits + " WHERE id = " + this.Id + " ;"); queryreactor.RunQuery("UPDATE user_stats SET groupid = " + this.FavouriteGroupId + ", OnlineTime = OnlineTime + " + TimeOnlineSec + ", quest_id = '" + this.CurrentQuestId + "', Respect = '" + this.Respect + "', DailyRespectPoints = '" + this.DailyRespectPoints + "', DailyPetRespectPoints = '" + this.DailyPetRespectPoints + "' WHERE id = " + this.Id + " ;"); } } if (this.InRoom && this.CurrentRoom != null) { this.CurrentRoom.GetRoomUserManager().RemoveUserFromRoom(this.mClient, false, false); } if (this.RolePlayId > 0) { RolePlayerManager RPManager = ButterflyEnvironment.GetGame().GetRoleplayManager().GetRolePlay(this.RolePlayId); if (RPManager != null) { RolePlayer Rp = RPManager.GetPlayer(this.Id); if (Rp != null) { RPManager.RemovePlayer(this.Id); } } this.RolePlayId = 0; } if (this.GuideOtherUserId != 0) { GameClient requester = ButterflyEnvironment.GetGame().GetClientManager().GetClientByUserID(this.GuideOtherUserId); if (requester != null) { ServerPacket message = new ServerPacket(ServerPacketHeader.OnGuideSessionEnded); message.WriteInteger(1); requester.SendPacket(message); requester.GetHabbo().GuideOtherUserId = 0; } } if (this.OnDuty) { ButterflyEnvironment.GetGame().GetGuideManager().RemoveGuide(this.Id); } if (this.Messenger != null) { this.Messenger.AppearOffline = true; this.Messenger.Destroy(); } if (this.InventoryComponent != null) { this.InventoryComponent.Destroy(); this.InventoryComponent = null; } if (this.BadgeComponent != null) { this.BadgeComponent.Destroy(); this.BadgeComponent = null; } if (this.UsersRooms != null) { this.UsersRooms.Clear(); } if (this.RoomRightsList != null) { this.RoomRightsList.Clear(); } if (this.FavoriteRooms != null) { this.FavoriteRooms.Clear(); } this.mClient = (GameClient)null; }
private void AggroCycle(RoomUser Bot, Room Room) { RoomUser User = Room.GetRoomUserManager().GetRoomUserByVirtualId(this.AggroVirtuelId); if (User == null || this.Dead) { this.ResetAggro(); return; } if (this.AggroTimer > 120) { this.ResetAggro(); return; } else { this.AggroTimer++; } if (!User.IsBot) { RolePlayer Rp = User.Roleplayer; if (Rp == null) { this.ResetAggro(); return; } if (Rp.Dead || (!Rp.PvpEnable && Rp.AggroTimer <= 0) || Rp.SendPrison) { this.ResetAggro(); return; } } else { if (User.BotData.RoleBot == null || User.BotData.RoleBot.Dead) { this.ResetAggro(); return; } } int BotX = (Bot.SetStep) ? Bot.SetX : Bot.X; int BotY = (Bot.SetStep) ? Bot.SetY : Bot.Y; int UserX = (User.SetStep) ? User.SetX : User.X; int UserY = (User.SetStep) ? User.SetY : User.Y; int DistanceX = Math.Abs(UserX - BotX); int DistanceY = Math.Abs(UserY - BotY); if (DistanceX > this.Config.LostAggroDistance || DistanceY > this.Config.LostAggroDistance) { this.ResetAggro(); return; } if (DistanceX > this.Config.LostAggroDistance || DistanceY > this.Config.LostAggroDistance) { this.ResetAggro(); return; } if (DistanceX > this.Config.LostAggroDistance || DistanceY > this.Config.LostAggroDistance) { this.ResetAggro(); return; } if (Math.Abs(BotX - Bot.BotData.X) > this.Config.ZoneDistance + 10 || Math.Abs(BotY - Bot.BotData.Y) > this.Config.ZoneDistance + 10) { this.ResetAggro(); return; } if (Bot.Freeze) { return; } if (!this.BotPathFind(Bot, Room, User)) { return; } int Rot = Rotation.Calculate(BotX, BotY, UserX, UserY); Bot.RotHead = Rot; Bot.RotBody = Rot; Bot.UpdateNeeded = true; this.AggroTimer = 0; if (this.WeaponCac.Id != 0 && (DistanceX < 2 && DistanceY < 2)) { this.Cac(Bot, Room, User); } else if (this.WeaponGun.Id != 0) { this.Pan(Bot, Room); } }
private bool EndTrade(RPTroc Troc) { RolePlayerManager RPManager = ButterflyEnvironment.GetGame().GetRoleplayManager().GetRolePlay(Troc.RPId); if (RPManager == null) { return(false); } RolePlayer PlayerOne = RPManager.GetPlayer(Troc.UserOne.UserId); if (PlayerOne == null) { return(false); } RolePlayer PlayerTwo = RPManager.GetPlayer(Troc.UserTwo.UserId); if (PlayerTwo == null) { return(false); } foreach (KeyValuePair <int, int> entry in Troc.UserOne.ItemIds) { RolePlayInventoryItem Item = PlayerOne.GetInventoryItem(entry.Key); if (Item == null) { return(false); } if (Item.Count < entry.Value) { return(false); } } foreach (KeyValuePair <int, int> entry in Troc.UserTwo.ItemIds) { RolePlayInventoryItem Item = PlayerTwo.GetInventoryItem(entry.Key); if (Item == null) { return(false); } if (Item.Count < entry.Value) { return(false); } } foreach (KeyValuePair <int, int> entry in Troc.UserOne.ItemIds) { RolePlayInventoryItem Item = PlayerOne.GetInventoryItem(entry.Key); if (Item == null) { return(false); } PlayerOne.RemoveInventoryItem(entry.Key, entry.Value); PlayerTwo.AddInventoryItem(entry.Key, entry.Value); } foreach (KeyValuePair <int, int> entry in Troc.UserTwo.ItemIds) { PlayerTwo.RemoveInventoryItem(entry.Key, entry.Value); PlayerOne.AddInventoryItem(entry.Key, entry.Value); } return(true); }
public void Parse(WebClient Session, ClientPacket Packet) { int ItemId = Packet.PopInt(); int Count = Packet.PopInt(); if (Count > 99) { Count = 99; } if (Count < 1) { Count = 1; } GameClient Client = ButterflyEnvironment.GetGame().GetClientManager().GetClientByUserID(Session.UserId); if (Client == null || Client.GetHabbo() == null) { return; } Room Room = Client.GetHabbo().CurrentRoom; if (Room == null || !Room.RpRoom) { return; } RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabboId(Client.GetHabbo().Id); if (User == null) { return; } if (!User.AllowBuyItems.Contains(ItemId)) { return; } RolePlayer Rp = User.Roleplayer; if (Rp == null || Rp.Dead || Rp.SendPrison) { return; } RPItem RpItem = ButterflyEnvironment.GetGame().GetRoleplayManager().GetItemManager().GetItem(ItemId); if (RpItem == null) { return; } if (!RpItem.AllowStack && Rp.GetInventoryItem(RpItem.Id) != null) { User.SendWhisperChat(ButterflyEnvironment.GetLanguageManager().TryGetValue("rp.itemown", Client.Langue)); return; } if (!RpItem.AllowStack && Count > 1) { Count = 1; } if (Rp.Money < (RpItem.Price * Count)) { return; } Rp.AddInventoryItem(RpItem.Id, Count); if (RpItem.Price == 0) { User.SendWhisperChat(ButterflyEnvironment.GetLanguageManager().TryGetValue("rp.itempick", Client.Langue)); } else { User.SendWhisperChat(string.Format(ButterflyEnvironment.GetLanguageManager().TryGetValue("rp.itembuy", Client.Langue), RpItem.Price)); } Rp.Money -= RpItem.Price * Count; Rp.SendUpdate(); }
public void Execute(GameClient Session, Room Room, RoomUser UserRoom, string[] Params) { if (Params.Length != 2) { return; } if (!Room.RpRoom || !Room.Pvp) { return; } RolePlayer Rp = UserRoom.Roleplayer; if (Rp == null) { return; } if (Rp.Dead || !Rp.PvpEnable || Rp.SendPrison || UserRoom.Freeze) { return; } int WeaponEanble = Rp.WeaponCac.Enable; UserRoom.ApplyEffect(WeaponEanble, true); UserRoom.TimerResetEffect = Rp.WeaponCac.FreezeTime + 1; if (UserRoom.FreezeEndCounter <= Rp.WeaponCac.FreezeTime) { UserRoom.Freeze = true; UserRoom.FreezeEndCounter = Rp.WeaponCac.FreezeTime; } RoomUser TargetRoomUser = Room.GetRoomUserManager().GetRoomUserByHabbo(Params[1].ToString()); if (TargetRoomUser == null) { RoomUser BotOrPet = Room.GetRoomUserManager().GetBotOrPetByName(Params[1].ToString()); if (BotOrPet == null || BotOrPet.BotData == null || BotOrPet.BotData.RoleBot == null) { return; } if (BotOrPet.BotData.RoleBot.Dead) { return; } if (Math.Abs(BotOrPet.X - UserRoom.X) >= 2 || Math.Abs(BotOrPet.Y - UserRoom.Y) >= 2) { return; } int Dmg = ButterflyEnvironment.GetRandomNumber(Rp.WeaponCac.DmgMin, Rp.WeaponCac.DmgMax); BotOrPet.BotData.RoleBot.Hit(BotOrPet, Dmg, Room, UserRoom.VirtualId, -1); } else { RolePlayer RpTwo = TargetRoomUser.Roleplayer; if (RpTwo == null || (!RpTwo.PvpEnable && RpTwo.AggroTimer <= 0)) { return; } if (TargetRoomUser.GetClient().GetHabbo().Id == Session.GetHabbo().Id) { return; } if (RpTwo.Dead || RpTwo.SendPrison) { return; } if (Math.Abs(TargetRoomUser.X - UserRoom.X) >= 2 || Math.Abs(TargetRoomUser.Y - UserRoom.Y) >= 2) { return; } int Dmg = ButterflyEnvironment.GetRandomNumber(Rp.WeaponCac.DmgMin, Rp.WeaponCac.DmgMax); Rp.AggroTimer = 30; RpTwo.Hit(TargetRoomUser, Dmg, Room); } }
public void Hit(RoomUser Bot, int Dmg, Room Room, int pAggroVId, int pTeamId) { if (this.Dead) { return; } if (this.Health <= Dmg) { RoomUser User = Room.GetRoomUserManager().GetRoomUserByVirtualId(this.AggroVirtuelId); if (User != null && !User.IsBot) { RolePlayer Rp = User.Roleplayer; if (Rp != null) { Rp.AddExp(this.Config.Health); } } this.Health = 0; this.Dead = true; this.DeadTimer = this.Config.DeadTimer; this.AggroVirtuelId = 0; this.AggroTimer = 0; this.ResetBot = false; this.ResetBotTimer = 0; this.HitCount = 0; this.Dodge = false; this.DodgeTimer = 0; Bot.SetStatus("lay", (Bot.IsPet) ? "" : "0.7"); Bot.Freeze = true; Bot.FreezeEndCounter = 0; Bot.IsLay = true; Bot.UpdateNeeded = true; if (this.Config.MoneyDrop > 0) { Room.GetRoomItemHandler().AddTempItem(Bot.VirtualId, this.Config.DropScriptId, Bot.SetX, Bot.SetY, Bot.Z, "1", this.Config.MoneyDrop, InteractionTypeTemp.MONEY); } if (this.Config.LootItemId > 0) { RPItem Item = ButterflyEnvironment.GetGame().GetRoleplayManager().GetItemManager().GetItem(this.Config.LootItemId); if (Item != null) { Room.GetRoomItemHandler().AddTempItem(Bot.VirtualId, 3996, Bot.SetX, Bot.SetY, Bot.Z, Item.Name, this.Config.LootItemId, InteractionTypeTemp.RPITEM); } } Bot.OnChat("A été mis K.O. ! [" + this.Health + "/" + this.Config.Health + "]", (Bot.IsPet) ? 0 : 2, true); } else { this.Health -= Dmg; this.SlowTimer = 6; this.ResetBot = false; this.ResetBotTimer = 60; this.AggroTimer = 0; if (pTeamId == -1 || pTeamId != this.Config.TeamId) { this.AggroVirtuelId = pAggroVId; } if (!this.Dodge) { this.HitCount += 1; if (this.HitCount % this.DodgeStartCount == 0) { this.Dodge = true; this.DodgeTimer = 3; this.DodgeStartCount = ButterflyEnvironment.GetRandomNumber(2, 4); } } Bot.OnChat(string.Format(ButterflyEnvironment.GetLanguageManager().TryGetValue("rp.hit", Room.RoomData.Langue), this.Health, this.Config.Health, Dmg), (Bot.IsPet) ? 0 : 2, true); } }
public void Execute(GameClient Session, Room Room, RoomUser UserRoom, string[] Params) { if (!Room.RpRoom || !Room.Pvp || UserRoom.Freeze) { return; } RolePlayer Rp = UserRoom.Roleplayer; if (Rp == null) { return; } if (Rp.Dead || !Rp.PvpEnable || Rp.SendPrison) { return; } if (Rp.Munition <= 0) { UserRoom.SendWhisperChat(ButterflyEnvironment.GetLanguageManager().TryGetValue("rp.munitionnotfound", Session.Langue)); return; } if (Rp.GunLoad <= 0) { UserRoom.SendWhisperChat(ButterflyEnvironment.GetLanguageManager().TryGetValue("rp.reloadweapon", Session.Langue)); return; } MovementDirection movement = MovementManagement.GetMovementByDirection(UserRoom.RotBody); int WeaponEanble = Rp.WeaponGun.Enable; UserRoom.ApplyEffect(WeaponEanble, true); UserRoom.TimerResetEffect = Rp.WeaponGun.FreezeTime + 1; Rp.AggroTimer = 30; if (UserRoom.FreezeEndCounter <= Rp.WeaponGun.FreezeTime) { UserRoom.Freeze = true; UserRoom.FreezeEndCounter = Rp.WeaponGun.FreezeTime; } for (int i = 0; i < Rp.WeaponGun.FreezeTime; i++) { if (Rp.Munition <= 0 || Rp.GunLoad <= 0) { break; } Rp.Munition--; Rp.GunLoad--; int Dmg = ButterflyEnvironment.GetRandomNumber(Rp.WeaponGun.DmgMin, Rp.WeaponGun.DmgMax); Room.GetProjectileManager().AddProjectile(UserRoom.VirtualId, UserRoom.SetX, UserRoom.SetY, UserRoom.SetZ, movement, Dmg, Rp.WeaponGun.Distance); } Rp.SendUpdate(); }
public void Parse(GameClient Session, ClientPacket Packet) { if (Session == null || Session.GetHabbo() == null || !Session.GetHabbo().InRoom) { return; } Room Room = Session.GetHabbo().CurrentRoom; if (Room == null) { return; } RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabboId(Session.GetHabbo().Id); if (User == null) { return; } if (Room.RpRoom) { RolePlayer Rp = User.Roleplayer; if (Rp != null && Rp.Dead) { return; } } string Message = StringCharFilter.Escape(Packet.PopString()); if (Message.Length > 100) { Message = Message.Substring(0, 100); } int Colour = Packet.PopInt(); ChatStyle Style = null; if (!ButterflyEnvironment.GetGame().GetChatManager().GetChatStyles().TryGetStyle(Colour, out Style) || (Style.RequiredRight.Length > 0 && !Session.GetHabbo().HasFuse(Style.RequiredRight))) { Colour = 0; } User.Unidle(); if (Session.GetHabbo().Rank < 5U && Room.RoomMuted && !User.IsOwner() && !Session.GetHabbo().CurrentRoom.CheckRights(Session)) { User.SendWhisperChat(ButterflyEnvironment.GetLanguageManager().TryGetValue("room.muted", Session.Langue)); return; } if (Room.GetJanken().PlayerStarted(User)) { if (!Room.GetJanken().PickChoix(User, Message)) { User.SendWhisperChat(ButterflyEnvironment.GetLanguageManager().TryGetValue("janken.choice", Session.Langue)); } return; } if (Room.UserIsMuted(Session.GetHabbo().Id)) { if (!Room.HasMuteExpired(Session.GetHabbo().Id)) { User.GetClient().SendNotification(ButterflyEnvironment.GetLanguageManager().TryGetValue("user.muted", Session.Langue)); return; } else { Room.RemoveMute(Session.GetHabbo().Id); } } TimeSpan timeSpan = DateTime.Now - Session.GetHabbo().spamFloodTime; if (timeSpan.TotalSeconds > (double)Session.GetHabbo().spamProtectionTime&& Session.GetHabbo().spamEnable) { User.FloodCount = 0; Session.GetHabbo().spamEnable = false; } else if (timeSpan.TotalSeconds > 4.0) { User.FloodCount = 0; } if (timeSpan.TotalSeconds < (double)Session.GetHabbo().spamProtectionTime&& Session.GetHabbo().spamEnable) { int i = Session.GetHabbo().spamProtectionTime - timeSpan.Seconds; User.GetClient().SendPacket(new FloodControlComposer(i)); return; } else if (timeSpan.TotalSeconds < 4.0 && User.FloodCount > 5 && !Session.GetHabbo().HasFuse("fuse_mod")) { Session.GetHabbo().spamProtectionTime = (Room.RpRoom) ? 5 : 30; Session.GetHabbo().spamEnable = true; User.GetClient().SendPacket(new FloodControlComposer(Session.GetHabbo().spamProtectionTime - timeSpan.Seconds)); return; } else if (Message.Length > 40 && Message == User.LastMessage && User.LastMessageCount == 1) { User.LastMessageCount = 0; User.LastMessage = ""; Session.GetHabbo().spamProtectionTime = (Room.RpRoom) ? 5 : 30; Session.GetHabbo().spamEnable = true; User.GetClient().SendPacket(new FloodControlComposer(Session.GetHabbo().spamProtectionTime - timeSpan.Seconds)); return; } else { if (Message == User.LastMessage && Message.Length > 40) { User.LastMessageCount++; } User.LastMessage = Message; Session.GetHabbo().spamFloodTime = DateTime.Now; User.FloodCount++; if (Session != null) { if (Message.StartsWith("@red@") || Message.StartsWith("@rouge@")) { User.ChatTextColor = "@red@"; } if (Message.StartsWith("@cyan@")) { User.ChatTextColor = "@cyan@"; } if (Message.StartsWith("@blue@") || Message.StartsWith("@bleu@")) { User.ChatTextColor = "@blue@"; } if (Message.StartsWith("@green@") || Message.StartsWith("@vert@")) { User.ChatTextColor = "@green@"; } if (Message.StartsWith("@purple@") || Message.StartsWith("@violet@")) { User.ChatTextColor = "@purple@"; } if (Message.StartsWith("@black@") || Message.StartsWith("@noir@")) { User.ChatTextColor = ""; } } if (Message.StartsWith(":", StringComparison.CurrentCulture) && ButterflyEnvironment.GetGame().GetChatManager().GetCommands().Parse(Session, User, Room, Message)) { Room.GetChatMessageManager().AddMessage(Session.GetHabbo().Id, Session.GetHabbo().Username, Room.Id, string.Format("{0} a utiliser la commande {1}", Session.GetHabbo().Username, Message)); return; } if (Session != null && !User.IsBot) { if (Session.Antipub(Message, "<TCHAT>", Room.Id)) { return; } ButterflyEnvironment.GetGame().GetQuestManager().ProgressUserQuest(Session, QuestType.SOCIAL_CHAT, 0); Session.GetHabbo().GetChatMessageManager().AddMessage(Session.GetHabbo().Id, Session.GetHabbo().Username, Room.Id, Message); Room.GetChatMessageManager().AddMessage(Session.GetHabbo().Id, Session.GetHabbo().Username, Room.Id, Message); if (User.transfbot) { Colour = 2; } } } if (!Session.GetHabbo().HasFuse("word_filter_override")) { Message = ButterflyEnvironment.GetGame().GetChatManager().GetFilter().CheckMessage(Message); } if (Room.AllowsShous(User, Message)) { User.SendWhisperChat(Message, false); return; } Room.OnUserSay(User, Message, false); if (User.IsSpectator) { return; } if (!string.IsNullOrEmpty(User.ChatTextColor)) { Message = User.ChatTextColor + " " + Message; } User.OnChat(Message, Colour, false); }