diff --git a/gamemodes/irresistible/README.md b/gamemodes/irresistible/README.md index 63d5a42..b853d9c 100644 --- a/gamemodes/irresistible/README.md +++ b/gamemodes/irresistible/README.md @@ -7,16 +7,16 @@ ### Script Callbacks -- `public SetPlayerRandomSpawn( playerid )` +- `SetPlayerRandomSpawn( playerid )` - Called when a player is attempting to be respawned somewhere randomly -- `public OnServerUpdate( )` +- `OnServerUpdate( )` - Called every second (or sooner) indefinitely -- `public OnServerTickSecond( )` +- `OnServerTickSecond( )` - Called every second (specifically) indefinitely -- `public OnPlayerUpdateEx( playerid )` +- `OnPlayerUpdateEx( playerid )` - Same interval as OnServerUpdate, but it is called indefinitely for every player in-game - When you wish to update something frequently, but not use OnPlayerUpdate -- `public OnPlayerTickSecond( playerid )` +- `OnPlayerTickSecond( playerid )` - Called every second (specifically a second) for a player, indefinitely - `OnServerGameDayEnd( )` - Called every 24 minutes in-game (basically when a new day starts) diff --git a/gamemodes/irresistible/cnr/discord/discord_relay.pwn b/gamemodes/irresistible/cnr/discord/discord_relay.pwn index 2d21272..78cc438 100644 --- a/gamemodes/irresistible/cnr/discord/discord_relay.pwn +++ b/gamemodes/irresistible/cnr/discord/discord_relay.pwn @@ -22,6 +22,9 @@ #define DISCORD_ROLE_VIP "191180697547833344" #define DISCORD_ROLE_VOICE "364678874681966592" +/* ** Macros ** */ +#define DQCMD:%1(%2) forward discord_%1(%2); public discord_%1(%2) + /* ** Variables ** */ new stock DCC_Guild: discordGuild, diff --git a/gamemodes/irresistible/cnr/entrances.pwn b/gamemodes/irresistible/cnr/entrances.pwn index 512d7ce..b1d4044 100644 --- a/gamemodes/irresistible/cnr/entrances.pwn +++ b/gamemodes/irresistible/cnr/entrances.pwn @@ -11,6 +11,9 @@ /* ** Definitions ** */ #define MAX_ENTERS ( 300 ) +/* ** Macros ** */ +#define IsPlayerInEntrance(%0,%1) ( p_LastEnteredEntrance[ %0 ] == ( %1 ) ) + /* ** Variables ** */ enum E_ENTER_DATA { @@ -30,6 +33,9 @@ new g_VIPLounge[ 3 ] = { -1, ... } ; +/* ** Forwards ** */ +forward OnPlayerAccessEntrance( playerid, entranceid, worldid, interiorid ); + /* ** Hooks ** */ hook OnScriptInit( ) { diff --git a/gamemodes/irresistible/cnr/features/cop/jail.pwn b/gamemodes/irresistible/cnr/features/cop/jail.pwn index 8df5d78..1e052e5 100644 --- a/gamemodes/irresistible/cnr/features/cop/jail.pwn +++ b/gamemodes/irresistible/cnr/features/cop/jail.pwn @@ -34,7 +34,8 @@ static stock p_JailObjectLS [ MAX_PLAYERS ] [ 3 ], p_AlcatrazObject [ MAX_PLAYERS ] = { INVALID_OBJECT_ID, ... }, p_AlcatrazEscapeTS [ MAX_PLAYERS ], - g_alcatrazTimestamp = 0 + g_alcatrazTimestamp = 0, + g_AlcatrazArea = -1 ; /* ** Forwards ** */ @@ -42,6 +43,13 @@ forward OnPlayerJailed( playerid ); forward OnPlayerUnjailed( playerid, reasonid ); /* ** Hooks ** */ +hook OnScriptInit( ) +{ + // Alcatraz + g_AlcatrazArea = CreateDynamicRectangle( -1921.6816, 1661.7448, -2172.4653, 1876.0469 ); + return 1; +} + hook OnPlayerEnterDynamicCP( playerid, checkpointid ) { if ( IsPlayerJailed( playerid ) ) { return SendError( playerid, "You're jailed, and you accessed a checkpoint. I smell a cheater." ), KickPlayerTimed( playerid ), Y_HOOKS_BREAK_RETURN_1; diff --git a/gamemodes/irresistible/cnr/features/gangs/gangs.pwn b/gamemodes/irresistible/cnr/features/gangs/gangs.pwn index 7b8b097..ce9f7f2 100644 --- a/gamemodes/irresistible/cnr/features/gangs/gangs.pwn +++ b/gamemodes/irresistible/cnr/features/gangs/gangs.pwn @@ -18,8 +18,8 @@ #define IsGangPrivate(%0) ( g_gangData[ %0 ] [ E_INVITE_ONLY ] ) #define GetGangSqlID(%0) ( g_gangData[ %0 ] [ E_SQL_ID ] ) #define GetPlayerGang(%0) ( p_GangID[ %0 ] ) - -#define IsValidGangID(%0) (0 <= %0 < MAX_GANGS && Iter_Contains(gangs, %0)) +#define IsValidGangID(%0) ( 0 <= %0 < MAX_GANGS && Iter_Contains( gangs, %0 ) ) +#define IsPlayerInPlayerGang(%0,%1) ( p_Class[ %0 ] == p_Class[ %1 ] && p_Class[ %0 ] == CLASS_CIVILIAN && p_GangID[ %0 ] == p_GangID[ %1 ] && p_GangID[ %0 ] != INVALID_GANG_ID ) /* ** Variables ** */ enum e_gang_data diff --git a/gamemodes/irresistible/cnr/features/paintball.pwn b/gamemodes/irresistible/cnr/features/paintball.pwn index 1f6bb50..54b10a4 100644 --- a/gamemodes/irresistible/cnr/features/paintball.pwn +++ b/gamemodes/irresistible/cnr/features/paintball.pwn @@ -9,15 +9,9 @@ #include < YSI\y_hooks > /* ** Definitions ** */ - #define MAX_PAINTBALL_ARENAS ( 6 ) -/* ** Macros ** */ -#define SendClientMessageToPaintball(%0,%1,%2,%3) \ - do{foreach(new fI : Player){if (p_inPaintBall{fI}&&p_PaintBallArena{fI}==(%0))format(szNormalString,sizeof(szNormalString),(%2),%3),SendClientMessage(fI,(%1),szNormalString);}}while(False) - /* ** Variables ** */ - enum E_PAINTBALL_DATA { E_NAME[ 16 ], E_HOST, E_PASSWORD[ 5 ], @@ -58,7 +52,6 @@ new ; /* ** Hooks ** */ - #if defined AC_INCLUDED hook OnPlayerDeathEx( playerid, killerid, reason, Float: damage, bodypart ) #else @@ -329,8 +322,108 @@ hook OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) return 1; } -/* ** Functions ** */ +/* ** Commands ** */ +CMD:pb( playerid, params[ ] ) return cmd_paintball( playerid, params ); +CMD:paintball( playerid, params[ ] ) +{ + if ( !IsPlayerInPaintBall( playerid ) ) + return SendError( playerid, "You're not in any paintball lobby." ); + if ( strmatch( params, "leave" ) ) + { + if ( !IsPlayerInPaintBall( playerid ) ) + return SendError( playerid, "You're not inside the paintball." ); + + LeavePlayerPaintball( playerid ); + SetPlayerHealth( playerid, -1 ); + SendServerMessage( playerid, "You have left the paintball arena." ); + return 1; + } + + if ( !hasPaintBallArena( playerid ) ) + return SendError( playerid, "This command requires you to be the host of a lobby." ); + + new + id = p_PaintBallArena{ playerid }, + pID + ; + + if ( strmatch( params, "edit" ) ) + { + showPaintBallLobbyData( playerid, id, "Close" ); + } + else if ( !strcmp( params, "kick", false, 4 ) ) + { + if ( sscanf( params[ 5 ], "u", pID ) ) return SendUsage( playerid, "/paintball kick [PLAYER_ID]" ); + else if ( !IsPlayerConnected( pID ) ) return SendError( playerid, "This player is not connected." ); + else if ( !IsPlayerInPaintBall( pID ) ) return SendError( playerid, "This player is not in paintball." ); + else if ( p_PaintBallArena{ pID } != id ) return SendError( playerid, "This player is not in your paintball lobby." ); + else if ( pID == playerid ) return SendError( playerid, "You cannot kick yourself." ); + else + { + SendClientMessageToPaintball( id, -1, ""COL_GREY"[PAINTBALL]"COL_WHITE" %s(%d) has left the lobby (KICKED)", ReturnPlayerName( pID ), pID ); + LeavePlayerPaintball( pID ); + SetPlayerHealth( pID, -1 ); + } + } + else if ( !strcmp( params, "leader", false, 6 ) ) + { + if ( sscanf( params[ 7 ], "u", pID ) ) return SendUsage( playerid, "/paintball paintball [PLAYER_ID]" ); + else if ( !IsPlayerConnected( pID ) ) return SendError( playerid, "This player is not connected." ); + else if ( !IsPlayerInPaintBall( pID ) ) return SendError( playerid, "This player is not in paintball." ); + else if ( p_PaintBallArena{ pID } != id ) return SendError( playerid, "This player is not in your paintball lobby." ); + else if ( pID == playerid ) return SendError( playerid, "You cannot apply this action to yourself." ); + else + { + g_paintballData[ id ] [ E_HOST ] = pID; + SendClientMessageToPaintball( id, -1, ""COL_GREY"[PAINTBALL]"COL_WHITE" %s(%d) is the new paintball leader.", ReturnPlayerName( pID ), pID ); + } + } + else if ( !strcmp( params, "countdown", false, 6 ) ) + { + new + iSeconds; + + if ( sscanf( params[ 10 ], "D(10)", iSeconds ) ) return SendUsage( playerid, "/paintball countdown [SECONDS]" ); + else if ( iSeconds < 1 || iSeconds > 30 ) return SendError( playerid, "Please specify countdown seconds between 1 and 30." ); + else + { + SendServerMessage( playerid, "You have started a countdown from %d in your paintball game.", iSeconds ); + + KillTimer( g_paintballData[ id ] [ E_CD_TIMER ] ); + g_paintballData[ id ] [ E_CD_TIMER ] = SetTimerEx( "paintballCountDown", 960, false, "dd", id, iSeconds - 1 ); + } + } + else + { + SendUsage( playerid, "/paintball [LEAVE/EDIT/KICK/COUNTDOWN/LEADER]" ); + } + return 1; +} + +CMD:p( playerid, params[ ] ) +{ + if ( !IsPlayerInPaintBall( playerid ) ) + return SendError( playerid, "You're not in any paintball lobby." ); + + new + id = p_PaintBallArena{ playerid }, + msg[ 90 ] + ; + + if ( sscanf( params, "s[90]", msg ) ) return SendUsage( playerid, "/p [MESSAGE]" ); + else if ( textContainsIP( msg ) ) return SendServerMessage( playerid, "Please do not advertise." ); + else if ( !g_paintballData[ id ] [ E_CHAT ] ) return SendError( playerid, "Paintball chat is disabled in this lobby." ); + else + { + SendClientMessageToPaintball( id, -1, ""COL_GREY" %s(%d):"COL_WHITE" %s", ReturnPlayerName( playerid ), playerid, msg ); + } + return 1; +} + +CMD:pleave( playerid, params[ ] ) return cmd_pb( playerid, "leave" ); + +/* ** Functions ** */ function paintballCountDown( paintballid, time ) { if ( paintballid == -1 ) @@ -571,104 +664,15 @@ stock IsPlayerLeavingPaintball( playerid ) { return p_LeftPaintball{ playerid }; } -/* ** Commands ** */ - -CMD:pb( playerid, params[ ] ) return cmd_paintball( playerid, params ); -CMD:paintball( playerid, params[ ] ) +stock SendClientMessageToPaintball( paintballid, colour, const format[ ], va_args<> ) { - if ( !IsPlayerInPaintBall( playerid ) ) - return SendError( playerid, "You're not in any paintball lobby." ); + static + out[ 144 ]; - if ( strmatch( params, "leave" ) ) - { - if ( !IsPlayerInPaintBall( playerid ) ) - return SendError( playerid, "You're not inside the paintball." ); + va_format( out, sizeof( out ), format, va_start<3> ); - LeavePlayerPaintball( playerid ); - SetPlayerHealth( playerid, -1 ); - SendServerMessage( playerid, "You have left the paintball arena." ); - return 1; - } - - if ( !hasPaintBallArena( playerid ) ) - return SendError( playerid, "This command requires you to be the host of a lobby." ); - - new - id = p_PaintBallArena{ playerid }, - pID - ; - - if ( strmatch( params, "edit" ) ) - { - showPaintBallLobbyData( playerid, id, "Close" ); - } - else if ( !strcmp( params, "kick", false, 4 ) ) - { - if ( sscanf( params[ 5 ], "u", pID ) ) return SendUsage( playerid, "/paintball kick [PLAYER_ID]" ); - else if ( !IsPlayerConnected( pID ) ) return SendError( playerid, "This player is not connected." ); - else if ( !IsPlayerInPaintBall( pID ) ) return SendError( playerid, "This player is not in paintball." ); - else if ( p_PaintBallArena{ pID } != id ) return SendError( playerid, "This player is not in your paintball lobby." ); - else if ( pID == playerid ) return SendError( playerid, "You cannot kick yourself." ); - else - { - SendClientMessageToPaintball( id, -1, ""COL_GREY"[PAINTBALL]"COL_WHITE" %s(%d) has left the lobby (KICKED)", ReturnPlayerName( pID ), pID ); - LeavePlayerPaintball( pID ); - SetPlayerHealth( pID, -1 ); - } - } - else if ( !strcmp( params, "leader", false, 6 ) ) - { - if ( sscanf( params[ 7 ], "u", pID ) ) return SendUsage( playerid, "/paintball paintball [PLAYER_ID]" ); - else if ( !IsPlayerConnected( pID ) ) return SendError( playerid, "This player is not connected." ); - else if ( !IsPlayerInPaintBall( pID ) ) return SendError( playerid, "This player is not in paintball." ); - else if ( p_PaintBallArena{ pID } != id ) return SendError( playerid, "This player is not in your paintball lobby." ); - else if ( pID == playerid ) return SendError( playerid, "You cannot apply this action to yourself." ); - else - { - g_paintballData[ id ] [ E_HOST ] = pID; - SendClientMessageToPaintball( id, -1, ""COL_GREY"[PAINTBALL]"COL_WHITE" %s(%d) is the new paintball leader.", ReturnPlayerName( pID ), pID ); - } - } - else if ( !strcmp( params, "countdown", false, 6 ) ) - { - new - iSeconds; - - if ( sscanf( params[ 10 ], "D(10)", iSeconds ) ) return SendUsage( playerid, "/paintball countdown [SECONDS]" ); - else if ( iSeconds < 1 || iSeconds > 30 ) return SendError( playerid, "Please specify countdown seconds between 1 and 30." ); - else - { - SendServerMessage( playerid, "You have started a countdown from %d in your paintball game.", iSeconds ); - - KillTimer( g_paintballData[ id ] [ E_CD_TIMER ] ); - g_paintballData[ id ] [ E_CD_TIMER ] = SetTimerEx( "paintballCountDown", 960, false, "dd", id, iSeconds - 1 ); - } - } - else - { - SendUsage( playerid, "/paintball [LEAVE/EDIT/KICK/COUNTDOWN/LEADER]" ); + foreach ( new i : Player ) if ( p_inPaintBall{ i } && p_PaintBallArena{ i } == paintballid ) { + SendClientMessage( i, colour, out ); } return 1; } - -CMD:p( playerid, params[ ] ) -{ - if ( !IsPlayerInPaintBall( playerid ) ) - return SendError( playerid, "You're not in any paintball lobby." ); - - new - id = p_PaintBallArena{ playerid }, - msg[ 90 ] - ; - - if ( sscanf( params, "s[90]", msg ) ) return SendUsage( playerid, "/p [MESSAGE]" ); - else if ( textContainsIP( msg ) ) return SendServerMessage( playerid, "Please do not advertise." ); - else if ( !g_paintballData[ id ] [ E_CHAT ] ) return SendError( playerid, "Paintball chat is disabled in this lobby." ); - else - { - SendClientMessageToPaintball( id, -1, ""COL_GREY" %s(%d):"COL_WHITE" %s", ReturnPlayerName( playerid ), playerid, msg ); - } - return 1; -} - -CMD:pleave( playerid, params[ ] ) return cmd_pb( playerid, "leave" ); diff --git a/gamemodes/irresistible/cnr/features/robbery/safes.pwn b/gamemodes/irresistible/cnr/features/robbery/safes.pwn index cac3c25..5bd59b1 100644 --- a/gamemodes/irresistible/cnr/features/robbery/safes.pwn +++ b/gamemodes/irresistible/cnr/features/robbery/safes.pwn @@ -18,6 +18,9 @@ #define STATE_ROBBED ( 1 ) #define STATE_PICKED ( 2 ) +/* ** Macros ** */ +#define IsPlayerRobbing(%0) ( p_UsingRobberySafe[ %0 ] != -1 ) + /* ** Variables ** */ enum E_ROBBERY_SYSTEM { @@ -137,7 +140,7 @@ hook OnProgressCompleted( playerid, progressid, params ) if ( progressid == PROGRESS_ROBBING ) { new - robberyid = params,//p_UsingRobberySafe[ playerid ], + robberyid = params, Float: distance = distanceFromSafe( playerid, robberyid ) ; diff --git a/gamemodes/irresistible/cnr/features/vip/coin_generation.pwn b/gamemodes/irresistible/cnr/features/vip/coin_generation.pwn index 1d7da56..fc770c3 100644 --- a/gamemodes/irresistible/cnr/features/vip/coin_generation.pwn +++ b/gamemodes/irresistible/cnr/features/vip/coin_generation.pwn @@ -89,6 +89,4 @@ hook OnPlayerLoadTextdraws( playerid ) { hook OnPlayerUnloadTextdraws( playerid ) { TextDrawHideForPlayer( playerid, g_NotManyPlayersTD ); return 1; -} - -/* ** Functions ** */ +} \ No newline at end of file diff --git a/gamemodes/irresistible/cnr/features/vip/coin_market.pwn b/gamemodes/irresistible/cnr/features/vip/coin_market.pwn index 4f9e6cd..67fd5c9 100644 --- a/gamemodes/irresistible/cnr/features/vip/coin_market.pwn +++ b/gamemodes/irresistible/cnr/features/vip/coin_market.pwn @@ -794,9 +794,21 @@ static stock ShowPlayerVipRedeemedDialog( playerid ) ShowPlayerDialog( playerid, DIALOG_NULL, DIALOG_STYLE_MSGBOX, ""COL_GOLD"SF-CNR Donation", szLargeString, "Got it!", "" ); } +stock SendClientMessageToVips( colour, const format[ ], va_args<> ) +{ + static + out[ 144 ]; + + va_format( out, sizeof( out ), format, va_start<2> ); + + foreach ( new i : Player ) if ( p_VIPLevel[ i ] >= VIP_REGULAR ) { + SendClientMessage( i, colour, out ); + } + return 1; +} + stock IsPlayerPlatinumVIP( playerid ) return p_VIPLevel[ playerid ] >= VIP_PLATINUM; -/* ** Macros ** */ stock Float: GetPlayerIrresistibleCoins( playerid ) { return p_IrresistibleCoins[ playerid ]; } @@ -816,4 +828,4 @@ stock SetPlayerIrresistibleCoins( playerid, Float: amount ) { stock SetPlayerExtraSlots( playerid, slots ) { p_ExtraAssetSlots{ playerid } = slots; -} \ No newline at end of file +} diff --git a/gamemodes/irresistible/cnr/global.pwn b/gamemodes/irresistible/cnr/global.pwn index 3cd5428..e7e3691 100644 --- a/gamemodes/irresistible/cnr/global.pwn +++ b/gamemodes/irresistible/cnr/global.pwn @@ -33,8 +33,7 @@ new bool: g_VipPrivateMsging = false, g_iTime = 0, g_VehicleLastAttacker [ MAX_VEHICLES ] = { INVALID_PLAYER_ID, ... }, - g_VehicleLastAttacked [ MAX_VEHICLES ], - g_AlcatrazArea = -1 + g_VehicleLastAttacked [ MAX_VEHICLES ] ; /* ** Getters and Setters ** */ diff --git a/gamemodes/irresistible/config/server.pwn b/gamemodes/irresistible/config/server.pwn index 061c1fa..bf4cb5f 100644 --- a/gamemodes/irresistible/config/server.pwn +++ b/gamemodes/irresistible/config/server.pwn @@ -30,16 +30,27 @@ /* ** Hooks ** */ hook OnScriptInit( ) { + // set server query information SetGameModeText( SERVER_MODE_TEXT ); - SetServerRule( "hostname", SERVER_NAME ); SetServerRule( "language", SERVER_LANGUAGE ); SetServerRule( "mapname", SERVER_MAP ); + // simple gameplay rules UsePlayerPedAnims( ); AllowInteriorWeapons( 0 ); EnableStuntBonusForAll( 0 ); DisableInteriorEnterExits( ); + + // enable mysql debugging on debug mode + #if defined DEBUG_MODE + mysql_log( LOG_ERROR | LOG_WARNING ); + #endif + + // start map andreas (if enabled) + #if defined MAP_ANDREAS_MODE_MINIMAL + MapAndreas_Init( MAP_ANDREAS_MODE_MINIMAL ); + #endif return 1; } diff --git a/gamemodes/irresistible/security.pwn b/gamemodes/irresistible/security.pwn index 04b047e..81ab293 100644 --- a/gamemodes/irresistible/security.pwn +++ b/gamemodes/irresistible/security.pwn @@ -12,6 +12,7 @@ #define GetServerName(%0) g_igServerNames[%0] #define ReturnPlayerIP(%0) (p_PlayerIP[(%0)]) #define ReturnPlayerName(%0) (p_PlayerName[(%0)]) +#define IsPlayerNpcEx(%0) (IsPlayerNPC(%0) || strmatch(p_PlayerIP[%0], "127.0.0.1")) /* ** Constants ** */ stock const diff --git a/gamemodes/sf-cnr.pwn b/gamemodes/sf-cnr.pwn index 7917f32..03443d9 100644 --- a/gamemodes/sf-cnr.pwn +++ b/gamemodes/sf-cnr.pwn @@ -16,7 +16,7 @@ //#pragma option -d3 #pragma dynamic 7200000 -#define DEBUG_MODE +// #define DEBUG_MODE #if defined DEBUG_MODE #pragma option -d3 @@ -51,30 +51,17 @@ native WP_Hash ( buffer[ ], len, const str[ ] ); native IsValidVehicle ( vehicleid ); native gpci ( playerid, serial[ ], len ); -new bool: False = false; - /* ** SF-CNR ** */ #include "irresistible\_main.pwn" /* ** Useful macros ** */ -#define DQCMD:%1(%2) forward discord_%1(%2); public discord_%1(%2) -#define IsPlayerRobbing(%0) IsPlayerAttachedObjectSlotUsed(%0,0) -#define hasTickcountPassed(%1,%2) ((GetTickCount()-%1)>(%2)) -#define Ach_Unlock(%0,%1) (%0 >= %1 ?("{6EF83C}"):("{FFFFFF}")) #define UpdatePlayerTime(%0) SetPlayerTime(%0,floatround(g_WorldClockSeconds/60),g_WorldClockSeconds-floatround((g_WorldClockSeconds/60)*60)) + +#define Ach_Unlock(%0,%1) (%0 >= %1 ?("{6EF83C}"):("{FFFFFF}")) #define Achievement:: ach_ -#define IsPlayerInEntrance(%0,%1) (p_LastEnteredEntrance[%0]==(%1)) -#define IsPlayerInPlayerGang(%0,%1) (p_Class[%0] == p_Class[%1] && p_Class[%0] == CLASS_CIVILIAN && p_GangID[%0] == p_GangID[%1] && p_GangID[%0] != INVALID_GANG_ID) -#define IsPlayerNpcEx(%0) (IsPlayerNPC(%0) || strmatch(p_PlayerIP[%0], "127.0.0.1")) - -/* Beast Functions */ -#define SendClientMessageToVips(%1,%2,%3) \ - do{foreach(new fI : Player){if (p_VIPLevel[fI]>=VIP_REGULAR)format(szNormalString,sizeof(szNormalString),(%2),%3),SendClientMessage(fI,(%1),szNormalString);}}while(False) - #define CreateBillboard(%0,%1,%2,%3,%4) SetDynamicObjectMaterialText(CreateDynamicObject(7246,%1,%2,%3,0,0,%4),0,(%0),120,"Arial",24,0,-1,-16777216,1) -#define MAX_WANTED_LVL 2048 #define MAX_TIME_TIED 180 #define MAX_VEH_ATTACHED_OBJECTS 2 @@ -83,7 +70,6 @@ new bool: False = false; public OnPlayerDriveVehicle( playerid, vehicleid ); public OnServerUpdateTimer( ); public OnServerSecondTick( ); -public OnPlayerAccessEntrance( playerid, entranceid, worldid, interiorid ); public OnPlayerLoadTextdraws( playerid ); public OnPlayerUnloadTextdraws( playerid ); @@ -94,13 +80,6 @@ main() public OnGameModeInit() { - #if defined DEBUG_MODE - mysql_log( LOG_ERROR | LOG_WARNING ); - #endif - - // start map andreas - MapAndreas_Init( MAP_ANDREAS_MODE_MINIMAL ); - /* ** Server Variables ** */ AddServerVariable( "doublexp", "0", GLOBAL_VARTYPE_INT ); AddServerVariable( "eventbank", "0", GLOBAL_VARTYPE_INT ); @@ -135,9 +114,6 @@ public OnGameModeInit() SetDynamicObjectMaterialText( CreateDynamicObject( 7301, -2418.657714, 743.686523, 1058.593750, 0.000000, 0.000000, -44.899974 ), 0, "Use /shop!", 120, "impact", 100, 0, -65536, 0, 1 ); SetDynamicObjectMaterialText( CreateDynamicObject( 19353, -1496.6134, 920.0287, 6.0990, 0.0, -90.0, -180 ), 0, "BANK", 100, "Times New Roman", 100, 0, -9170, 0, 1 ); - // Alcatraz - g_AlcatrazArea = CreateDynamicRectangle( -1921.6816, 1661.7448, -2172.4653, 1876.0469 ); - /* ** Pickups ** */ CreateDynamicPickup( 371, 2, -1745.2754, 59.301500, 866.4556 ); // Parachute @Veloxity @@ -1639,9 +1615,11 @@ public OnPlayerText( playerid, text[ ] ) if ( textContainsIP( text ) ) return SendServerMessage( playerid, "Please do not advertise." ), 0; - if ( !hasTickcountPassed( p_AntiTextSpam[ playerid ], 750 ) ) + new tick_count = GetTickCount( ); + + if ( p_AntiTextSpam[ playerid ] > tick_count ) { - p_AntiTextSpam[ playerid ] = GetTickCount( ); + p_AntiTextSpam[ playerid ] = tick_count + 750; p_AntiTextSpamCount{ playerid } ++; SendError( playerid, "You must wait 0.75 seconds before posting again. "COL_GREY"[%d/3]", p_AntiTextSpamCount{ playerid } ); @@ -1658,7 +1636,7 @@ public OnPlayerText( playerid, text[ ] ) SetPVarString( playerid, "last_message", text ); p_AntiTextSpamCount{ playerid } = 0; - p_AntiTextSpam[ playerid ] = GetTickCount( ); + p_AntiTextSpam[ playerid ] = tick_count + 750; if ( p_Muted{ playerid } ) { @@ -1827,13 +1805,19 @@ public OnPlayerCommandReceived(playerid, cmdtext[]) { if ( p_AdminLevel[ playerid ] < 6 && ! IsPlayerServerMaintainer( playerid ) ) { - if ( !hasTickcountPassed( p_AntiCommandSpam[ playerid ], 1000 ) ) + new + tick_count = GetTickCount( ); + + if ( p_AntiCommandSpam[ playerid ] > tick_count ) { - p_AntiCommandSpam[ playerid ] = GetTickCount( ); + p_AntiCommandSpam[ playerid ] = tick_count + 1000; SendError( playerid, "You must wait a second before submitting a command again." ); return 0; } - else p_AntiCommandSpam[ playerid ] = GetTickCount( ); + else + { + p_AntiCommandSpam[ playerid ] = tick_count + 1000; + } if ( !IsPlayerSpawned( playerid ) || GetPlayerState( playerid ) == PLAYER_STATE_WASTED ) return SendError( playerid, "You cannot use commands while you're not spawned." ), 0; } @@ -7290,7 +7274,7 @@ stock IsPlayerInMinigame( playerid ) { return IsPlayerInPaintBall( playerid ) || IsPlayerDueling( playerid ) || IsPlayerPlayingPool( playerid ) || IsPlayerPlayingPoker( playerid ); } -stock SendClientMessageToCops( colour, const format[ ], va_args<> ) // Conversion to foreach 14 stuffed the define, not sure how... +stock SendClientMessageToCops( colour, const format[ ], va_args<> ) { static out[ 144 ];