kusanagy

DamageChecker

Sep 25th, 2017
428
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Diff 4.67 KB | None | 0 0
  1. Checking the damage the player. By Rescr1pt ;)
  2.  
  3.  src/server/game/World/World.h |    3 +++
  4.  1 files changed, 3 insertions(+), 0 deletions(-)
  5.  
  6. diff --git a/src/server/game/World/World.h b/src/server/game/World/World.h
  7. index 95e9fbd..c35b46d 100755
  8. --- a/src/server/game/World/World.h
  9. +++ b/src/server/game/World/World.h
  10. @@ -317,6 +317,9 @@ enum WorldIntConfigs
  11.      CONFIG_WARDEN_CLIENT_BAN_DURATION,
  12.      CONFIG_WARDEN_NUM_MEM_CHECKS,
  13.      CONFIG_WARDEN_NUM_OTHER_CHECKS,
  14. +    CONFIG_DAMAGE_CHECKER_MAX_DAMAGE,
  15. +    CONFIG_DAMAGE_CHECKER_IMMUNE_MIN_GM_LEVEL,
  16. +    CONFIG_DAMAGE_CHECKER_BAN_VALUE,
  17.      INT_CONFIG_VALUE_COUNT
  18.  };
  19.  
  20.  src/server/game/World/World.cpp |    5 +++++
  21.  1 files changed, 5 insertions(+), 0 deletions(-)
  22.  
  23. diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp
  24. index ccc8bb2..5b4e912 100755
  25. --- a/src/server/game/World/World.cpp
  26. +++ b/src/server/game/World/World.cpp
  27. @@ -1200,6 +1200,11 @@ void World::LoadConfigSettings(bool reload)
  28.      m_bool_configs[CONFIG_PDUMP_NO_PATHS] = sConfigMgr->GetBoolDefault("PlayerDump.DisallowPaths", true);
  29.      m_bool_configs[CONFIG_PDUMP_NO_OVERWRITE] = sConfigMgr->GetBoolDefault("PlayerDump.DisallowOverwrite", true);
  30.  
  31. +    // damage checker
  32. +    m_int_configs[CONFIG_DAMAGE_CHECKER_MAX_DAMAGE] = sConfigMgr->GetIntDefault("DamageChecker.MaxDamage", 50000);
  33. +    m_int_configs[CONFIG_DAMAGE_CHECKER_IMMUNE_MIN_GM_LEVEL] = sConfigMgr->GetIntDefault("DamageChecker.ImmuneMinGMLevel", 1);
  34. +    m_int_configs[CONFIG_DAMAGE_CHECKER_BAN_VALUE] = sConfigMgr->GetIntDefault("DamageChecker.BanValue", 3600);
  35. +
  36.      // call ScriptMgr if we're reloading the configuration
  37.      if (reload)
  38.          sScriptMgr->OnConfigLoad(reload);
  39.  src/server/game/Entities/Unit/Unit.cpp |   14 ++++++++++++++
  40.  1 files changed, 14 insertions(+), 0 deletions(-)
  41.  
  42. diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
  43. index d71f8e8..5ea95cf 100755
  44. --- a/src/server/game/Entities/Unit/Unit.cpp
  45. +++ b/src/server/game/Entities/Unit/Unit.cpp
  46. @@ -655,6 +655,20 @@ uint32 Unit::DealDamage(Unit* victim, uint32 damage, CleanDamage const* cleanDam
  47.  
  48.      TC_LOG_DEBUG("entities.unit", "DealDamageStart");
  49.  
  50. +    // damage checker
  51. +    if(GetTypeId() == TYPEID_PLAYER                                            
  52. +        && sWorld->getIntConfig(CONFIG_DAMAGE_CHECKER_MAX_DAMAGE) > 0
  53. +        && damage >= sWorld->getIntConfig(CONFIG_DAMAGE_CHECKER_MAX_DAMAGE)
  54. +        && (uint8)ToPlayer()->GetSession()->GetSecurity() < sWorld->getIntConfig(CONFIG_DAMAGE_CHECKER_IMMUNE_MIN_GM_LEVEL))
  55. +    {
  56. +        // punishment
  57. +        uint32 banTime = sWorld->getIntConfig(CONFIG_DAMAGE_CHECKER_BAN_VALUE);
  58. +        if(banTime > 0)
  59. +            sWorld->BanCharacter(ToPlayer()->GetName(), secsToTimeString(banTime, true).c_str(), "Maximal damage", "Damage Checker");
  60. +
  61. +        TC_LOG_DEBUG("Damage Checker: Player name '%s', damage %u", ToPlayer()->GetName(), damage);
  62. +    }
  63. +
  64.      uint32 health = victim->GetHealth();
  65.      TC_LOG_DEBUG("entities.unit", "%s dealt %u damage to %s", GetGUID().ToString().c_str(), damage, victim->GetGUID().ToString().c_str());
  66.  
  67.  src/server/worldserver/worldserver.conf.dist |   27 ++++++++++++++++++++++++++
  68.  1 files changed, 27 insertions(+), 0 deletions(-)
  69.  
  70. diff --git a/src/server/worldserver/worldserver.conf.dist b/src/server/worldserver/worldserver.conf.dist
  71. index 5d83710..9dae019 100644
  72. --- a/src/server/worldserver/worldserver.conf.dist
  73. +++ b/src/server/worldserver/worldserver.conf.dist
  74. @@ -25,6 +25,7 @@
  75.  #    CONSOLE AND REMOTE ACCESS
  76.  #    CHARACTER DELETE OPTIONS
  77.  #    CUSTOM SERVER OPTIONS
  78. +#    DAMAGE CHECKER OPTIONS
  79.  #
  80.  ###################################################################################################
  81.  
  82. @@ -2880,3 +2881,29 @@ PlayerDump.DisallowOverwrite = 1
  83.  
  84.  #
  85.  ###################################################################################################
  86. +
  87. +###################################################################################################
  88. +# DAMAGE CHECKER OPTIONS
  89. +#
  90. +#     DamageChecker.MaxDamage
  91. +#        Maximum damage on the player.
  92. +#        Default:     0 - disable
  93. +
  94. +DamageChecker.MaxDamage = 50000
  95. +
  96. +#
  97. +#    DamageChecker.ImmuneMinGMLevel
  98. +#        The min level of GM, to obtain immunity from the detector.
  99. +#        Default:     1
  100. +
  101. +DamageChecker.ImmuneMinGMLevel = 1
  102. +
  103. +#
  104. +#    DamageChecker.BanValue
  105. +#        Ban-time for the character (in seconds). If the BanValue is 0 or less, then only get a log.
  106. +#        Default:     3600
  107. +
  108. +DamageChecker.BanValue = 3600
  109. +
  110. +#
  111. +###################################################################################################
Advertisement
Add Comment
Please, Sign In to add comment