コード例 #1
0
 public static void GameManager_OpenTileEntityAllowed_Postfix(bool __state, int _entityIdThatOpenedIt, TileEntity _te)
 {
     try
     {
         if (__state)
         {
             ClientInfo cInfo = PersistentOperations.GetClientInfoFromEntityId(_entityIdThatOpenedIt);
             if (cInfo != null)
             {
                 cInfo.SendPackage(NetPackageManager.GetPackage <NetPackageConsoleCmdClient>().Setup("xui close trader", true));
             }
         }
     }
     catch (Exception e)
     {
         Log.Out(string.Format("[SERVERTOOLS] Error in Injections.GameManager_OpenTileEntityAllowed_Postfix: {0}", e.Message));
     }
 }
コード例 #2
0
 public static bool GameManager_CollectEntityServer_Prefix(int _entityId)
 {
     try
     {
         if (PersistentOperations.No_Vehicle_Pickup)
         {
             Entity _entity = PersistentOperations.GetEntity(_entityId);
             if (_entity != null && _entity is EntityVehicle)
             {
                 return(false);
             }
         }
     }
     catch (Exception e)
     {
         Log.Out(string.Format("[SERVERTOOLS] Error in Injections.GameManager_CollectEntityServer_Prefix: {0}", e.Message));
     }
     return(true);
 }
コード例 #3
0
 public static bool ProcessPenalty(int _total, string _persistentPlayerId)
 {
     try
     {
         EntityPlayer _player = PersistentOperations.GetEntityPlayer(_persistentPlayerId);
         if (_player != null)
         {
             AdminToolsClientInfo Admin = GameManager.Instance.adminTools.GetAdminToolsClientInfo(_persistentPlayerId);
             if (Admin.PermissionLevel > Admin_Level)
             {
                 if (Damage_Detector)
                 {
                     string _message = "[FF0000]{PlayerName} has been banned for using damage manipulation.";
                     _message = _message.Replace("{PlayerName}", _player.EntityName);
                     ClientInfo _cInfo = PersistentOperations.GetClientInfoFromSteamId(_persistentPlayerId);
                     if (_cInfo != null)
                     {
                         ChatHook.ChatMessage(_cInfo, LoadConfig.Chat_Response_Color + _message + "[-]", -1, LoadConfig.Server_Response_Name, EChatType.Global, null);
                         SdtdConsole.Instance.ExecuteSync(string.Format("ban add {0} 5 years \"Auto detection has banned you for using a damage manipulator. Damage recorded: {1}\"", _persistentPlayerId, _total.ToString()), null);
                         using (StreamWriter sw = new StreamWriter(_detectionFilepath, true))
                         {
                             sw.WriteLine(string.Format("Detected {0} with steam id {1} using a damage manipulator @ position {2}. Damage recorded: {3}", _player.EntityName, _persistentPlayerId, _player.position, _total));
                             sw.WriteLine();
                             sw.Flush();
                             sw.Close();
                         }
                     }
                     return(true);
                 }
             }
             else
             {
                 return(true);
             }
         }
     }
     catch (Exception e)
     {
         Log.Out(string.Format("[SERVERTOOLS] Error in ProcessDamage.ProcessPenalty: {0}", e.Message));
     }
     return(false);
 }
コード例 #4
0
 public static bool ClientInfoCollection_GetForNameOrId_Prefix(ref ClientInfo __result, string _nameOrId)
 {
     try
     {
         ClientInfo clientInfo = null;
         int        entityId;
         if (int.TryParse(_nameOrId, out entityId))
         {
             clientInfo = PersistentOperations.GetClientInfoFromEntityId(entityId);
             if (clientInfo != null)
             {
                 __result = clientInfo;
                 return(false);
             }
         }
         clientInfo = PersistentOperations.GetClientInfoFromName(_nameOrId);
         if (clientInfo != null)
         {
             __result = clientInfo;
             return(false);
         }
         if (_nameOrId.Contains("Local_") || _nameOrId.Contains("EOS_") || _nameOrId.Contains("Steam_") || _nameOrId.Contains("XBL_") || _nameOrId.Contains("PSN_") || _nameOrId.Contains("EGS_"))
         {
             PlatformUserIdentifierAbs userIdentifier;
             if (PlatformUserIdentifierAbs.TryFromCombinedString(_nameOrId, out userIdentifier))
             {
                 clientInfo = PersistentOperations.GetClientInfoFromUId(userIdentifier);
                 if (clientInfo != null)
                 {
                     __result = clientInfo;
                     return(false);
                 }
             }
         }
     }
     catch (Exception e)
     {
         Log.Out(string.Format("[SERVERTOOLS] Error in Injections.ClientInfoCollection_GetForNameOrId_Prefix: {0}", e.Message));
     }
     return(false);
 }
コード例 #5
0
 public override void Execute(List <string> _params, CommandSenderInfo _senderInfo)
 {
     try
     {
         string            _message   = string.Join(" ", _params.ToArray());
         List <ClientInfo> _cInfoList = PersistentOperations.ClientList();
         for (int i = 0; i < _cInfoList.Count; i++)
         {
             ClientInfo _player = _cInfoList[i];
             if (GameManager.Instance.adminTools.IsAdmin(_player.playerId))
             {
                 ChatHook.ChatMessage(_player, ChatHook.Player_Name_Color + _player.playerName + LoadConfig.Chat_Response_Color + _message + "[-]", _player.entityId, _player.playerName, EChatType.Whisper, null);
                 SdtdConsole.Instance.Output(string.Format("Message sent to {0}", _player.playerName));
             }
         }
     }
     catch (Exception e)
     {
         Log.Out(string.Format("[SERVERTOOLS] Error in @AdminConsole.Execute: {0}", e));
     }
 }
コード例 #6
0
 public static bool ExplosionServer_Prefix(Vector3 _worldPos, int _playerId)
 {
     try
     {
         if (_playerId > 0)
         {
             ClientInfo _cInfo = PersistentOperations.GetClientInfoFromEntityId(_playerId);
             if (_cInfo != null)
             {
                 if (GameManager.Instance.adminTools.GetUserPermissionLevel(_cInfo) > ProcessDamage.Admin_Level)
                 {
                     return(ProtectedSpaces.AllowExplosion(_worldPos));
                 }
             }
         }
     }
     catch (Exception e)
     {
         Log.Out(string.Format("[SERVERTOOLS] Error in Injections.ExplosionServer_Prefix: {0}", e.Message));
     }
     return(true);
 }
コード例 #7
0
 public static void Exec()
 {
     if (ConnectionManager.Instance.ClientCount() > 0)
     {
         List <ClientInfo> ClientInfoList = PersistentOperations.ClientList();
         for (int i = 0; i < ClientInfoList.Count; i++)
         {
             ClientInfo           _cInfo = ClientInfoList[i];
             AdminToolsClientInfo Admin  = GameManager.Instance.adminTools.GetAdminToolsClientInfo(_cInfo.playerId);
             if (Admin.PermissionLevel > Admin_Level)
             {
                 EntityPlayer _player = GameManager.Instance.World.Players.dict[_cInfo.entityId];
                 if (ReservedSlots.IsEnabled)
                 {
                     DateTime _dt;
                     if (ReservedSlots.Dict.TryGetValue(_cInfo.playerId, out _dt))
                     {
                         if (DateTime.Now < _dt)
                         {
                             DonatorRad(_cInfo, _player);
                         }
                         else
                         {
                             NormalRad(_cInfo, _player);
                         }
                     }
                     else
                     {
                         NormalRad(_cInfo, _player);
                     }
                 }
                 else
                 {
                     NormalRad(_cInfo, _player);
                 }
             }
         }
     }
 }
コード例 #8
0
 public static void PlayerLoginRPC_Prefix(string _playerId, out bool __state)
 {
     __state = false;
     try
     {
         if (_playerId != null && _playerId.Length == 17)
         {
             int __maxPlayers = GamePrefs.GetInt(EnumGamePrefs.ServerMaxPlayerCount);
             if (ReservedSlots.IsEnabled && ConnectionManager.Instance.ClientCount() > __maxPlayers)
             {
                 if (ReservedSlots.FullServer(_playerId))
                 {
                     GamePrefs.Set(EnumGamePrefs.ServerMaxPlayerCount, __maxPlayers + 1);
                     __state = true;
                     return;
                 }
             }
             if (NewPlayer.IsEnabled && NewPlayer.Block_During_Bloodmoon && SkyManager.BloodMoon())
             {
                 PersistentPlayerData _ppd = PersistentOperations.GetPersistentPlayerDataFromSteamId(_playerId);
                 if (_ppd == null)
                 {
                     ClientInfo _cInfo = ConnectionManager.Instance.Clients.ForPlayerId(_playerId);
                     if (_cInfo != null)
                     {
                         _cInfo.SendPackage(NetPackageManager.GetPackage <NetPackagePlayerDenied>().Setup(new GameUtils.KickPlayerData(GameUtils.EKickReason.ManualKick, 0, default(DateTime), "[ServerTools] - New players are kicked during the bloodmoon. Please return after the bloodmoon is over")));
                         return;
                     }
                 }
             }
         }
     }
     catch (Exception e)
     {
         Log.Out(string.Format("[SERVERTOOLS] Error in Injections.PlayerLoginRPC_Prefix: {0}", e.Message));
     }
 }
コード例 #9
0
 public override void Execute(List <string> _params, CommandSenderInfo _senderInfo)
 {
     try
     {
         string            message   = string.Join(" ", _params.ToArray());
         List <ClientInfo> cInfoList = PersistentOperations.ClientList();
         if (cInfoList != null)
         {
             for (int i = 0; i < cInfoList.Count; i++)
             {
                 ClientInfo cInfo = cInfoList[i];
                 if (GameManager.Instance.adminTools.IsAdmin(cInfo))
                 {
                     ChatHook.ChatMessage(cInfo, Config.Chat_Response_Color + message + "[-]", -1, cInfo.playerName, EChatType.Whisper, null);
                     SingletonMonoBehaviour <SdtdConsole> .Instance.Output(string.Format("[SERVERTOOLS] Message sent to {0}", cInfo.playerName));
                 }
             }
         }
     }
     catch (Exception e)
     {
         Log.Out(string.Format("[SERVERTOOLS] Error in @AdminConsole.Execute: {0}", e.Message));
     }
 }
コード例 #10
0
 public static void World_SpawnEntityInWorld_Postfix(Entity _entity)
 {
     try
     {
         if (DroppedBagProtection.IsEnabled && _entity != null && _entity is EntityBackpack)
         {
             List <ClientInfo> clientList = PersistentOperations.ClientList();
             if (clientList != null)
             {
                 for (int i = 0; i < clientList.Count; i++)
                 {
                     ClientInfo cInfo = clientList[i];
                     if (cInfo.latestPlayerData != null && cInfo.latestPlayerData.droppedBackpackPosition != null && cInfo.latestPlayerData.droppedBackpackPosition == new Vector3i(_entity.position))
                     {
                         if (!DroppedBagProtection.Backpacks.ContainsKey(_entity.entityId))
                         {
                             DroppedBagProtection.Backpacks.Add(_entity.entityId, cInfo.entityId);
                             PersistentContainer.Instance.Backpacks.Add(_entity.entityId, cInfo.entityId);
                         }
                         else
                         {
                             DroppedBagProtection.Backpacks[_entity.entityId]         = cInfo.entityId;
                             PersistentContainer.Instance.Backpacks[_entity.entityId] = cInfo.entityId;
                         }
                         PersistentContainer.DataChange = true;
                         return;
                     }
                 }
             }
         }
     }
     catch (Exception e)
     {
         Log.Out(string.Format("[SERVERTOOLS] Error in Injections.World_SpawnEntityInWorld_Postfix: {0}", e.Message));
     }
 }
