Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

TOGs Jump Stats


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
Brak odpowiedzi do tego tematu

#1 Adminek AMXX.PL

    Admin :)

  • Bot

Reputacja: 156
Profesjonalista

  • Postów:7 476
  • Lokalizacja:AMXX.PL
Offline

Napisano 17.05.2014 20:41

<!-- BEGIN TEMPLATE: postbit_external -->
<div><b><font size="4">Description</font></b><br />This plugin is one that I made as a replacement for <a href="https://forums.allie...hlight=macrodox" target="_blank">Macrodox</a> for detecting player bhop methods. It uses some coding from his plugin, but has been changed in quite a lot of ways (detailed below).<br /><br /><u>Detections:</u><ul><li>Bhop hacks - flags players with perfect jump ratios above a value, configurable by cvar (0.9, i.e. 90%, by default).</li>
<li>Pattern Jumps - flags players with over 15 jumps out of their last 30, having the exact same number of jump commands sent to the server. This is detection for auto-hotkeysand will only triggered if their average number of jumps is above 15 as well.</li>
<li>Hyperscroll - This is likely allowed in most servers, but has been included for communities that dont allow it. Hyperscroll is a feature of some mice that allows them to unlock a near-frictionless mouse wheel, and spin it. It will keep spinning, sending massive amounts of jump commands to the server. Many who use this feature actually do worse, but if used properly, can easily be used to reach rediculous perfect ratios (~0.7).</li>
</ul><br /><u>Notes:</u><ul><li>If set by cvar, this plugin will auto-notify every admin (with the &quot;ban&quot; flag) in the server if a player is flagged for any of the above. The notification is in all red so that it is hard to miss, and will list what the player is flagged for. These notifications are given a configurable cooldown period, to avoid chat spamming the admins.</li>
<li>The hyperscroll detection is highly configurable. By default, it only flags players who have perfect jump ratios above 0.4 (configurable), whose have at least 13 (configurable) jumps with 14 (configurable) or more jump commands sent to the server. Additionally, to further prevent false positives, you can set it to only log stats and notify admins if the player is detected 3 rounds in a row.</li>
<li>All three of the above detections log to separate files inside of a subfolder in SM logs.</li>
<li>You can reset a players (or all players) jump stats. This can be used if a player is asked to turn something off, and you want to start fresh on their stats to see if they did.</li>
<li>This plugin has full admin menu integration. This is especially useful when you want to target one specific player, but their name is all special characters (and you're too lazy to copy/paste). Simply pick from player lists.</li>
<li>Flagged players will only be logged once per map. No need to flood the logs.</li>
<li>The jump stats output is formatted so that player names are not at the beginning. This is so that an admin can quickly scroll through stats for all players and the values they are looking for (e.g. perfect ratios, or average jumps) are all in the same place.</li>
</ul><br /><div style="margin: 5px;">
<div class="smallfont" style="margin-bottom: 2px;">
<b>CVars</b> <input value="Show" style="margin: 0px; padding: 0px; width: 45px; font-size: 10px;" onclick="if(this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display != 'inline')
{ this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'inline'; this.innerText = ''; this.value = 'Hide'; }
else
{ this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'none'; this.innerText = ''; this.value='Show'; }" type="button">
</div>
<div class="alt2" style="border: 1px inset; padding: 6px;">
<div class="spoiler" style="display: none;"><br />Adjust these in the auto-generated cfg located in cstrike/cfg/sourcemod/togsjumpstats.cfg<br /><br /><b>tjs_admin_notifications</b> - Enable admin chat notifications when a player is flagged (0 = Disabled, 1 = Enabled).<br /> <br /><b>tjs_cooldown</b> - Cooldown time between chat notifications to admins for any given clients that is flagged.<br /><br /><b>tjs_hyp_perf</b> - Above this perf ratio (in combination with the other hyperscroll cvars), players will be flagged for hyperscrolling.<br /><br /><b>tjs_log</b> - Enable logging player jump stats if a player is flagged (0 = Disabled, 1 = Enabled).<br /><br /><b>tjs_mult_rounds_hyp</b> - Clients will not be flagged (in logs and admin notifications) for hyperscrolling until they are noted 4 rounds in a row (0 = Disabled, 1 = Enabled).<br /><br /><b>tjs_numflags</b> - Out of the last 30 jumps, the number of jumps that must be above tjs_numjumps to flag player for hyperscrolling.<br /><br /><b>tjs_numjumps</b> - Number of jump commands to use as a threshold for flagging hyperscrollers.<br /><br /><b>tjs_perf</b> - Above this perf ratio (between 0.0 - 1.0), players will be flagged for hacks.<br /></div>
</div>
</div><br /><br /><div style="margin: 5px;">
<div class="smallfont" style="margin-bottom: 2px;">
<b>Admin Commands</b> <input value="Show" style="margin: 0px; padding: 0px; width: 45px; font-size: 10px;" onclick="if(this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display != 'inline')
{ this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'inline'; this.innerText = ''; this.value = 'Hide'; }
else
{ this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'none'; this.innerText = ''; this.value='Show'; }" type="button">
</div>
<div class="alt2" style="border: 1px inset; padding: 6px;">
<div class="spoiler" style="display: none;"><br /><b>sm_jumps</b> - Prints to console the jump stats for the target.<br /> <br /><b>sm_jumpsall</b> - Prints to console the jump stats for every player.<br /><br /><b>sm_stopmsgs</b> - Disables admin notifications and logging for the rest of the map. This can be used if a map provides false positives (particularly for hyperscroll).<br /><br /><b>sm_enablemsgs</b> - Re-enables admin notifications and stats logging, after it has been disabled.<br /><br /><b>sm_msgstatus</b> - Checks the status of admin notifications (enabled or disabled). This is not really needed, since they can just check the admin menu and see if the text to disable it reads 'Enable&quot; instead, but nonetheless, it is currently coded in.<br /><br /><b>sm_resetjumps</b> - Resets jump stats for a player.<br /><br /><b>sm_resetjumpsall</b> - Resets jump stats for all players.<br /></div>
</div>
</div><br /><br /><div style="margin: 5px;">
<div class="smallfont" style="margin-bottom: 2px;">
<b>Sample Stats and explanations</b> <input value="Show" style="margin: 0px; padding: 0px; width: 45px; font-size: 10px;" onclick="if(this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display != 'inline')
{ this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'inline'; this.innerText = ''; this.value = 'Hide'; }
else
{ this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'none'; this.innerText = ''; this.value='Show'; }" type="button">
</div>
<div class="alt2" style="border: 1px inset; padding: 6px;">
<div class="spoiler" style="display: none;"><br /><br /><div style="margin: 5px;">
<div class="smallfont" style="margin-bottom: 2px;">
<b>Sample Stats for spacebar jumps</b> <input value="Show" style="margin: 0px; padding: 0px; width: 45px; font-size: 10px;" onclick="if(this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display != 'inline')
{ this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'inline'; this.innerText = ''; this.value = 'Hide'; }
else
{ this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'none'; this.innerText = ''; this.value='Show'; }" type="button">
</div>
<div class="alt2" style="border: 1px inset; padding: 6px;">
<div class="spoiler" style="display: none;"><br />Flagged: 0 || Perf: 0.006082 || Avg: 1.356244/214.082641 || PLAYER_NAME_HERE&lt;CLIENT_INDEX_HERE&gt;&lt;STEAM_ID_ HERE&gt;&lt;&gt; || Map: MAP_NAME_HERE || Last: 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1<br />Flagged: 0 || Perf: 0.115698 || Avg: 1.291439/231.796173 || PLAYER_NAME_HERE&lt;CLIENT_INDEX_HERE&gt;&lt;STEAM_ID_ HERE&gt;&lt;&gt; || Map: MAP_NAME_HERE || Last: 1 0 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 2 2 1 1 1 1 1 1<br /></div>
</div>
</div><br /><br />The first part will be either 0 (if unflagged), or 1 (if flagged).<br />The next number ranges from 0 to 1. It is the ratio of jumps that are perfect (jump command sent to server exactly when the player touches the ground). A stat of 0.65 would mean 65% of the time they have &quot;perfect jumps&quot;.<br />The next two numbers are the 'average number of jump commands sent to the server between jumps', and the 'average speed'. Low numbers (0-3) for 'average jump commands sent' typically indicate that the player is using a keyboard. Mid-ranged numbers (3-13 ish) typically indicate the player is using a mouse wheel. High numbers typically indicate hyperscroll or auto-hotkeys (if repeating numbers).<br />Next section is all the player info, followed by the map name.<br />The final section is the 'number of jump commands sent to the server between jumps' for the last 30 jumps. This provides a more in-depth look into what is going on. Do not be surprised by random, outlying numbers that are large, as that is typically from jumping off some high place in a map. Pay attention to the patterns and trends, and what they indicate.<br /><br /><div style="margin: 5px;">
<div class="smallfont" style="margin-bottom: 2px;">
<b>Sample Stats for mouse wheel jumps</b> <input value="Show" style="margin: 0px; padding: 0px; width: 45px; font-size: 10px;" onclick="if(this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display != 'inline')
{ this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'inline'; this.innerText = ''; this.value = 'Hide'; }
else
{ this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'none'; this.innerText = ''; this.value='Show'; }" type="button">
</div>
<div class="alt2" style="border: 1px inset; padding: 6px;">
<div class="spoiler" style="display: none;"><br />Flagged: 0 || Perf: 0.223530 || Avg: 3.603948/329.664337 || Sin Sama&lt;183&gt;&lt;STEAM_0:1:3620602&gt;&lt;&gt; || Map: deathrun_family_guy_final2 || Last: 5 4 4 6 4 4 2 5 4 4 6 4 4 6 3 4 3 2 2 2 2 5 4 5 5 3 5 3 6 4<br />Flagged: 0 || Perf: 0.498043 || Avg: 8.020277/332.228027 || Veke | Peto&lt;177&gt;&lt;STEAM_0:0:43192072&gt;&lt;&gt; || Map: deathrun_family_guy_final2 || Last: 10 4 11 8 7 8 6 10 6 6 6 8 6 7 7 9 5 5 11 6 10 6 12 12 9 5 8 9 6 8<br /></div>
</div>
</div><br /><br />Detections:<br /><div style="margin: 5px;">
<div class="smallfont" style="margin-bottom: 2px;">
<b>Sample Stats for 'Hacks'</b> <input value="Show" style="margin: 0px; padding: 0px; width: 45px; font-size: 10px;" onclick="if(this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display != 'inline')
{ this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'inline'; this.innerText = ''; this.value = 'Hide'; }
else
{ this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'none'; this.innerText = ''; this.value='Show'; }" type="button">
</div>
<div class="alt2" style="border: 1px inset; padding: 6px;">
<div class="spoiler" style="display: none;"><br />Flagged: 1 || Perf: 0.907963 || Avg: 5.914795/445.784515 || PLAYER_NAME_HERE&lt;CLIENT_INDEX_HERE&gt;&lt;STEAM_ID_ HERE&gt;&lt;&gt; || Map: MAP_NAME_HERE || Last: 4 6 6 8 3 6 7 2 5 9 3 6 6 6 6 6 6 6 7 6 6 7 6 5 7 5 5 7 6 6 hacks<br />Flagged: 1 || Perf: 0.908494 || Avg: 1.205669/354.121643 || PLAYER_NAME_HERE&lt;CLIENT_INDEX_HERE&gt;&lt;STEAM_ID_ HERE&gt;&lt;&gt; || Map: MAP_NAME_HERE || Last: 1 1 5 2 3 2 1 2 2 1 3 1 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 hacks<br />Flagged: 1 || Perf: 0.909433 || Avg: 6.876093/492.801574 || PLAYER_NAME_HERE&lt;CLIENT_INDEX_HERE&gt;&lt;STEAM_ID_ HERE&gt;&lt;&gt; || Map: MAP_NAME_HERE || Last: 7 6 8 7 8 9 10 9 8 6 8 7 7 7 6 6 12 7 8 7 6 4 8 7 0 0 1 1 1 1 hacks<br />Flagged: 1 || Perf: 0.903526 || Avg: 1.111251/353.492919 || PLAYER_NAME_HERE&lt;CLIENT_INDEX_HERE&gt;&lt;STEAM_ID_ HERE&gt;&lt;&gt; || Map: MAP_NAME_HERE || Last: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 hacks<br /></div>
</div>
</div><br /><br /><div style="margin: 5px;">
<div class="smallfont" style="margin-bottom: 2px;">
<b>Sample Stats for 'Hyperscroll'</b> <input value="Show" style="margin: 0px; padding: 0px; width: 45px; font-size: 10px;" onclick="if(this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display != 'inline')
{ this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'inline'; this.innerText = ''; this.value = 'Hide'; }
else
{ this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'none'; this.innerText = ''; this.value='Show'; }" type="button">
</div>
<div class="alt2" style="border: 1px inset; padding: 6px;">
<div class="spoiler" style="display: none;"><br />Flagged: 1 || Perf: 0.401993 || Avg: 20.080400/386.051788 || PLAYER_NAME_HERE&lt;CLIENT_INDEX_HERE&gt;&lt;STEAM_ID_ HERE&gt;&lt;&gt; || Map: MAP_NAME_HERE || Last: 23 23 14 21 20 21 22 22 23 20 24 21 22 23 22 21 22 23 21 21 23 22 23 21 22 23 7 19 18 20 hyperscroll (3 rounds in a row)<br />Flagged: 1 || Perf: 0.425278 || Avg: 17.661243/324.608428 || PLAYER_NAME_HERE&lt;CLIENT_INDEX_HERE&gt;&lt;STEAM_ID_ HERE&gt;&lt;&gt; || Map: MAP_NAME_HERE || Last: 36 20 20 20 17 19 19 18 18 18 17 16 20 20 17 19 19 18 16 17 16 19 17 11 16 19 16 21 20 20 hyperscroll (3 rounds in a row)<br />Flagged: 1 || Perf: 0.405382 || Avg: 22.187124/325.697784 || PLAYER_NAME_HERE&lt;CLIENT_INDEX_HERE&gt;&lt;STEAM_ID_ HERE&gt;&lt;&gt; || Map: MAP_NAME_HERE || Last: 14 15 19 21 21 21 18 18 21 18 33 34 31 32 33 31 32 31 31 34 33 31 36 29 9 30 34 33 26 14 hyperscroll (3 rounds in a row)<br /></div>
</div>
</div><br /><br /><div style="margin: 5px;">
<div class="smallfont" style="margin-bottom: 2px;">
<b>Sample Stats for 'Pattern Jumps'</b> <input value="Show" style="margin: 0px; padding: 0px; width: 45px; font-size: 10px;" onclick="if(this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display != 'inline')
{ this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'inline'; this.innerText = ''; this.value = 'Hide'; }
else
{ this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'none'; this.innerText = ''; this.value='Show'; }" type="button">
</div>
<div class="alt2" style="border: 1px inset; padding: 6px;">
<div class="spoiler" style="display: none;"><br />Flagged: 1 || Perf: 0.639150 || Avg: 15.775874/384.020507 || PLAYER_NAME_HERE&lt;CLIENT_INDEX_HERE&gt;&lt;STEAM_ID_ HERE&gt;&lt;&gt; || Map: MAP_NAME_HERE || Last: 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 pattern jumps<br />Flagged: 1 || Perf: 0.525187 || Avg: 19.467155/390.364624 || PLAYER_NAME_HERE&lt;CLIENT_INDEX_HERE&gt;&lt;STEAM_ID_ HERE&gt;&lt;&gt; || Map: MAP_NAME_HERE || Last: 37 19 20 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 5 19 19 19 32 32 32 32 32 32 pattern jumps<br />Flagged: 1 || Perf: 0.011242 || Avg: 22.799427/328.148956 || PLAYER_NAME_HERE&lt;CLIENT_INDEX_HERE&gt;&lt;STEAM_ID_ HERE&gt;&lt;&gt; || Map: MAP_NAME_HERE || Last: 19 18 20 22 22 23 23 24 24 22 23 24 23 23 23 23 23 23 23 23 22 23 23 23 23 23 23 23 23 23 pattern jumps<br /></div>
</div>
</div><br /></div>
</div>
</div><br /><br /><div style="margin: 5px;">
<div class="smallfont" style="margin-bottom: 2px;">
<b>Changelog</b> <input value="Show" style="margin: 0px; padding: 0px; width: 45px; font-size: 10px;" onclick="if(this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display != 'inline')
{ this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'inline'; this.innerText = ''; this.value = 'Hide'; }
else
{ this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'none'; this.innerText = ''; this.value='Show'; }" type="button">
</div>
<div class="alt2" style="border: 1px inset; padding: 6px;">
<div class="spoiler" style="display: none;"><br />05/17/14 (v1.3)<ul><li>Initial Release to AM</li>
</ul></div>
</div>
</div><br /><br /><b><font size="4">Installation</font></b><br />Install contents of zip folder in your cstrike/addons/sourcemod directory.<br /><br /><a href="http://www.gametrack...ort=&#38;order=" target="_blank"><b><i>Servers using this plugin</i></b></a><br /><a href="http://www.sourcemod.net/plugins.php?cat=0&amp;mod=-1&amp;title=&amp;author=thatoneguy&amp;description=&amp;search=1" target="_blank"><i><b>&gt;&gt;&gt; Click here to check out my approved plugins &lt;&lt;&lt;</b></i></a></div>


<br /> <div style="padding:6px">








<fieldset class="fieldset">
<legend>Attached Files</legend>
<table cellpadding="0" cellspacing="3" border="0">
<!-- BEGIN TEMPLATE: postbit_attachment -->
<tr>
<td><img class="inlineimg" src="https://forums.allie.../attach/zip.gif" alt="File Type: zip" width="16" height="16" border="0" style="vertical-align:baseline" /></td>
<td>


<a href="https://forums.allie...38;d=1400355622">togsjumpstats.zip</a> (32.6 KB)


</td>
</tr>
<!-- END TEMPLATE: postbit_attachment --><!-- BEGIN TEMPLATE: postbit_attachment -->
<tr>
<td><img class="inlineimg" src="https://forums.allie...s/attach/sp.gif" alt="File Type: sp" width="16" height="16" border="0" style="vertical-align:baseline" /></td>
<td>


<a href="http://www.sourcemod...?file_id=133588"><strong>Get Plugin</strong></a> or
<a href="https://forums.allie...38;d=1400355630">Get Source</a> (togsjumpstats.sp - 26.2 KB)


</td>
</tr>
<!-- END TEMPLATE: postbit_attachment -->
</table>
</fieldset>


</div>

<!-- END TEMPLATE: postbit_external -->

Wyświetl pełny artykuł




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych