wanted level in module and hooked functions (completely server sided). You can use GetPlayerWantedLevel, SetPlayerWantedLevel or GivePlayerWantedLevel

This commit is contained in:
Lorenc Pekaj 2018-10-15 15:19:36 +11:00
parent 68a890d747
commit 08474974bf
4 changed files with 119 additions and 74 deletions

View File

@ -17,6 +17,7 @@
#include "irresistible\cnr\dialog_ids.pwn"
#include "irresistible\cnr\entrances.pwn"
#include "irresistible\cnr\checkpoints.pwn"
#include "irresistible\cnr\wanted_level.pwn"
// reliant on core definitions
#include "irresistible\cnr\vip\_vip.pwn"

View File

@ -28,7 +28,6 @@ new
p_AdminJailed [ MAX_PLAYERS char ],
p_JailTimer [ MAX_PLAYERS ],
bool: p_Jailed [ MAX_PLAYERS char ],
p_WantedLevel [ MAX_PLAYERS ],
bool: p_Tazed [ MAX_PLAYERS char ],
p_LastVehicle [ MAX_PLAYERS ] = { INVALID_VEHICLE_ID, ... },
bool: p_Cuffed [ MAX_PLAYERS char ],

View File

@ -0,0 +1,111 @@
/*
* Irresistible Gaming (c) 2018
* Developed by Lorenc Pekaj
* Module:
* Purpose:
*/
/* ** Includes ** */
#include < YSI\y_hooks >
/* ** Definitions ** */
/* ** Variables ** */
new
p_WantedLevel [ MAX_PLAYERS ];
/* ** Hooks ** */
hook OnPlayerConnect( playerid )
{
ClearPlayerWantedLevel( playerid );
return 1;
}
#if defined AC_INCLUDED
hook OnPlayerDeathEx( playerid, killerid, reason, Float: damage, bodypart )
#else
hook OnPlayerDeath( playerid, killerid, reason )
#endif
{
ClearPlayerWantedLevel( playerid );
return 1;
}
/* ** Hooked Functions ** */
stock CNR_GetPlayerWantedLevel( playerid )
{
return p_WantedLevel[ playerid ]; // force the variable
}
#if defined _ALS_GetPlayerWantedLevel
#undef GetPlayerWantedLevel
#else
#define _ALS_GetPlayerWantedLevel
#endif
#define GetPlayerWantedLevel CNR_GetPlayerWantedLevel
stock CNR_SetPlayerWantedLevel( playerid, level )
{
if ( ( p_WantedLevel[ playerid ] = level ) < 0 ) // prevent negative wanted level
p_WantedLevel[ playerid ] = 0;
if ( p_WantedLevel[ playerid ] > 0 )
{
if ( IsPlayerSpawned( playerid ) )
{
PlayerTextDrawSetString( playerid, p_WantedLevelTD[ playerid ], sprintf( "] %d ]", p_WantedLevel[ playerid ] ) );
if ( ! IsPlayerMovieMode( playerid ) ) PlayerTextDrawShow( playerid, p_WantedLevelTD[ playerid ] );
ResetPlayerPassiveMode( playerid, .passive_disabled = true ); // remove passive mode if the player is wanted
}
}
else
{
PlayerTextDrawHide( playerid, p_WantedLevelTD[ playerid ] );
Uncuff( playerid ); // player is not wanted, so auto uncuff
}
// regulate player color
SetPlayerColorToTeam( playerid );
/*if ( p_WantedLevel[ playerid ] > 2000 ) { // 8hska7082bmahu
p_WantedLevel[ playerid ] = 2000;
SendClientMessageFormatted( playerid, -1, ""COL_GOLD"[WANTED LEVEL]{FFFFFF} Your wanted level has reached its maximum. Further wanted levels will not append.", wantedlevel, p_WantedLevel[ playerid ] );
format( szBigString, 256, "[0xA1] %s(%d) :: %d :: %d\r\n", ReturnPlayerName( playerid ), playerid, p_WantedLevel[ playerid ], g_iTime );
AddFileLogLine( "security.txt", szBigString );
return 1;
}*/
// set it to the variable value
return SetPlayerWantedLevel( playerid, p_WantedLevel[ playerid ] );
}
#if defined _ALS_SetPlayerWantedLevel
#undef SetPlayerWantedLevel
#else
#define _ALS_SetPlayerWantedLevel
#endif
#define SetPlayerWantedLevel CNR_SetPlayerWantedLevel
/* ** Functions ** */
stock GivePlayerWantedLevel( playerid, level )
{
if ( ! IsPlayerConnected( playerid ) || IsPlayerNPC( playerid ) || IsPlayerJailed( playerid ) || level == 0 )
return 0;
new
current_wanted = GetPlayerWantedLevel( playerid );
SendClientMessageFormatted( playerid, -1, ""COL_GOLD"[CRIME]{FFFFFF} Your wanted level has been %s by %d! Wanted level: %d", current_wanted + level > current_wanted ? ( "increased" ) : ( "decreased" ), level < 0 ? level * -1 : level, current_wanted );
return SetPlayerWantedLevel( playerid, current_wanted + level );
}
stock ClearPlayerWantedLevel( playerid )
{
PlayerTextDrawHide( playerid, p_WantedLevelTD[ playerid ] );
p_WantedLevel[ playerid ] = 0;
SetPlayerWantedLevel( playerid, 0 );
SetPlayerColorToTeam( playerid );
}