コード例 #11
0
 public static bool ProcessPlayerDamage(EntityAlive __instance, DamageResponse _dmResponse)
 {
     try
     {
         if (__instance != null)
         {
             if (__instance is EntityPlayer)
             {
                 if (_dmResponse.Source != null && _dmResponse.Strength > 1)
                 {
                     EntityPlayer _player1  = (EntityPlayer)__instance;
                     int          _sourceId = _dmResponse.Source.getEntityId();
                     if (_sourceId > 0 && _player1.entityId != _sourceId)
                     {
                         ClientInfo _cInfo2 = PersistentOperations.GetClientInfoFromEntityId(_sourceId);
                         if (_cInfo2 != null)
                         {
                             EntityPlayer _player2 = PersistentOperations.GetEntityPlayer(_cInfo2.playerId);
                             if (_player2 != null)
                             {
                                 if (Damage_Detector)
                                 {
                                     ItemValue _itemValue = ItemClass.GetItem(_dmResponse.Source.ItemClass.GetItemName(), true);
                                     if (_itemValue != null)
                                     {
                                         int _distance = (int)_player2.GetDistance(__instance);
                                         using (StreamWriter sw = new StreamWriter(filepath, true))
                                         {
                                             sw.WriteLine(string.Format("{0}: {1} \"{2}\" hit \"{3}\" with entity id {4} using {5} for {6} damage @ {7}. Distance: {8}", DateTime.Now, _cInfo2.playerId, _cInfo2.playerName, __instance.EntityName, __instance.entityId, _itemValue.ItemClass.GetLocalizedItemName() ?? _itemValue.ItemClass.GetItemName(), _dmResponse.Strength, __instance.position, _distance));
                                             sw.WriteLine();
                                             sw.Flush();
                                             sw.Close();
                                         }
                                         if (_dmResponse.Strength >= Player_Damage_Limit && GameManager.Instance.adminTools.GetUserPermissionLevel(_cInfo2) > Admin_Level)
                                         {
                                             Phrases.Dict.TryGetValue(952, out string _phrase952);
                                             SdtdConsole.Instance.ExecuteSync(string.Format("ban add {0} 5 years \"{1} {2}\"", _cInfo2.playerId, _phrase952, _dmResponse.Strength), null);
                                             using (StreamWriter sw = new StreamWriter(_detectionFilepath, true))
                                             {
                                                 sw.WriteLine(string.Format("Detected \"{0}\" Steam Id {1}, exceeded damage limit @ {2}. Damage: {3}", _cInfo2.playerName, _cInfo2.playerId, __instance.position, _dmResponse.Strength));
                                                 sw.WriteLine();
                                                 sw.Flush();
                                                 sw.Close();
                                             }
                                             Phrases.Dict.TryGetValue(951, out string _phrase951);
                                             _phrase951 = _phrase951.Replace("{PlayerName}", _cInfo2.playerName);
                                             ChatHook.ChatMessage(null, LoadConfig.Chat_Response_Color + _phrase951 + "[-]", -1, LoadConfig.Server_Response_Name, EChatType.Global, null);
                                             return(false);
                                         }
                                     }
                                 }
                                 if (Zones.IsEnabled)
                                 {
                                     if (Zones.ZonePvE.Contains(__instance.entityId) || Zones.ZonePvE.Contains(_cInfo2.entityId))
                                     {
                                         Phrases.Dict.TryGetValue(323, out string _phrase323);
                                         ChatHook.ChatMessage(_cInfo2, LoadConfig.Chat_Response_Color + _phrase323 + "[-]", -1, LoadConfig.Server_Response_Name, EChatType.Whisper, null);
                                         if (!_player1.IsFriendsWith(_player2))
                                         {
                                             if (PersistentOperations.PvEViolations.ContainsKey(_cInfo2.entityId))
                                             {
                                                 PersistentOperations.PvEViolations.TryGetValue(_cInfo2.entityId, out int _flags);
                                                 _flags++;
                                                 if (PersistentOperations.Jail_Violation > 0 && _flags >= PersistentOperations.Jail_Violation)
                                                 {
                                                     Jail(_cInfo2, __instance);
                                                 }
                                                 if (PersistentOperations.Kill_Violation > 0 && _flags >= PersistentOperations.Kill_Violation)
                                                 {
                                                     Kill(_cInfo2);
                                                 }
                                                 if (PersistentOperations.Kick_Violation > 0 && _flags >= PersistentOperations.Kick_Violation)
                                                 {
                                                     Kick(_cInfo2);
                                                 }
                                                 if (PersistentOperations.Ban_Violation > 0 && _flags >= PersistentOperations.Ban_Violation)
                                                 {
                                                     Ban(_cInfo2);
                                                 }
                                             }
                                             else
                                             {
                                                 PersistentOperations.PvEViolations.Add(_cInfo2.entityId, 1);
                                             }
                                         }
                                         return(false);
                                     }
                                 }
                                 if (Lobby.IsEnabled && Lobby.PvE && Lobby.LobbyPlayers.Contains(__instance.entityId) || Market.IsEnabled && Market.PvE && Market.MarketPlayers.Contains(__instance.entityId))
                                 {
                                     Phrases.Dict.TryGetValue(260, out string _phrase260);
                                     ChatHook.ChatMessage(_cInfo2, LoadConfig.Chat_Response_Color + _phrase260 + "[-]", -1, LoadConfig.Server_Response_Name, EChatType.Whisper, null);
                                     if (!_player1.IsFriendsWith(_player2))
                                     {
                                         if (PersistentOperations.PvEViolations.ContainsKey(_cInfo2.entityId))
                                         {
                                             PersistentOperations.PvEViolations.TryGetValue(_cInfo2.entityId, out int _violations);
                                             _violations++;
                                             if (PersistentOperations.Jail_Violation > 0 && _violations >= PersistentOperations.Jail_Violation)
                                             {
                                                 Jail(_cInfo2, __instance);
                                             }
                                             if (PersistentOperations.Kill_Violation > 0 && _violations >= PersistentOperations.Kill_Violation)
                                             {
                                                 Kill(_cInfo2);
                                             }
                                             if (PersistentOperations.Kick_Violation > 0 && _violations >= PersistentOperations.Kick_Violation)
                                             {
                                                 Kick(_cInfo2);
                                             }
                                             else if (PersistentOperations.Ban_Violation > 0 && _violations >= PersistentOperations.Ban_Violation)
                                             {
                                                 Ban(_cInfo2);
                                             }
                                         }
                                         else
                                         {
                                             PersistentOperations.PvEViolations.Add(_cInfo2.entityId, 1);
                                         }
                                     }
                                     return(false);
                                 }
                                 if (KillNotice.IsEnabled)
                                 {
                                     if (KillNotice.Damage.ContainsKey(_player1.entityId))
                                     {
                                         KillNotice.Damage[_player1.entityId] = _dmResponse.Strength;
                                     }
                                     else
                                     {
                                         KillNotice.Damage.Add(_player1.entityId, _dmResponse.Strength);
                                     }
                                 }
                             }
                         }
                     }
                 }
             }
             else if (__instance is EntityZombie || __instance is EntityAnimal)
             {
                 if (_dmResponse.Source != null && _dmResponse.Strength > 1)
                 {
                     int _sourceId = _dmResponse.Source.getEntityId();
                     if (_sourceId > 0)
                     {
                         ClientInfo _cInfo = PersistentOperations.GetClientInfoFromEntityId(_sourceId);
                         if (_cInfo != null)
                         {
                             EntityPlayer _player = PersistentOperations.GetEntityPlayer(_cInfo.playerId);
                             if (_player != null)
                             {
                                 ItemValue _itemValue = ItemClass.GetItem(_dmResponse.Source.ItemClass.GetItemName(), true);
                                 if (_itemValue != null)
                                 {
                                     if (Damage_Detector)
                                     {
                                         int _distance = (int)_player.GetDistance(__instance);
                                         using (StreamWriter sw = new StreamWriter(filepath, true))
                                         {
                                             sw.WriteLine(string.Format("{0}: {1} \"{2}\" hit \"{3}\" with entity id {4} using {5} for {6} damage @ {7}. Distance: {8}", DateTime.Now, _cInfo.playerId, _cInfo.playerName, __instance.EntityName, __instance.entityId, _itemValue.ItemClass.GetLocalizedItemName() ?? _itemValue.ItemClass.GetItemName(), _dmResponse.Strength, __instance.position, _distance));
                                             sw.WriteLine();
                                             sw.Flush();
                                             sw.Close();
                                         }
                                         if (_dmResponse.Strength >= Entity_Damage_Limit && GameManager.Instance.adminTools.GetUserPermissionLevel(_cInfo) > Admin_Level)
                                         {
                                             Phrases.Dict.TryGetValue(952, out string _phrase952);
                                             SdtdConsole.Instance.ExecuteSync(string.Format("ban add {0} 5 years \"{1} {2}\"", _cInfo.playerId, _phrase952, _dmResponse.Strength), null);
                                             using (StreamWriter sw = new StreamWriter(_detectionFilepath, true))
                                             {
                                                 sw.WriteLine(string.Format("Detected \"{0}\" Steam Id {1}, exceeded damage limit @ {2}. Damage: {3}", _cInfo.playerName, _cInfo.playerId, __instance.position, _dmResponse.Strength));
                                                 sw.WriteLine();
                                                 sw.Flush();
                                                 sw.Close();
                                             }
                                             Phrases.Dict.TryGetValue(951, out string _phrase951);
                                             _phrase951 = _phrase951.Replace("{PlayerName}", _cInfo.playerName);
                                             ChatHook.ChatMessage(null, LoadConfig.Chat_Response_Color + _phrase951 + "[-]", -1, LoadConfig.Server_Response_Name, EChatType.Global, null);
                                             return(false);
                                         }
                                     }
                                 }
                             }
                         }
                     }
                 }
             }
         }
     }
     catch (Exception e)
     {
         Log.Out(string.Format("[SERVERTOOLS] Error in ProcessDamage.ProcessPlayerDamage: {0}", e.Message));
     }
     return(true);
 }
