Skip to content

Commit

Permalink
Improve SourcePawn heuristics (#5479)
Browse files Browse the repository at this point in the history
* add a few sourcepawn heuristics

* adjust sourcepawn .inc heuristic that was catching pawn files

* move mfile.inc to Pawn samples

* add more .inc samples for SourcePawn

* remove dhooks.inc since it adds more classifier cross-validation errors

Co-authored-by: Colin Seymour <colin@github.com>
  • Loading branch information
rtldg and lildude authored Jul 27, 2021
1 parent 88b86fa commit ca8b002
Show file tree
Hide file tree
Showing 5 changed files with 1,774 additions and 3 deletions.
5 changes: 4 additions & 1 deletion lib/linguist/heuristics.yml
Original file line number Diff line number Diff line change
Expand Up @@ -258,7 +258,10 @@ disambiguations:
- language: PHP
pattern: '^<\?(?:php)?'
- language: SourcePawn
pattern: '^public\s+(?:SharedPlugin(?:\s+|:)__pl_\w+\s*=(?:\s*{)?|(?:void\s+)?__pl_\w+_SetNTVOptional\(\)(?:\s*{)?)'
pattern:
- '^public\s+(?:SharedPlugin(?:\s+|:)__pl_\w+\s*=(?:\s*{)?|(?:void\s+)?__pl_\w+_SetNTVOptional\(\)(?:\s*{)?)'
- '^methodmap\s+\w+\s+<\s+\w+'
- '^\s*MarkNativeAsOptional\s*\('
- language: NASL
pattern:
- '^\s*include\s*\(\s*(?:"|'')[\\/\w\-\.:\s]+\.(?:nasl|inc)\s*(?:"|'')\s*\)\s*;'
Expand Down
File renamed without changes.
207 changes: 207 additions & 0 deletions samples/SourcePawn/bhopstats.inc
Original file line number Diff line number Diff line change
@@ -0,0 +1,207 @@
/*
* Bunnyhop Statistics API - Include file
* by: shavit
*
* This file is part of Bunnyhop Statistics API.
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License, version 3.0, as published by the
* Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*
*/

#if defined _bhopstats_included
#endinput
#endif
#define _bhopstats_included

#define BHOPSTATS_VERSION "1.2.0"

/**
* Called when the jump key is pressed.
*
* @param client Client index.
* @param onground True if the jump key will do anything for the player when tapped.
* @noreturn
*/
forward void Bunnyhop_OnJumpPressed(int client, bool onground);

/**
* Called when the jump key is released.
*
* @param client Client index.
* @param onground True if the jump key will do anything for the player when tapped.
* @noreturn
*/
forward void Bunnyhop_OnJumpReleased(int client, bool onground);

/**
* Called when the player touches the ground.
*
* @param client Client index.
* @noreturn
*/
forward void Bunnyhop_OnTouchGround(int client);

/**
* Called when the player leaves the ground, by either jumping or falling from somewhere.
* AKA the HookEventless better version of player_jump.
* The `jumped` variable is true if the ground was left by tapping the jump key, or false if the player fell from somewhere.
* `ladder` is true if the player left the 'ground' from a ladder.
*
* @param client Client index.
* @param jumped Did the client leave the ground by jumping?
* @param ladder Did the client leave the ground by leaving a ladder, aka ladderstrafing?
* @noreturn
*/
forward void Bunnyhop_OnLeaveGround(int client, bool jumped, bool ladder);

/**
* Retrieves the amount of separate +jump inputs since the player left the ground.
*
* @param client Client index.
* @return Amount of +jump inputs since the left the ground, or 0 if the player is on ground.
*/
native int Bunnyhop_GetScrollCount(int client);

/**
* Checks if the player is on ground, or if the jump key will function as in actually triggering a jump or altering velocity.
* The result will be true if the player is on a ladder or in water, as jumping will be functional.
*
* @param client Client index.
* @return Boolean value of 'is the player on ground?'
*/
native bool Bunnyhop_IsOnGround(int client);

/**
* Checks if the player is holding his jump key.
*
* @param client Client index.
* @return Boolean value of 'is the player holding the jump key?''
*/
native bool Bunnyhop_IsHoldingJump(int client);

/**
* Gets a percentage of perfectly timed bunnyhops.
* Resets at player connection or the Bunnyhop_ResetPerfectJumps native for it is called.
*
* @param client Client index.
* @return Perfect jump percentage. Results are from 0.0 to 100.0.
*/
native float Bunnyhop_GetPerfectJumps(int client);

/**
* Resets the perfect jumps percentage of a player back to 0.0.
*
* @param client Client index.
* @noreturn
*/
native void Bunnyhop_ResetPerfectJumps(int client);

methodmap BunnyhopStats __nullable__
{
public BunnyhopStats(int client)
{
return view_as<BunnyhopStats>(client);
}

property int index
{
public get()
{
return view_as<int>(this);
}
}

property int ScrollCount
{
public get()
{
return Bunnyhop_GetScrollCount(this.index);
}
}

property bool OnGround
{
public get()
{
return Bunnyhop_IsOnGround(this.index);
}
}

property bool HoldingJump
{
public get()
{
return Bunnyhop_IsHoldingJump(this.index);
}
}

property float PerfectJumps
{
public get()
{
return Bunnyhop_GetPerfectJumps(this.index);
}
}

public void ResetPrefects()
{
Bunnyhop_ResetPerfectJumps(this.index);
}

public static int GetScrollCount(int client)
{
return Bunnyhop_GetScrollCount(client);
}

public static bool IsOnGround(int client)
{
return Bunnyhop_IsOnGround(client);
}

public static bool IsHoldingJump(int client)
{
return Bunnyhop_IsHoldingJump(client);
}

public static float GetPerfectJumps(int client)
{
return Bunnyhop_GetPerfectJumps(client);
}

public static float ResetPrefectJumps(int client)
{
return Bunnyhop_ResetPerfectJumps(client);
}
}

public SharedPlugin __pl_bhopstats =
{
name = "bhopstats",
file = "bhopstats.smx",
#if defined REQUIRE_PLUGIN
required = 1
#else
required = 0
#endif
};

#if !defined REQUIRE_PLUGIN
public void __pl_bhopstats_SetNTVOptional()
{
MarkNativeAsOptional("Bunnyhop_GetScrollCount");
MarkNativeAsOptional("Bunnyhop_IsOnGround");
MarkNativeAsOptional("Bunnyhop_IsHoldingJump");
MarkNativeAsOptional("Bunnyhop_GetPerfectJumps");
MarkNativeAsOptional("Bunnyhop_ResetPerfectJumps");
}
#endif
Loading

0 comments on commit ca8b002

Please sign in to comment.