View File

@ -1901,7 +1901,6 @@ public OnPlayerConnect( playerid )
mysql_function_query( dbHandle, Query, true, "OnPlayerBanCheck", "i", playerid );
TogglePlayerClock( playerid, 1 );
ClearPlayerWantedLevel( playerid );
SetPlayerColor( playerid, COLOR_GREY );
ResetPlayerCash( playerid );
@ -2260,7 +2259,6 @@ public OnPlayerDisconnect( playerid, reason )
DestroyDynamicRaceCP( p_MiningExport[ playerid ] );
p_MiningExport[ playerid ] = 0xFFFF;
p_ContractedAmount[ playerid ] = 0;
ClearPlayerWantedLevel( playerid );
Delete3DTextLabel( p_InfoLabel[ playerid ] );
p_InfoLabel[ playerid ] = Text3D: INVALID_3DTEXT_ID;
p_LabelColor[ playerid ] = COLOR_GREY;
@ -2412,12 +2410,12 @@ public OnPlayerSpawn( playerid )
// Show welcome messsage
ShowPlayerHelpDialog( playerid, 10000, "Welcome %s!~n~~n~If you have any questions, ~g~/ask!~w~~h~~n~~n~If you see anyone being unfair, report them with ~r~/report!~w~~n~~n~Have fun playing and don't forget to invite your friends! :)", ReturnPlayerName( playerid ) );
}
else
/*else
{
// Reset wanted level when a player spawns
if ( p_LastPlayerState{ playerid } != PLAYER_STATE_SPECTATING )
ClearPlayerWantedLevel( playerid );
}
}*/
if ( p_Jailed{ playerid } ) // Because some people can still exit the jail and play...
return SetPlayerHealth( playerid, INVALID_PLAYER_ID ), SetPlayerPosToPrison( playerid );
@ -3253,8 +3251,6 @@ public OnPlayerDeath( playerid, killerid, reason )
p_Deaths[ playerid ] ++; // Usually other events do nothing
GivePlayerSeasonalXP( playerid, -10.0 ); // Deduct points, it's meant to be hard!!!
}
ClearPlayerWantedLevel( playerid );
return 1;
}
@ -8916,7 +8912,6 @@ public OnPlayerStateChange(playerid, newstate, oldstate)
p_LastPlayerState{ playerid } = oldstate;
if ( oldstate == PLAYER_STATE_SPECTATING )
{
ResetPlayerWeapons( playerid );
@ -10131,7 +10126,11 @@ thread OnAttemptPlayerLogin( playerid, password[ ] )
SetPlayerCash ( playerid, iCash );
SetPlayerScore ( playerid, iScore );
SetPlayerFightingStyle ( playerid, iFightStyle );
GivePlayerWantedLevel ( playerid, iWanted, true );
if ( iWanted ) {
SetPlayerWantedLevel( playerid, iWanted );
SendClientMessageFormatted( playerid, -1, ""COL_GOLD"[RESUME]{FFFFFF} Your wanted level has been set to %d as you are resuming your life.", GetPlayerWantedLevel( playerid ) );
}
p_AdminLevel[ playerid ] = cache_get_field_content_int( 0, "ADMINLEVEL", dbHandle );
p_BankMoney[ playerid ] = cache_get_field_content_int( 0, "BANKMONEY", dbHandle );
@ -13556,71 +13555,6 @@ stock IsPlayerInPoliceCar( playerid )
return false;
}
stock GivePlayerWantedLevel( playerid, wantedlevel, bool:loadingstats = false )
{
static
szWanted[ 12 ];
if ( ! IsPlayerConnected( playerid ) || IsPlayerNPC( playerid ) )
return 0;
if ( IsPlayerJailed( playerid ) )
{
SendClientMessageFormatted( playerid, -1, ""COL_GOLD"[WANTED LEVEL]{FFFFFF} As you're jailed, wanted levels will not append.", wantedlevel, p_WantedLevel[ playerid ] );
return 1;
}
if ( wantedlevel == 0 )
return 0;
if ( ( p_WantedLevel[ playerid ] += wantedlevel ) < 0 )
p_WantedLevel[ playerid ] = 0; // Negative wanted level?
if ( ( wantedlevel < 0 && p_WantedLevel[ playerid ] < 6 ) || wantedlevel > 0 )
SetPlayerWantedLevel( playerid, p_WantedLevel[ playerid ] );
if ( p_WantedLevel[ playerid ] > 0 )
{
if ( IsPlayerSpawned( playerid ) )
{
format( szWanted, sizeof( szWanted ), "] %d ]", p_WantedLevel[ playerid ] );
PlayerTextDrawSetString( playerid, p_WantedLevelTD[ playerid ], szWanted );
if ( ! p_inMovieMode{ playerid } ) PlayerTextDrawShow( playerid, p_WantedLevelTD[ playerid ] );
ResetPlayerPassiveMode( playerid, .passive_disabled = true ); // remove passive mode if the player is wanted
}
}
else
{
PlayerTextDrawHide( playerid, p_WantedLevelTD[ playerid ] );
Uncuff( playerid );
}
// regulate player color
SetPlayerColorToTeam( playerid );
/*if ( p_WantedLevel[ playerid ] > 2000 ) // 8hska7082bmahu
{
p_WantedLevel[ playerid ] = 2000;
SendClientMessageFormatted( playerid, -1, ""COL_GOLD"[WANTED LEVEL]{FFFFFF} Your wanted level has reached its maximum. Further wanted levels will not append.", wantedlevel, p_WantedLevel[ playerid ] );
format( szBigString, 256, "[0xA1] %s(%d) :: %d :: %d\r\n", ReturnPlayerName( playerid ), playerid, p_WantedLevel[ playerid ], g_iTime );
AddFileLogLine( "security.txt", szBigString );
return 1;
}*/
if ( !loadingstats ) SendClientMessageFormatted( playerid, -1, ""COL_GOLD"[CRIME]{FFFFFF} Your wanted level has been modified by %d! Wanted level: %d", wantedlevel, p_WantedLevel[ playerid ] );
else SendClientMessageFormatted( playerid, -1, ""COL_GOLD"[RESUME]{FFFFFF} Your wanted level has been set to %d as you are resuming your life.", p_WantedLevel[ playerid ] );
return 1;
}
stock ClearPlayerWantedLevel( playerid )
{
PlayerTextDrawHide( playerid, p_WantedLevelTD[ playerid ] );
p_WantedLevel[ playerid ] = 0;
SetPlayerWantedLevel( playerid, 0 );
SetPlayerColorToTeam( playerid );
}
stock IsWeaponBanned( weaponid ) {
return 0 <= weaponid < MAX_WEAPONS && ( weaponid == 36 || weaponid == 37 || weaponid == 38 || weaponid == 39 || weaponid == 44 || weaponid == 45 );
}