コード例 #12
0
 public static bool ProcessBlockDamage(GameManager __instance, string _persistentPlayerId, List <BlockChangeInfo> _blocksToChange)
 {
     try
     {
         World _world = __instance.World;
         if (__instance != null && _blocksToChange != null && !string.IsNullOrEmpty(_persistentPlayerId) && _blocksToChange != null)
         {
             for (int i = 0; i < _blocksToChange.Count; i++)
             {
                 BlockChangeInfo _newBlockInfo = _blocksToChange[i];                 //new block info
                 BlockValue      _blockValue   = _world.GetBlock(_newBlockInfo.pos); //old block value
                 if (_newBlockInfo != null && _newBlockInfo.bChangeBlockValue)       //new block value
                 {
                     if (_blockValue.type == BlockValue.Air.type)                    //old block was air
                     {
                         if (_newBlockInfo.blockValue.Block is BlockSleepingBag)     //placed a sleeping bag
                         {
                             PersistentOperations.BedBug(_persistentPlayerId);
                         }
                         else if (_newBlockInfo.blockValue.Block is BlockLandClaim)//placed a land claim
                         {
                         }
                         if (BlockLogger.IsEnabled)//placed block
                         {
                             BlockLogger.Log(_persistentPlayerId, _newBlockInfo);
                         }
                         return(true);
                     }
                     if (Damage_Detector)
                     {
                         if (_newBlockInfo.blockValue.type == BlockValue.Air.type) //new block is air
                         {
                             if (_blockValue.type == BlockValue.Air.type)          //replaced block
                             {
                                 return(true);
                             }
                             if (_blockValue.Block is BlockLandClaim)            //removed claim
                             {
                                 if (!string.IsNullOrEmpty(_persistentPlayerId)) //id is valid
                                 {
                                     if (!PersistentOperations.ClaimedByAllyOrSelf(_persistentPlayerId, _newBlockInfo.pos))
                                     {
                                         int _total = _blockValue.Block.MaxDamage - _blockValue.damage;
                                         if (_blockValue.Block.MaxDamage - _blockValue.damage >= Block_Damage_Limit)
                                         {
                                             BlockPenalty(_total, _persistentPlayerId);
                                         }
                                     }
                                 }
                             }
                             if (!_blockValue.Block.CanPickup && !PersistentOperations.ClaimedByAllyOrSelf(_persistentPlayerId, _newBlockInfo.pos))//old block can not be picked up and unclaimed space
                             {
                                 int _total = _blockValue.Block.MaxDamage - _blockValue.damage;
                                 if (_total >= Block_Damage_Limit)
                                 {
                                     BlockPenalty(_total, _persistentPlayerId);
                                 }
                             }
                         }
                         else if (_blockValue.Block.blockID == _newBlockInfo.blockValue.Block.blockID) //block is the same
                         {
                             if (_newBlockInfo.bChangeDamage)                                          //block took damage
                             {
                                 int _total = _newBlockInfo.blockValue.damage - _blockValue.damage;
                                 if (_total >= Block_Damage_Limit)
                                 {
                                     BlockPenalty(_total, _persistentPlayerId);
                                 }
                             }
                             if (_blockValue.damage == _newBlockInfo.blockValue.damage || _newBlockInfo.blockValue.damage == 0)//block replaced
                             {
                                 return(true);
                             }
                         }
                         else if (_blockValue.Block.DowngradeBlock.Block.blockID == _newBlockInfo.blockValue.Block.blockID)//downgraded
                         {
                             if (_blockValue.damage == _newBlockInfo.blockValue.damage || _newBlockInfo.blockValue.damage == 0)
                             {
                                 return(true);
                             }
                             int _total = _blockValue.Block.MaxDamage - _blockValue.damage + _newBlockInfo.blockValue.damage;
                             if (_total >= Block_Damage_Limit)
                             {
                                 BlockPenalty(_total, _persistentPlayerId);
                             }
                         }
                     }
                 }
             }
         }
     }
     catch (Exception e)
     {
         Log.Out(string.Format("[SERVERTOOLS] Error in ProcessDamage.ProcessBlockDamage: {0}", e.Message));
     }
     return(true);
 }
コード例 #13
0
ファイル: Mods.cs プロジェクト: Tsaukpaetra/7dtd-ServerTools
 public static void Load()
 {
     PersistentOperations.SetInstallFolder();
     if (!DiscordBot.TokenLoaded)
     {
         DiscordBot.BuildToken();
     }
     if (!RunTimePatch.Applied)
     {
         RunTimePatch.PatchAll();
     }
     if (!Timers.IsRunning)
     {
         Timers.TimerStart();
     }
     if (!Triggers.IsRunning)
     {
         Triggers.Load();
     }
     if (Poll.IsEnabled && PersistentContainer.Instance.PollOpen)
     {
         Poll.CheckTime();
     }
     if (!ClanManager.IsEnabled)
     {
         ClanManager.Clans.Clear();
         ClanManager.ClanMember.Clear();
     }
     if (!InfoTicker.IsEnabled && InfoTicker.IsRunning)
     {
         InfoTicker.Unload();
     }
     if (InfoTicker.IsEnabled && !InfoTicker.IsRunning)
     {
         InfoTicker.Load();
     }
     if (Gimme.IsRunning && !Gimme.IsEnabled)
     {
         Gimme.Unload();
     }
     if (!Gimme.IsRunning && Gimme.IsEnabled)
     {
         Gimme.Load();
     }
     if (Badwords.IsRunning && !Badwords.IsEnabled)
     {
         Badwords.Unload();
     }
     if (!Badwords.IsRunning && Badwords.IsEnabled)
     {
         Badwords.Load();
     }
     if (!LoginNotice.IsRunning && LoginNotice.IsEnabled)
     {
         LoginNotice.Load();
     }
     if (LoginNotice.IsRunning && !LoginNotice.IsEnabled)
     {
         LoginNotice.Unload();
     }
     if (!Zones.IsRunning && Zones.IsEnabled)
     {
         Zones.Load();
     }
     if (Zones.IsRunning && !Zones.IsEnabled)
     {
         Zones.Unload();
     }
     if (!VoteReward.IsRunning && VoteReward.IsEnabled)
     {
         VoteReward.Load();
     }
     if (VoteReward.IsRunning && !VoteReward.IsEnabled)
     {
         VoteReward.Unload();
     }
     if (!Watchlist.IsRunning && Watchlist.IsEnabled)
     {
         Watchlist.Load();
     }
     if (Watchlist.IsRunning && !Watchlist.IsEnabled)
     {
         Watchlist.Unload();
     }
     if (!ReservedSlots.IsRunning && ReservedSlots.IsEnabled)
     {
         ReservedSlots.Load();
     }
     if (ReservedSlots.IsRunning && !ReservedSlots.IsEnabled)
     {
         ReservedSlots.Unload();
     }
     if (!StartingItems.IsRunning && StartingItems.IsEnabled)
     {
         StartingItems.Load();
     }
     if (StartingItems.IsRunning && !StartingItems.IsEnabled)
     {
         StartingItems.Unload();
     }
     if (!Travel.IsRunning && Travel.IsEnabled)
     {
         Travel.Load();
     }
     if (Travel.IsRunning && !Travel.IsEnabled)
     {
         Travel.Unload();
     }
     if (!Shop.IsRunning && Shop.IsEnabled)
     {
         Shop.Load();
     }
     if (Shop.IsRunning && !Shop.IsEnabled)
     {
         Shop.Unload();
     }
     if (!Motd.IsRunning && Motd.IsEnabled)
     {
         Motd.Load();
     }
     if (Motd.IsRunning && !Motd.IsEnabled)
     {
         Motd.Unload();
     }
     if (InvalidItems.IsRunning && !InvalidItems.IsEnabled)
     {
         InvalidItems.Unload();
     }
     if (!InvalidItems.IsRunning && InvalidItems.IsEnabled)
     {
         InvalidItems.Load();
     }
     if (HighPingKicker.IsRunning && !HighPingKicker.IsEnabled)
     {
         HighPingKicker.Unload();
     }
     if (!HighPingKicker.IsRunning && HighPingKicker.IsEnabled)
     {
         HighPingKicker.Load();
     }
     if (CredentialCheck.IsRunning && !CredentialCheck.IsEnabled)
     {
         CredentialCheck.Unload();
     }
     if (!CredentialCheck.IsRunning && CredentialCheck.IsEnabled)
     {
         CredentialCheck.Load();
     }
     if (CustomCommands.IsRunning && !CustomCommands.IsEnabled)
     {
         CustomCommands.Unload();
     }
     if (!CustomCommands.IsRunning && CustomCommands.IsEnabled)
     {
         CustomCommands.Load();
     }
     if (DupeLog.IsRunning && !DupeLog.IsEnabled)
     {
         DupeLog.Unload();
     }
     if (!DupeLog.IsRunning && DupeLog.IsEnabled)
     {
         DupeLog.Load();
     }
     if (ChatColorPrefix.IsRunning && !ChatColorPrefix.IsEnabled)
     {
         ChatColorPrefix.Unload();
     }
     if (!ChatColorPrefix.IsRunning && ChatColorPrefix.IsEnabled)
     {
         ChatColorPrefix.Load();
     }
     if (KillNotice.IsRunning && !KillNotice.IsEnabled)
     {
         KillNotice.Unload();
     }
     if (!KillNotice.IsRunning && KillNotice.IsEnabled)
     {
         KillNotice.Load();
     }
     if (Prayer.IsRunning && !Prayer.IsEnabled)
     {
         Prayer.Unload();
     }
     if (!Prayer.IsRunning && Prayer.IsEnabled)
     {
         Prayer.Load();
     }
     if (BloodmoonWarrior.IsRunning && !BloodmoonWarrior.IsEnabled)
     {
         BloodmoonWarrior.Unload();
     }
     else if (!BloodmoonWarrior.IsRunning && BloodmoonWarrior.IsEnabled)
     {
         BloodmoonWarrior.Load();
     }
     if (ProtectedSpaces.IsRunning && !ProtectedSpaces.IsEnabled)
     {
         ProtectedSpaces.Unload();
     }
     else if (!ProtectedSpaces.IsRunning && ProtectedSpaces.IsEnabled)
     {
         ProtectedSpaces.Load();
     }
     if (ClanManager.IsEnabled)
     {
         ClanManager.ClanList();
     }
     if (Auction.IsEnabled)
     {
         Auction.AuctionList();
     }
     if (Mute.IsEnabled)
     {
         Mute.ClientMuteList();
         Mute.MuteList();
     }
     if (Jail.IsEnabled)
     {
         Jail.JailList();
     }
     if (WebAPI.IsEnabled && !WebAPI.IsRunning)
     {
         WebAPI.Load();
     }
     else if (WebAPI.IsRunning && !WebAPI.IsEnabled)
     {
         WebAPI.Unload();
     }
 }
コード例 #14
0
 public static void Exec()
 {
     try
     {
         if (GameManager.Instance.World.Players.dict.Count > 0)
         {
             List <ClientInfo> _cInfoList = PersistentOperations.ClientList();
             if (_cInfoList != null && _cInfoList.Count > 0)
             {
                 for (int i = 0; i < _cInfoList.Count; i++)
                 {
                     ClientInfo _cInfo = _cInfoList[i];
                     if (_cInfo != null && _cInfo.playerId != null)
                     {
                         EntityPlayer _player = PersistentOperations.GetEntityPlayer(_cInfo.playerId);
                         if (_player != null)
                         {
                             if (SpectatorEnabled && GameManager.Instance.adminTools.GetUserPermissionLevel(_cInfo) > Spectator_Admin_Level)
                             {
                                 if (_player.IsSpectator)
                                 {
                                     string _file     = string.Format("DetectionLog_{0}.txt", DateTime.Today.ToString("M-d-yyyy"));
                                     string _filepath = string.Format("{0}/Logs/DetectionLogs/{1}", API.ConfigPath, _file);
                                     using (StreamWriter sw = new StreamWriter(_filepath, true))
                                     {
                                         sw.WriteLine(string.Format("Detected {0}, Steam Id {1}, using spectator mode @ {2} {3} {4}.", _cInfo.playerName, _cInfo.playerId, (int)_player.position.x, (int)_player.position.y, (int)_player.position.z));
                                         sw.WriteLine();
                                         sw.Flush();
                                         sw.Close();
                                     }
                                     Log.Warning("[SERVERTOOLS] Detected {0}, Steam Id {1}, using spectator mode @ {2} {3} {4}.", _cInfo.playerName, _cInfo.playerId, (int)_player.position.x, (int)_player.position.y, (int)_player.position.z);
                                     ChatHook.ChatMessage(null, "[FF0000]" + "Cheater! " + _cInfo.playerName + " detected using spectator mode!" + "[-]", -1, LoadConfig.Server_Response_Name, EChatType.Global, null);
                                     SdtdConsole.Instance.ExecuteSync(string.Format("ban add {0} 5 years \"Auto detection has banned you for spectator mode\"", _cInfo.playerId), null);
                                     string _message = "[FF0000]{PlayerName} has been banned for spectator mode.";
                                     _message = _message.Replace("{PlayerName}", _cInfo.playerName);
                                     ChatHook.ChatMessage(null, _message + "[-]", -1, LoadConfig.Server_Response_Name, EChatType.Global, null);
                                     continue;
                                 }
                             }
                             if (GodEnabled && GameManager.Instance.adminTools.GetUserPermissionLevel(_cInfo) > Godmode_Admin_Level)
                             {
                                 if (_player.Buffs.HasBuff("god"))
                                 {
                                     ChatHook.ChatMessage(null, "[FF0000]" + "Cheater! " + _cInfo.playerName + " detected using god mode!" + "[-]", -1, LoadConfig.Server_Response_Name, EChatType.Global, null);
                                     SdtdConsole.Instance.ExecuteSync(string.Format("ban add {0} 5 years \"Auto detection has banned you for god mode\"", _cInfo.playerId), null);
                                     string _file     = string.Format("DetectionLog_{0}.txt", DateTime.Today.ToString("M-d-yyyy"));
                                     string _filepath = string.Format("{0}/Logs/DetectionLogs/{1}", API.ConfigPath, _file);
                                     using (StreamWriter sw = new StreamWriter(_filepath, true))
                                     {
                                         sw.WriteLine(string.Format("Detected {0}, Steam Id {1}, using god mode @ {2} {3} {4}.", _cInfo.playerName, _cInfo.playerId, (int)_player.position.x, (int)_player.position.y, (int)_player.position.z));
                                         sw.WriteLine();
                                         sw.Flush();
                                         sw.Close();
                                     }
                                     Log.Warning("[SERVERTOOLS] Detected {0}, Steam Id {1}, using god mode @ {2} {3} {4}.", _cInfo.playerName, _cInfo.playerId, (int)_player.position.x, (int)_player.position.y, (int)_player.position.z);
                                     string _message = "[FF0000]{PlayerName} has been banned for god mode.";
                                     _message = _message.Replace("{PlayerName}", _cInfo.playerName);
                                     ChatHook.ChatMessage(null, _message + "[-]", -1, LoadConfig.Server_Response_Name, EChatType.Global, null);
                                     continue;
                                 }
                             }
                             if (FlyEnabled && GameManager.Instance.adminTools.GetUserPermissionLevel(_cInfo) > Flying_Admin_Level)
                             {
                                 if (_player.IsSpawned() && _player.IsAlive() && !_player.IsStuck && _player.AttachedToEntity == null)
                                 {
                                     if ((!_player.onGround && AirCheck(_player.position.x, _player.position.y, _player.position.z)) || GroundCheck(_player.position.x, _player.position.y, _player.position.z))
                                     {
                                         if (OldY.ContainsKey(_cInfo.entityId))
                                         {
                                             OldY.TryGetValue(_cInfo.entityId, out float lastY);
                                             OldY[_cInfo.entityId] = _player.position.y;
                                             if (lastY - _player.position.y >= 4)
                                             {
                                                 if (Flag.ContainsKey(_cInfo.entityId))
                                                 {
                                                     Flag.Remove(_cInfo.entityId);
                                                 }
                                                 continue;
                                             }
                                         }
                                         else
                                         {
                                             OldY.Add(_cInfo.entityId, _player.position.y);
                                         }
                                         if (Flag.TryGetValue(_cInfo.entityId, out int _flags))
                                         {
                                             if (_flags + 1 >= Flying_Flags)
                                             {
                                                 Flag.Remove(_cInfo.entityId);
                                                 string _file     = string.Format("DetectionLog_{0}.txt", DateTime.Today.ToString("M-d-yyyy"));
                                                 string _filepath = string.Format("{0}/Logs/DetectionLogs/{1}", API.ConfigPath, _file);
                                                 using (StreamWriter sw = new StreamWriter(_filepath, true))
                                                 {
                                                     sw.WriteLine(string.Format("Detected {0}, Steam Id {1}, flying @ {2} {3} {4}.", _cInfo.playerName, _cInfo.playerId, (int)_player.position.x, (int)_player.position.y, (int)_player.position.z));
                                                     sw.WriteLine();
                                                     sw.Flush();
                                                     sw.Close();
                                                 }
                                                 ChatHook.ChatMessage(null, "[FF0000]" + "Cheater! Player " + _cInfo.playerName + " detected flying!" + "[-]", -1, LoadConfig.Server_Response_Name, EChatType.Global, null);
                                                 Log.Warning("[SERVERTOOLS] Detected {0}, Steam Id {1}, flying @ {2} {3} {4}. Steam Id has been banned", _cInfo.playerName, _cInfo.playerId, (int)_player.position.x, (int)_player.position.y, (int)_player.position.z);
                                                 SdtdConsole.Instance.ExecuteSync(string.Format("ban add {0} 5 years \"Auto detection has banned you for flying\"", _cInfo.playerId), null);
                                                 string _message = "[FF0000]{PlayerName} has been banned for flying.";
                                                 _message = _message.Replace("{PlayerName}", _cInfo.playerName);
                                                 ChatHook.ChatMessage(null, LoadConfig.Chat_Response_Color + _message + "[-]", -1, LoadConfig.Server_Response_Name, EChatType.Global, null);
                                                 continue;
                                             }
                                             else
                                             {
                                                 Flag[_cInfo.entityId] = _flags + 1;
                                             }
                                         }
                                         else
                                         {
                                             Flag.Add(_cInfo.entityId, 1);
                                         }
                                     }
                                     else if (Flag.ContainsKey(_cInfo.entityId))
                                     {
                                         Flag.Remove(_cInfo.entityId);
                                     }
                                 }
                                 else
                                 {
                                     if (OldY.ContainsKey(_cInfo.entityId))
                                     {
                                         OldY.Remove(_cInfo.entityId);
                                     }
                                     if (Flag.ContainsKey(_cInfo.entityId))
                                     {
                                         Flag.Remove(_cInfo.entityId);
                                     }
                                 }
                             }
                         }
                     }
                 }
             }
         }
     }
     catch (Exception e)
     {
         Log.Out(string.Format("[SERVERTOOLS] Error in PlayerChecks.Exec: {0}", e.Message));
     }
 }
コード例 #15
0
 public static void Exec()
 {
     try
     {
         if ((int)GameManager.Instance.fps.Counter > 4)
         {
             List <ClientInfo> _cInfoList = PersistentOperations.ClientList();
             if (_cInfoList != null)
             {
                 for (int i = 0; i < _cInfoList.Count; i++)
                 {
                     ClientInfo _cInfo = _cInfoList[i];
                     if (_cInfo != null && !string.IsNullOrEmpty(_cInfo.playerId) && _cInfo.entityId > 0)
                     {
                         AdminToolsClientInfo Admin = GameManager.Instance.adminTools.GetAdminToolsClientInfo(_cInfo.playerId);
                         if (Admin.PermissionLevel > Admin_Level)
                         {
                             EntityAlive _player = GameManager.Instance.World.Players.dict[_cInfo.entityId];
                             if (_player != null && _player.IsSpawned() && _player.IsAlive() && !_player.IsStuck && _player.AttachedToEntity == null)
                             {
                                 float _x = _player.position.x;
                                 float _y = _player.position.y;
                                 float _z = _player.position.z;
                                 if (_player.AttachedToEntity == null && (AirCheck(_x, _y, _z) || GroundCheck(_x, _y, _z)))
                                 {
                                     if (OldY.ContainsKey(_cInfo.entityId))
                                     {
                                         float lastY;
                                         OldY.TryGetValue(_cInfo.entityId, out lastY);
                                         OldY[_cInfo.entityId] = _y;
                                         if (lastY - _y >= 4)
                                         {
                                             if (Flag.ContainsKey(_cInfo.entityId))
                                             {
                                                 Flag.Remove(_cInfo.entityId);
                                             }
                                             continue;
                                         }
                                     }
                                     else
                                     {
                                         OldY.Add(_cInfo.entityId, _y);
                                     }
                                     int _flags;
                                     if (Flag.TryGetValue(_cInfo.entityId, out _flags))
                                     {
                                         if (_flags + 1 >= Flags)
                                         {
                                             Flag.Remove(_cInfo.entityId);
                                             ChatHook.ChatMessage(null, "[FF0000]" + "Cheater! Player " + _cInfo.playerName + " detected flying!" + "[-]", -1, LoadConfig.Server_Response_Name, EChatType.Global, null);
                                             Log.Warning("[SERVERTOOLS] Detected {0}, Steam Id {1}, flying @ {2} {3} {4}.", _cInfo.playerName, _cInfo.playerId, _x, _y, _z);
                                             string _file     = string.Format("DetectionLog_{0}.txt", DateTime.Today.ToString("M-d-yyyy"));
                                             string _filepath = string.Format("{0}/Logs/DetectionLogs/{1}", API.ConfigPath, _file);
                                             using (StreamWriter sw = new StreamWriter(_filepath, true))
                                             {
                                                 sw.WriteLine(string.Format("Detected {0}, Steam Id {1}, flying @ {2} {3} {4}.", _cInfo.playerName, _cInfo.playerId, _x, _y, _z));
                                                 sw.WriteLine();
                                                 sw.Flush();
                                                 sw.Close();
                                             }
                                             Penalty(_cInfo);
                                             continue;
                                         }
                                         else
                                         {
                                             Flag[_cInfo.entityId] = _flags + 1;
                                         }
                                     }
                                     else
                                     {
                                         Flag.Add(_cInfo.entityId, 1);
                                     }
                                 }
                                 else if (Flag.ContainsKey(_cInfo.entityId))
                                 {
                                     Flag.Remove(_cInfo.entityId);
                                 }
                             }
                             else
                             {
                                 if (OldY.ContainsKey(_cInfo.entityId))
                                 {
                                     OldY.Remove(_cInfo.entityId);
                                 }
                                 if (Flag.ContainsKey(_cInfo.entityId))
                                 {
                                     Flag.Remove(_cInfo.entityId);
                                 }
                             }
                         }
                     }
                 }
             }
         }
     }
     catch (Exception e)
     {
         Log.Out(string.Format("[SERVERTOOLS] Error in Flying.Exec: {0}.", e.Message));
     }
 }
コード例 #16
0
 public static void PlayerStat()
 {
     if (ConnectionManager.Instance.ClientCount() > 0)
     {
         List <ClientInfo> ClientInfoList = PersistentOperations.ClientList();
         for (int i = 0; i < ClientInfoList.Count; i++)
         {
             ClientInfo _cInfo = ClientInfoList[i];
             GameManager.Instance.adminTools.IsAdmin(_cInfo.playerId);
             AdminToolsClientInfo Admin = GameManager.Instance.adminTools.GetAdminToolsClientInfo(_cInfo.playerId);
             if (Admin.PermissionLevel > Admin_Level)
             {
                 EntityPlayer _player = GameManager.Instance.World.Players.dict[_cInfo.entityId];
                 if (_player.IsSpawned())
                 {
                     var p_speedForward = _player.speedForward;
                     var p_Health       = _player.Stats.Health.Value;
                     var p_Stamina      = _player.Stats.Stamina.Value;
                     var p_jumpStrength = _player.jumpStrength;
                     var p_height       = _player.height;
                     if (p_Health > 250)
                     {
                         using (StreamWriter sw = new StreamWriter(_filepath, true))
                         {
                             sw.WriteLine(string.Format("{0} {1} steamId {2} was detected with an illegal health value: {3}", DateTime.Now, _cInfo.playerName, _cInfo.playerId, p_Health));
                             sw.WriteLine();
                             sw.Flush();
                             sw.Close();
                         }
                         Log.Warning("Detected player {0} steamId {1} with health @ {2}. 250 is maximum", _cInfo.playerName, _cInfo.playerId, p_Health);
                         if (Kick_Enabled)
                         {
                             ChatHook.ChatMessage(_cInfo, "[FF0000]" + _cInfo.playerName + " was detected and kicked for illegal player stat health" + "[-]", _cInfo.entityId, LoadConfig.Server_Response_Name, EChatType.Global, null);
                             SdtdConsole.Instance.ExecuteSync(string.Format("kick {0} \"Auto detection has kicked you for illegal player stat health\"", _cInfo.playerId), (ClientInfo)null);
                         }
                         if (Ban_Enabled)
                         {
                             ChatHook.ChatMessage(_cInfo, "[FF0000]" + _cInfo.playerName + " was detected and banned for illegal player stat health" + "[-]", _cInfo.entityId, LoadConfig.Server_Response_Name, EChatType.Global, null);
                             SdtdConsole.Instance.ExecuteSync(string.Format("ban add {0} 5 years \"Auto detection has banned you for illegal player stat health\"", _cInfo.playerId), (ClientInfo)null);
                         }
                     }
                     if (p_Stamina > 250)
                     {
                         using (StreamWriter sw = new StreamWriter(_filepath, true))
                         {
                             sw.WriteLine(string.Format("{0} {1} steamId {2} was detected with an illegal stamina value: {3}", DateTime.Now, _cInfo.playerName, _cInfo.playerId, p_Stamina));
                             sw.WriteLine();
                             sw.Flush();
                             sw.Close();
                         }
                         Log.Warning("Detected player {0} steamId {1} with stamina @ {2}. 250 is maximum", _cInfo.playerName, _cInfo.playerId, p_Stamina);
                         if (Kick_Enabled)
                         {
                             ChatHook.ChatMessage(_cInfo, "[FF0000]" + _cInfo.playerName + " was detected and kicked for illegal player stat stamina" + "[-]", _cInfo.entityId, LoadConfig.Server_Response_Name, EChatType.Global, null);
                             SdtdConsole.Instance.ExecuteSync(string.Format("kick {0} \"Auto detection has kicked you for illegal player stat stamina\"", _cInfo.playerId), (ClientInfo)null);
                         }
                         if (Ban_Enabled)
                         {
                             ChatHook.ChatMessage(_cInfo, "[FF0000]" + _cInfo.playerName + " was detected and banned for illegal player stat stamina" + "[-]", _cInfo.entityId, LoadConfig.Server_Response_Name, EChatType.Global, null);
                             SdtdConsole.Instance.ExecuteSync(string.Format("ban add {0} 5 years \"Auto detection has banned you for illegal player stat stamina\"", _cInfo.playerId), (ClientInfo)null);
                         }
                     }
                     if (p_jumpStrength >= 1.5)
                     {
                         using (StreamWriter sw = new StreamWriter(_filepath, true))
                         {
                             sw.WriteLine(string.Format("{0} {1} steamId {2} was detected with an illegal jump strength value: {3}", DateTime.Now, _cInfo.playerName, _cInfo.playerId, p_jumpStrength));
                             sw.WriteLine();
                             sw.Flush();
                             sw.Close();
                         }
                         Log.Warning("Detected player {0} steamId {1} at jump strength {2}. 1.1 is default", _cInfo.playerName, _cInfo.playerId, p_jumpStrength);
                         if (Kick_Enabled)
                         {
                             ChatHook.ChatMessage(_cInfo, "[FF0000]" + _cInfo.playerName + " was detected and kicked for illegal player jump ability" + "[-]", _cInfo.entityId, LoadConfig.Server_Response_Name, EChatType.Global, null);
                             SdtdConsole.Instance.ExecuteSync(string.Format("kick {0} \"Auto detection has kicked you for illegal player stat jump\"", _cInfo.playerId), (ClientInfo)null);
                         }
                         if (Ban_Enabled)
                         {
                             ChatHook.ChatMessage(_cInfo, "[FF0000]" + _cInfo.playerName + " was detected and banned for illegal player jump ability" + "[-]", _cInfo.entityId, LoadConfig.Server_Response_Name, EChatType.Global, null);
                             SdtdConsole.Instance.ExecuteSync(string.Format("ban add {0} 5 years \"Auto detection has banned you for illegal player stat jump\"", _cInfo.playerId), (ClientInfo)null);
                         }
                     }
                     if (p_height > 1.8 || p_height < 1.7)
                     {
                         using (StreamWriter sw = new StreamWriter(_filepath, true))
                         {
                             sw.WriteLine(string.Format("{0} {1} steamId {2} was detected with an illegal player height value: {3}", DateTime.Now, _cInfo.playerName, _cInfo.playerId, p_height));
                             sw.WriteLine();
                             sw.Flush();
                             sw.Close();
                         }
                         Log.Warning("Detected player {0} steamId {1} with player height @ {2}", _cInfo.playerName, _cInfo.playerId, p_height);
                         if (Kick_Enabled)
                         {
                             ChatHook.ChatMessage(_cInfo, "[FF0000]" + _cInfo.playerName + " was detected and kicked for illegal player height" + "[-]", _cInfo.entityId, LoadConfig.Server_Response_Name, EChatType.Global, null);
                             SdtdConsole.Instance.ExecuteSync(string.Format("kick {0} \"Auto detection has kicked you for illegal player stat height\"", _cInfo.playerId), (ClientInfo)null);
                         }
                         if (Ban_Enabled)
                         {
                             ChatHook.ChatMessage(_cInfo, "[FF0000]" + _cInfo.playerName + " was detected and banned for illegal player height" + "[-]", _cInfo.entityId, LoadConfig.Server_Response_Name, EChatType.Global, null);
                             SdtdConsole.Instance.ExecuteSync(string.Format("ban add {0} 5 years \"Auto detection has banned you for illegal player stat height\"", _cInfo.playerId), (ClientInfo)null);
                         }
                     }
                     if (p_speedForward > Max_Speed)
                     {
                         using (StreamWriter sw = new StreamWriter(_filepath, true))
                         {
                             sw.WriteLine(string.Format("{0} {1} steamId {2} was detected with an illegal run speed value: {3}", DateTime.Now, _cInfo.playerName, _cInfo.playerId, p_speedForward));
                             sw.WriteLine();
                             sw.Flush();
                             sw.Close();
                         }
                         Log.Warning("Detected player {0} steamId {1} speed hacking", _cInfo.playerName, _cInfo.playerId);
                         if (Kick_Enabled)
                         {
                             ChatHook.ChatMessage(_cInfo, "[FF0000]" + _cInfo.playerName + " was detected and kicked for illegal player speed" + "[-]", _cInfo.entityId, LoadConfig.Server_Response_Name, EChatType.Global, null);
                             SdtdConsole.Instance.ExecuteSync(string.Format("kick {0} \"Auto detection has kicked you for illegal player stat speed\"", _cInfo.playerId), (ClientInfo)null);
                         }
                         if (Ban_Enabled)
                         {
                             ChatHook.ChatMessage(_cInfo, "[FF0000]" + _cInfo.playerName + " was detected and banned for illegal player speed" + "[-]", _cInfo.entityId, LoadConfig.Server_Response_Name, EChatType.Global, null);
                             SdtdConsole.Instance.ExecuteSync(string.Format("ban add {0} 5 years \"Auto detection has banned you for illegal player stat speed\"", _cInfo.playerId), (ClientInfo)null);
                         }
                     }
                 }
             }
         }
     }
 }
コード例 #17
0
 public static bool ProcessBlockChange(GameManager __instance, string _persistentPlayerId, List <BlockChangeInfo> _blocksToChange)
 {
     try
     {
         World _world = __instance.World;
         if (__instance != null && _blocksToChange != null && !string.IsNullOrEmpty(_persistentPlayerId) && _blocksToChange != null)
         {
             for (int i = 0; i < _blocksToChange.Count; i++)
             {
                 BlockChangeInfo _newBlockInfo  = _blocksToChange[i];                 //new block info
                 BlockValue      _oldBlockValue = _world.GetBlock(_newBlockInfo.pos); //old block value
                 Block           _oldBlock      = _oldBlockValue.Block;
                 if (_newBlockInfo != null && _newBlockInfo.bChangeBlockValue)        //new block value
                 {
                     Block _newBlock = _newBlockInfo.blockValue.Block;
                     if (_oldBlockValue.type == BlockValue.Air.type) //old block was air
                     {
                         if (_newBlock is BlockSleepingBag)          //placed a sleeping bag
                         {
                             if (POIProtection.IsEnabled && POIProtection.Bed && _world.IsPositionWithinPOI(_newBlockInfo.pos.ToVector3(), 5))
                             {
                                 ClientInfo _cInfo = PersistentOperations.GetClientInfoFromSteamId(_persistentPlayerId);
                                 if (_cInfo != null)
                                 {
                                     GameManager.Instance.World.SetBlockRPC(_newBlockInfo.pos, BlockValue.Air);
                                     PersistentOperations.ReturnBlock(_cInfo, _newBlock.GetBlockName(), 1);
                                     Phrases.Dict.TryGetValue(1031, out string _phrase1031);
                                     ChatHook.ChatMessage(_cInfo, Config.Chat_Response_Color + _phrase1031 + "[-]", -1, Config.Server_Response_Name, EChatType.Whisper, null);
                                     return(false);
                                 }
                             }
                         }
                         else if (_newBlock is BlockLandClaim)//placed a land claim
                         {
                             if (POIProtection.IsEnabled && POIProtection.Claim && _world.IsPositionWithinPOI(_newBlockInfo.pos.ToVector3(), 5))
                             {
                                 ClientInfo _cInfo = PersistentOperations.GetClientInfoFromSteamId(_persistentPlayerId);
                                 if (_cInfo != null)
                                 {
                                     GameManager.Instance.World.SetBlockRPC(_newBlockInfo.pos, BlockValue.Air);
                                     PersistentOperations.ReturnBlock(_cInfo, _newBlock.GetBlockName(), 1);
                                     Phrases.Dict.TryGetValue(1032, out string _phrase1032);
                                     ChatHook.ChatMessage(_cInfo, Config.Chat_Response_Color + _phrase1032 + "[-]", -1, Config.Server_Response_Name, EChatType.Whisper, null);
                                     return(false);
                                 }
                             }
                         }
                         else if (_newBlock is BlockPowered)//placed a electric block
                         {
                             Log.Out(string.Format("[SERVERTOOLS] New block is a powered block named {0}", _newBlock.GetBlockName()));
                         }
                         if (BlockLogger.IsEnabled)//placed block
                         {
                             BlockLogger.Log(_persistentPlayerId, _newBlockInfo);
                         }
                         return(true);
                     }
                     if (Damage_Detector)
                     {
                         if (_newBlockInfo.blockValue.type == BlockValue.Air.type) //new block is air
                         {
                             if (_oldBlockValue.type == BlockValue.Air.type)       //replaced block
                             {
                                 return(true);
                             }
                             if (_oldBlockValue.Block is BlockLandClaim)         //removed claim
                             {
                                 if (!string.IsNullOrEmpty(_persistentPlayerId)) //id is valid
                                 {
                                     if (!PersistentOperations.ClaimedByAllyOrSelf(_persistentPlayerId, _newBlockInfo.pos))
                                     {
                                         int _total = _oldBlock.MaxDamage - _oldBlockValue.damage;
                                         if (_oldBlock.MaxDamage - _oldBlockValue.damage >= Block_Damage_Limit)
                                         {
                                             ClientInfo _cInfo = PersistentOperations.GetClientInfoFromSteamId(_persistentPlayerId);
                                             if (_cInfo != null)
                                             {
                                                 if (GameManager.Instance.adminTools.GetUserPermissionLevel(_cInfo.playerId) > Admin_Level)
                                                 {
                                                     BlockPenalty(_total, _persistentPlayerId);
                                                     return(false);
                                                 }
                                             }
                                         }
                                     }
                                 }
                             }
                             if (!_oldBlock.CanPickup && !PersistentOperations.ClaimedByAllyOrSelf(_persistentPlayerId, _newBlockInfo.pos))//old block can not be picked up and unclaimed space
                             {
                                 int _total = _oldBlock.MaxDamage - _oldBlockValue.damage;
                                 if (_total >= Block_Damage_Limit)
                                 {
                                     ClientInfo _cInfo = PersistentOperations.GetClientInfoFromSteamId(_persistentPlayerId);
                                     if (_cInfo != null)
                                     {
                                         if (GameManager.Instance.adminTools.GetUserPermissionLevel(_cInfo.playerId) > Admin_Level)
                                         {
                                             BlockPenalty(_total, _persistentPlayerId);
                                             return(false);
                                         }
                                     }
                                 }
                             }
                         }
                         else if (_oldBlock.blockID == _newBlock.blockID) //block is the same
                         {
                             if (_newBlockInfo.bChangeDamage)             //block took damage
                             {
                                 int _total = _newBlockInfo.blockValue.damage - _oldBlockValue.damage;
                                 if (_total >= Block_Damage_Limit)
                                 {
                                     ClientInfo _cInfo = PersistentOperations.GetClientInfoFromSteamId(_persistentPlayerId);
                                     if (_cInfo != null)
                                     {
                                         if (GameManager.Instance.adminTools.GetUserPermissionLevel(_cInfo.playerId) > Admin_Level)
                                         {
                                             BlockPenalty(_total, _persistentPlayerId);
                                             return(false);
                                         }
                                     }
                                 }
                             }
                             if (_oldBlockValue.damage == _newBlockInfo.blockValue.damage || _newBlockInfo.blockValue.damage == 0)//block replaced
                             {
                                 return(true);
                             }
                         }
                         else if (_oldBlock.DowngradeBlock.Block.blockID == _newBlock.blockID)//downgraded
                         {
                             if (_oldBlockValue.damage == _newBlockInfo.blockValue.damage || _newBlockInfo.blockValue.damage == 0)
                             {
                                 return(true);
                             }
                             int _total = _oldBlock.MaxDamage - _oldBlockValue.damage + _newBlockInfo.blockValue.damage;
                             if (_total >= Block_Damage_Limit)
                             {
                                 ClientInfo _cInfo = PersistentOperations.GetClientInfoFromSteamId(_persistentPlayerId);
                                 if (_cInfo != null)
                                 {
                                     if (GameManager.Instance.adminTools.GetUserPermissionLevel(_cInfo.playerId) > Admin_Level)
                                     {
                                         BlockPenalty(_total, _persistentPlayerId);
                                         return(false);
                                     }
                                 }
                             }
                         }
                     }
                 }
             }
         }
     }
     catch (Exception e)
     {
         Log.Out(string.Format("[SERVERTOOLS] Error in ProcessDamage.ProcessBlockDamage: {0}", e.Message));
     }
     return(true);
 }
コード例 #18
0
 public static void Exec()
 {
     try
     {
         if (GameManager.Instance.World.Players.dict.Count > 0)
         {
             List <ClientInfo> _cInfoList = PersistentOperations.ClientList();
             if (_cInfoList != null && _cInfoList.Count > 0)
             {
                 for (int i = 0; i < _cInfoList.Count; i++)
                 {
                     ClientInfo _cInfo = _cInfoList[i];
                     if (_cInfo != null && _cInfo.playerId != null)
                     {
                         EntityPlayer _player = PersistentOperations.GetEntityPlayer(_cInfo.playerId);
                         if (_player != null)
                         {
                             int _userPermissionLevel = GameManager.Instance.adminTools.GetUserPermissionLevel(_cInfo);
                             if (SpectatorEnabled && _userPermissionLevel > Spectator_Admin_Level)
                             {
                                 if (_player.IsSpectator)
                                 {
                                     Phrases.Dict.TryGetValue(962, out string _phrase962);
                                     SdtdConsole.Instance.ExecuteSync(string.Format("ban add {0} 5 years \"{1}\"", _cInfo.playerId, _phrase962), null);
                                     string _file     = string.Format("DetectionLog_{0}.txt", DateTime.Today.ToString("M-d-yyyy"));
                                     string _filepath = string.Format("{0}/Logs/DetectionLogs/{1}", API.ConfigPath, _file);
                                     using (StreamWriter sw = new StreamWriter(_filepath, true))
                                     {
                                         sw.WriteLine(string.Format("Detected \"{0}\", Steam id {1}, using spectator mode @ {2} {3} {4}.", _cInfo.playerName, _cInfo.playerId, (int)_player.position.x, (int)_player.position.y, (int)_player.position.z));
                                         sw.WriteLine();
                                         sw.Flush();
                                         sw.Close();
                                     }
                                     Log.Warning("[SERVERTOOLS] Detected {0}, Steam Id {1}, using spectator mode @ {2} {3} {4}.", _cInfo.playerName, _cInfo.playerId, (int)_player.position.x, (int)_player.position.y, (int)_player.position.z);
                                     Phrases.Dict.TryGetValue(961, out string _phrase961);
                                     _phrase961 = _phrase961.Replace("{PlayerName}", _cInfo.playerName);
                                     ChatHook.ChatMessage(null, Config.Chat_Response_Color + _phrase961 + "[-]", -1, Config.Server_Response_Name, EChatType.Global, null);
                                     continue;
                                 }
                             }
                             if (GodEnabled && _userPermissionLevel > Godmode_Admin_Level)
                             {
                                 if (_player.Buffs.HasBuff("god"))
                                 {
                                     Phrases.Dict.TryGetValue(972, out string _phrase972);
                                     SdtdConsole.Instance.ExecuteSync(string.Format("ban add {0} 5 years \"{1}\"", _cInfo.playerId, _phrase972), null);
                                     string _file     = string.Format("DetectionLog_{0}.txt", DateTime.Today.ToString("M-d-yyyy"));
                                     string _filepath = string.Format("{0}/Logs/DetectionLogs/{1}", API.ConfigPath, _file);
                                     using (StreamWriter sw = new StreamWriter(_filepath, true))
                                     {
                                         sw.WriteLine(string.Format("Detected {0}, Steam Id {1}, using godmode @ {2} {3} {4}.", _cInfo.playerName, _cInfo.playerId, (int)_player.position.x, (int)_player.position.y, (int)_player.position.z));
                                         sw.WriteLine();
                                         sw.Flush();
                                         sw.Close();
                                     }
                                     Log.Warning("[SERVERTOOLS] Detected \"{0}\", Steam id {1}, using godmode @ {2} {3} {4}.", _cInfo.playerName, _cInfo.playerId, (int)_player.position.x, (int)_player.position.y, (int)_player.position.z);
                                     Phrases.Dict.TryGetValue(971, out string _phrase971);
                                     _phrase971 = _phrase971.Replace("{PlayerName}", _cInfo.playerName);
                                     ChatHook.ChatMessage(null, Config.Chat_Response_Color + _phrase971 + "[-]", -1, Config.Server_Response_Name, EChatType.Global, null);
                                     continue;
                                 }
                             }
                             if (FlyEnabled && _userPermissionLevel > Flying_Admin_Level)
                             {
                                 if (!Teleportation.Teleporting.Contains(_cInfo.entityId) && _player.IsSpawned() && _player.IsAlive() && !_player.IsStuck && !_player.isSwimming && _player.AttachedToEntity == null)
                                 {
                                     if (OldY.ContainsKey(_cInfo.entityId))
                                     {
                                         OldY.TryGetValue(_cInfo.entityId, out float lastY);
                                         OldY[_cInfo.entityId] = _player.position.y;
                                         if (lastY - _player.position.y >= 4)
                                         {
                                             if (Flag.ContainsKey(_cInfo.entityId))
                                             {
                                                 Flag.Remove(_cInfo.entityId);
                                             }
                                             continue;
                                         }
                                     }
                                     else
                                     {
                                         OldY.Add(_cInfo.entityId, _player.position.y);
                                     }
                                     if (AirCheck(_player.position.x, _player.position.y, _player.position.z) || GroundCheck(_player.position.x, _player.position.y, _player.position.z))
                                     {
                                         EntityPlayer _nearbyPlayer = GameManager.Instance.World.GetClosestPlayer(_player, 1f, false);
                                         if (_nearbyPlayer != null)
                                         {
                                             continue;
                                         }
                                         if (Flag.ContainsKey(_cInfo.entityId))
                                         {
                                             Flag.TryGetValue(_cInfo.entityId, out int _flags);
                                             _flags++;
                                             if (_flags >= Flying_Flags)
                                             {
                                                 Flag.Remove(_cInfo.entityId);
                                                 Phrases.Dict.TryGetValue(982, out string _phrase982);
                                                 SdtdConsole.Instance.ExecuteSync(string.Format("ban add {0} 5 years \"{1}\"", _cInfo.playerId, _phrase982), null);
                                                 string _file     = string.Format("DetectionLog_{0}.txt", DateTime.Today.ToString("M-d-yyyy"));
                                                 string _filepath = string.Format("{0}/Logs/DetectionLogs/{1}", API.ConfigPath, _file);
                                                 using (StreamWriter sw = new StreamWriter(_filepath, true))
                                                 {
                                                     sw.WriteLine(string.Format("Detected {0}, Steam Id {1}, flying @ {2} {3} {4}.", _cInfo.playerName, _cInfo.playerId, (int)_player.position.x, (int)_player.position.y, (int)_player.position.z));
                                                     sw.WriteLine();
                                                     sw.Flush();
                                                     sw.Close();
                                                 }
                                                 Log.Warning("[SERVERTOOLS] Detected {0}, Steam Id {1}, flying @ {2} {3} {4}. Steam Id has been banned", _cInfo.playerName, _cInfo.playerId, (int)_player.position.x, (int)_player.position.y, (int)_player.position.z);
                                                 Phrases.Dict.TryGetValue(981, out string _phrase981);
                                                 _phrase981 = _phrase981.Replace("{PlayerName}", _cInfo.playerName);
                                                 ChatHook.ChatMessage(null, Config.Chat_Response_Color + _phrase981 + "[-]", -1, Config.Server_Response_Name, EChatType.Global, null);
                                                 continue;
                                             }
                                             else
                                             {
                                                 Flag[_cInfo.entityId] = _flags;
                                             }
                                         }
                                         else
                                         {
                                             Flag.Add(_cInfo.entityId, 1);
                                         }
                                     }
                                     else if (Flag.ContainsKey(_cInfo.entityId))
                                     {
                                         Flag.Remove(_cInfo.entityId);
                                     }
                                 }
                                 else
                                 {
                                     if (OldY.ContainsKey(_cInfo.entityId))
                                     {
                                         OldY.Remove(_cInfo.entityId);
                                     }
                                     if (Flag.ContainsKey(_cInfo.entityId))
                                     {
                                         Flag.Remove(_cInfo.entityId);
                                     }
                                 }
                             }
                         }
                     }
                 }
             }
         }
     }
     catch (Exception e)
     {
         Log.Out(string.Format("[SERVERTOOLS] Error in PlayerChecks.Exec: {0}", e.Message));
     }
 }
コード例 #19
0
 public static void Exec()
 {
     try
     {
         if (GameManager.Instance.World.Players.dict.Count > 0)
         {
             List <ClientInfo> ClientInfoList = PersistentOperations.ClientList();
             if (ClientInfoList != null && ClientInfoList.Count > 0)
             {
                 for (int i = 0; i < ClientInfoList.Count; i++)
                 {
                     ClientInfo _cInfo = ClientInfoList[i];
                     if (_cInfo != null && _cInfo.playerId != null)
                     {
                         if (GameManager.Instance.adminTools.GetUserPermissionLevel(_cInfo) > Admin_Level)
                         {
                             if (GameManager.Instance.World.Players.dict.ContainsKey(_cInfo.entityId))
                             {
                                 EntityPlayer _player = GameManager.Instance.World.Players.dict[_cInfo.entityId];
                                 if (_player != null && _player.IsSpawned())
                                 {
                                     var p_speedForward = _player.speedForward;
                                     var p_Health       = _player.Stats.Health.Value;
                                     var p_Stamina      = _player.Stats.Stamina.Value;
                                     var p_jumpStrength = _player.jumpStrength;
                                     var p_height       = _player.height;
                                     if (p_Health > 250)
                                     {
                                         using (StreamWriter sw = new StreamWriter(_filepath, true))
                                         {
                                             sw.WriteLine(string.Format("{0} \"{1}\" Steam id {2} was detected with an illegal health value: {3}", DateTime.Now, _cInfo.playerName, _cInfo.playerId, p_Health));
                                             sw.WriteLine();
                                             sw.Flush();
                                             sw.Close();
                                         }
                                         Log.Warning("Detected player \"{0}\" Steam id {1} with health @ {2}. 250 is maximum", _cInfo.playerName, _cInfo.playerId, p_Health);
                                         if (Kick_Enabled)
                                         {
                                             Phrases.Dict.TryGetValue(991, out string _phrase991);
                                             SdtdConsole.Instance.ExecuteSync(string.Format("kick {0} \"{1}\"", _cInfo.playerId, _phrase991), null);
                                             Phrases.Dict.TryGetValue(992, out string _phrase992);
                                             _phrase992 = _phrase992.Replace("{PlayerName}", _cInfo.playerName);
                                             ChatHook.ChatMessage(null, Config.Chat_Response_Color + _phrase992 + "[-]", -1, Config.Server_Response_Name, EChatType.Global, null);
                                         }
                                         if (Ban_Enabled)
                                         {
                                             Phrases.Dict.TryGetValue(993, out string _phrase993);
                                             SdtdConsole.Instance.ExecuteSync(string.Format("ban add {0} 5 years \"{1}\"", _cInfo.playerId, _phrase993), null);
                                             Phrases.Dict.TryGetValue(994, out string _phrase994);
                                             _phrase994 = _phrase994.Replace("{PlayerName}", _cInfo.playerName);
                                             ChatHook.ChatMessage(null, Config.Chat_Response_Color + _phrase994 + "[-]", -1, Config.Server_Response_Name, EChatType.Global, null);
                                         }
                                     }
                                     if (p_Stamina > 250)
                                     {
                                         using (StreamWriter sw = new StreamWriter(_filepath, true))
                                         {
                                             sw.WriteLine(string.Format("{0} \"{1}\" Steam id {2} was detected with an illegal stamina value: {3}", DateTime.Now, _cInfo.playerName, _cInfo.playerId, p_Stamina));
                                             sw.WriteLine();
                                             sw.Flush();
                                             sw.Close();
                                         }
                                         Log.Warning("Detected player \"{0}\" Steam id {1} with stamina @ {2}. 250 is maximum", _cInfo.playerName, _cInfo.playerId, p_Stamina);
                                         if (Kick_Enabled)
                                         {
                                             Phrases.Dict.TryGetValue(995, out string _phrase995);
                                             SdtdConsole.Instance.ExecuteSync(string.Format("kick {0} \"{1}\"", _cInfo.playerId, _phrase995), null);
                                             Phrases.Dict.TryGetValue(996, out string _phrase996);
                                             _phrase996 = _phrase996.Replace("{PlayerName}", _cInfo.playerName);
                                             ChatHook.ChatMessage(null, Config.Chat_Response_Color + _phrase996 + "[-]", -1, Config.Server_Response_Name, EChatType.Global, null);
                                         }
                                         if (Ban_Enabled)
                                         {
                                             Phrases.Dict.TryGetValue(997, out string _phrase997);
                                             SdtdConsole.Instance.ExecuteSync(string.Format("ban {0} \"{1}\"", _cInfo.playerId, _phrase997), null);
                                             Phrases.Dict.TryGetValue(998, out string _phrase998);
                                             _phrase998 = _phrase998.Replace("{PlayerName}", _cInfo.playerName);
                                             ChatHook.ChatMessage(null, Config.Chat_Response_Color + _phrase998 + "[-]", -1, Config.Server_Response_Name, EChatType.Global, null);
                                         }
                                     }
                                     if (p_jumpStrength >= 1.5)
                                     {
                                         using (StreamWriter sw = new StreamWriter(_filepath, true))
                                         {
                                             sw.WriteLine(string.Format("{0} \"{1}\" Steam id {2} was detected with an illegal jump strength value: {3}", DateTime.Now, _cInfo.playerName, _cInfo.playerId, p_jumpStrength));
                                             sw.WriteLine();
                                             sw.Flush();
                                             sw.Close();
                                         }
                                         Log.Warning("Detected player \"{0}\" Steam id {1} at jump strength {2}.", _cInfo.playerName, _cInfo.playerId, p_jumpStrength);
                                         if (Kick_Enabled)
                                         {
                                             Phrases.Dict.TryGetValue(999, out string _phrase999);
                                             SdtdConsole.Instance.ExecuteSync(string.Format("kick {0} \"{1}\"", _cInfo.playerId, _phrase999), null);
                                             Phrases.Dict.TryGetValue(1000, out string _phrase1000);
                                             _phrase1000 = _phrase1000.Replace("{PlayerName}", _cInfo.playerName);
                                             ChatHook.ChatMessage(null, Config.Chat_Response_Color + _phrase1000 + "[-]", -1, Config.Server_Response_Name, EChatType.Global, null);
                                         }
                                         if (Ban_Enabled)
                                         {
                                             Phrases.Dict.TryGetValue(1001, out string _phrase1001);
                                             SdtdConsole.Instance.ExecuteSync(string.Format("ban {0} \"{1}\"", _cInfo.playerId, _phrase1001), null);
                                             Phrases.Dict.TryGetValue(1002, out string _phrase1002);
                                             _phrase1002 = _phrase1002.Replace("{PlayerName}", _cInfo.playerName);
                                             ChatHook.ChatMessage(null, Config.Chat_Response_Color + _phrase1002 + "[-]", -1, Config.Server_Response_Name, EChatType.Global, null);
                                         }
                                     }
                                     if (p_height > 1.8 || p_height < 1.7)
                                     {
                                         using (StreamWriter sw = new StreamWriter(_filepath, true))
                                         {
                                             sw.WriteLine(string.Format("{0} \"{1}\" Steam id {2} was detected with an illegal player height value: {3}", DateTime.Now, _cInfo.playerName, _cInfo.playerId, p_height));
                                             sw.WriteLine();
                                             sw.Flush();
                                             sw.Close();
                                         }
                                         Log.Warning("Detected player \"{0}\" Steam id {1} with player height @ {2}", _cInfo.playerName, _cInfo.playerId, p_height);
                                         if (Kick_Enabled)
                                         {
                                             Phrases.Dict.TryGetValue(1003, out string _phrase1003);
                                             SdtdConsole.Instance.ExecuteSync(string.Format("kick {0} \"{1}\"", _cInfo.playerId, _phrase1003), null);
                                             Phrases.Dict.TryGetValue(1004, out string _phrase1004);
                                             _phrase1004 = _phrase1004.Replace("{PlayerName}", _cInfo.playerName);
                                             ChatHook.ChatMessage(null, Config.Chat_Response_Color + _phrase1004 + "[-]", -1, Config.Server_Response_Name, EChatType.Global, null);
                                         }
                                         if (Ban_Enabled)
                                         {
                                             Phrases.Dict.TryGetValue(1005, out string _phrase1005);
                                             SdtdConsole.Instance.ExecuteSync(string.Format("ban {0} \"{1}\"", _cInfo.playerId, _phrase1005), null);
                                             Phrases.Dict.TryGetValue(1006, out string _phrase1006);
                                             _phrase1006 = _phrase1006.Replace("{PlayerName}", _cInfo.playerName);
                                             ChatHook.ChatMessage(null, Config.Chat_Response_Color + _phrase1006 + "[-]", -1, Config.Server_Response_Name, EChatType.Global, null);
                                         }
                                     }
                                     if (p_speedForward > Max_Speed)
                                     {
                                         using (StreamWriter sw = new StreamWriter(_filepath, true))
                                         {
                                             sw.WriteLine(string.Format("{0} \"{1}\" Steam id {2} was detected with an illegal run speed value: {3}", DateTime.Now, _cInfo.playerName, _cInfo.playerId, p_speedForward));
                                             sw.WriteLine();
                                             sw.Flush();
                                             sw.Close();
                                         }
                                         Log.Warning("Detected player \"{0}\" Steam id {1} was detected with an illegal run speed", _cInfo.playerName, _cInfo.playerId);
                                         if (Kick_Enabled)
                                         {
                                             Phrases.Dict.TryGetValue(1007, out string _phrase1007);
                                             SdtdConsole.Instance.ExecuteSync(string.Format("kick {0} \"{1}\"", _cInfo.playerId, _phrase1007), null);
                                             Phrases.Dict.TryGetValue(1008, out string _phrase1008);
                                             _phrase1008 = _phrase1008.Replace("{PlayerName}", _cInfo.playerName);
                                             ChatHook.ChatMessage(null, Config.Chat_Response_Color + _phrase1008 + "[-]", -1, Config.Server_Response_Name, EChatType.Global, null);
                                         }
                                         if (Ban_Enabled)
                                         {
                                             Phrases.Dict.TryGetValue(1009, out string _phrase1009);
                                             SdtdConsole.Instance.ExecuteSync(string.Format("ban {0} \"{1}\"", _cInfo.playerId, _phrase1009), null);
                                             Phrases.Dict.TryGetValue(1010, out string _phrase1010);
                                             _phrase1010 = _phrase1010.Replace("{PlayerName}", _cInfo.playerName);
                                             ChatHook.ChatMessage(null, Config.Chat_Response_Color + _phrase1010 + "[-]", -1, Config.Server_Response_Name, EChatType.Global, null);
                                         }
                                     }
                                 }
                             }
                         }
                     }
                 }
             }
         }
     }
     catch (Exception e)
     {
         Log.Out(string.Format("[SERVERTOOLS] Error in PlayerStats.Exec: {0}", e.Message));
     }
 }
コード例 #20
0
 public static bool ProcessPlayerDamage(EntityAlive __instance, DamageResponse _dmResponse)
 {
     try
     {
         if (__instance != null && __instance is EntityPlayer && _dmResponse.Source != null)
         {
             int _sourceId = _dmResponse.Source.getEntityId();
             if (_sourceId > 0)
             {
                 ClientInfo _cInfo = PersistentOperations.GetClientInfoFromEntityId(_sourceId);
                 if (_cInfo != null)
                 {
                     EntityPlayer _player2 = PersistentOperations.GetEntityPlayer(_cInfo.playerId);
                     if (_player2 != null)
                     {
                         if (Damage_Detector)
                         {
                             ItemValue _itemValue = ItemClass.GetItem(_player2.inventory.holdingItem.Name, true);
                             if (_itemValue != null)
                             {
                                 int _distance = (int)_player2.GetDistance(__instance);
                                 using (StreamWriter sw = new StreamWriter(filepath, true))
                                 {
                                     sw.WriteLine(string.Format("{0}: {1} {2} hit {3} with entity id {4} using {5} for {6} damage @ {7}. Distance: {8}", DateTime.Now, _cInfo.playerId, _cInfo.playerName, __instance.EntityName, __instance.entityId, _itemValue.ItemClass.GetLocalizedItemName() ?? _itemValue.ItemClass.GetItemName(), _dmResponse.Strength, __instance.position, _distance));
                                     sw.WriteLine();
                                     sw.Flush();
                                     sw.Close();
                                 }
                                 if (_dmResponse.Strength >= Entity_Damage_Limit && GameManager.Instance.adminTools.GetUserPermissionLevel(_cInfo) > Admin_Level)
                                 {
                                     string _message = "[FF0000]{PlayerName} has been banned for using damage manipulation.";
                                     _message = _message.Replace("{PlayerName}", _cInfo.playerName);
                                     ChatHook.ChatMessage(null, LoadConfig.Chat_Response_Color + _message + "[-]", -1, LoadConfig.Server_Response_Name, EChatType.Global, null);
                                     SdtdConsole.Instance.ExecuteSync(string.Format("ban add {0} 5 years \"Auto detection has banned you for using damage manipulation. Damage recorded: {1}\"", _cInfo.playerId, _dmResponse.Strength), (ClientInfo)null);
                                     using (StreamWriter sw = new StreamWriter(_detectionFilepath, true))
                                     {
                                         sw.WriteLine(string.Format("Detected {0}, Steam Id {1}, using damage manipulation @ {2}. Damage recorded: {3}", _cInfo.playerName, _cInfo.playerId, __instance.position, _dmResponse.Strength));
                                         sw.WriteLine();
                                         sw.Flush();
                                         sw.Close();
                                     }
                                     return(false);
                                 }
                             }
                         }
                         if (Zones.IsEnabled)
                         {
                             if (Zones.ZonePvE.Contains(__instance.entityId) || Zones.ZonePvE.Contains(_cInfo.entityId))
                             {
                                 ChatHook.ChatMessage(_cInfo, LoadConfig.Chat_Response_Color + "Do not attack players inside a pve zone or while standing in one!" + "[-]", -1, LoadConfig.Server_Response_Name, EChatType.Whisper, null);
                                 EntityPlayer _player1 = (EntityPlayer)__instance;
                                 if (_player1 != null)
                                 {
                                     if (!_player1.IsFriendsWith(_player2))
                                     {
                                         if (PersistentOperations.PvEViolations.ContainsKey(_cInfo.entityId))
                                         {
                                             PersistentOperations.PvEViolations.TryGetValue(_cInfo.entityId, out int _flags);
                                             _flags++;
                                             if (PersistentOperations.Jail_Violation > 0 && _flags >= PersistentOperations.Jail_Violation)
                                             {
                                                 Jail(_cInfo, __instance);
                                             }
                                             if (PersistentOperations.Kill_Violation > 0 && _flags >= PersistentOperations.Kill_Violation)
                                             {
                                                 Kill(_cInfo);
                                             }
                                             if (PersistentOperations.Kick_Violation > 0 && _flags >= PersistentOperations.Kick_Violation)
                                             {
                                                 Kick(_cInfo);
                                             }
                                             if (PersistentOperations.Ban_Violation > 0 && _flags >= PersistentOperations.Ban_Violation)
                                             {
                                                 Ban(_cInfo);
                                             }
                                         }
                                         else
                                         {
                                             PersistentOperations.PvEViolations.Add(_cInfo.entityId, 1);
                                         }
                                     }
                                 }
                                 return(false);
                             }
                         }
                         if (Lobby.IsEnabled && Lobby.PvE && Lobby.LobbyPlayers.Contains(__instance.entityId) || Market.IsEnabled && Market.PvE && Market.MarketPlayers.Contains(__instance.entityId))
                         {
                             ChatHook.ChatMessage(_cInfo, LoadConfig.Chat_Response_Color + "Do not attack players inside the lobby or market!" + "[-]", -1, LoadConfig.Server_Response_Name, EChatType.Whisper, null);
                             EntityPlayer _player1 = (EntityPlayer)__instance;
                             if (_player1 != null)
                             {
                                 if (!_player1.IsFriendsWith(_player2))
                                 {
                                     if (PersistentOperations.PvEViolations.ContainsKey(_cInfo.entityId))
                                     {
                                         PersistentOperations.PvEViolations.TryGetValue(_cInfo.entityId, out int _violations);
                                         _violations++;
                                         if (PersistentOperations.Jail_Violation > 0 && _violations >= PersistentOperations.Jail_Violation)
                                         {
                                             Jail(_cInfo, __instance);
                                         }
                                         if (PersistentOperations.Kill_Violation > 0 && _violations >= PersistentOperations.Kill_Violation)
                                         {
                                             Kill(_cInfo);
                                         }
                                         if (PersistentOperations.Kick_Violation > 0 && _violations >= PersistentOperations.Kick_Violation)
                                         {
                                             Kick(_cInfo);
                                         }
                                         else if (PersistentOperations.Ban_Violation > 0 && _violations >= PersistentOperations.Ban_Violation)
                                         {
                                             Ban(_cInfo);
                                         }
                                     }
                                     else
                                     {
                                         PersistentOperations.PvEViolations.Add(_cInfo.entityId, 1);
                                     }
                                 }
                             }
                             return(false);
                         }
                     }
                 }
             }
         }
     }
     catch (Exception e)
     {
         Log.Out(string.Format("[SERVERTOOLS] Error in ProcessDamage.ProcessPlayerDamage: {0}", e.Message));
     }
     return(true);
 }
コード例 #21
0
 public static bool GameManager_OpenTileEntityAllowed_Prefix(ref bool __result, ref bool __state, int _entityIdThatOpenedIt, TileEntity _te)
 {
     try
     {
         ClientInfo cInfo = PersistentOperations.GetClientInfoFromEntityId(_entityIdThatOpenedIt);
         if (cInfo != null)
         {
             if (GameManager.Instance.adminTools.GetUserPermissionLevel(cInfo.PlatformId) > 0 &&
                 GameManager.Instance.adminTools.GetUserPermissionLevel(cInfo.CrossplatformId) > 0)
             {
                 if (DroppedBagProtection.IsEnabled)
                 {
                     if (_te is TileEntityLootContainer)
                     {
                         TileEntityLootContainer lootContainer = _te as TileEntityLootContainer;
                         if (lootContainer.bPlayerBackpack)
                         {
                             if (!DroppedBagProtection.IsAllowed(_entityIdThatOpenedIt, lootContainer))
                             {
                                 Phrases.Dict.TryGetValue("DroppedBagProtection1", out string phrase);
                                 ChatHook.ChatMessage(cInfo, Config.Chat_Response_Color + phrase + "[-]", -1, Config.Server_Response_Name, EChatType.Whisper, null);
                                 __result = false;
                                 return(false);
                             }
                         }
                     }
                 }
                 if (Shutdown.UI_Locked)
                 {
                     if (_te is TileEntityLootContainer)
                     {
                         TileEntityLootContainer lootContainer = _te as TileEntityLootContainer;
                         if (lootContainer.bPlayerBackpack)
                         {
                             return(true);
                         }
                     }
                     if (_te is TileEntityWorkstation || _te is TileEntityLootContainer || _te is TileEntitySecureLootContainer ||
                         _te is TileEntityVendingMachine || _te is TileEntityTrader)
                     {
                         if (_te is TileEntityTrader)
                         {
                             __state = true;
                         }
                         Phrases.Dict.TryGetValue("Shutdown3", out string phrase);
                         ChatHook.ChatMessage(cInfo, Config.Chat_Response_Color + phrase + "[-]", -1, Config.Server_Response_Name, EChatType.Whisper, null);
                         __result = false;
                         return(false);
                     }
                 }
                 if (WorkstationLock.IsEnabled && _te is TileEntityWorkstation)
                 {
                     EntityPlayer entityPlayer = PersistentOperations.GetEntityPlayer(cInfo.entityId);
                     if (entityPlayer != null)
                     {
                         EnumLandClaimOwner owner = PersistentOperations.ClaimedByWho(cInfo.CrossplatformId, new Vector3i(entityPlayer.position));
                         if (owner != EnumLandClaimOwner.Self && owner != EnumLandClaimOwner.Ally && !PersistentOperations.ClaimedByNone(new Vector3i(entityPlayer.position)))
                         {
                             Phrases.Dict.TryGetValue("WorkstationLock1", out string phrase);
                             ChatHook.ChatMessage(cInfo, Config.Chat_Response_Color + phrase + "[-]", -1, Config.Server_Response_Name, EChatType.Whisper, null);
                             __result = false;
                             return(false);
                         }
                     }
                 }
             }
         }
     }
     catch (Exception e)
     {
         Log.Out(string.Format("[SERVERTOOLS] Error in Injections.GameManager_OpenTileEntityAllowed_Prefix: {0}", e.Message));
     }
     return(true);
 }