VIP v3.0
VIP v3.0
xxSPEEDYxx's
V.I.P System - NEW*
3 Levels
v3.0
COMMANDS - [v1.0]:
COMMANDS - [v2.0]:
#endif
//#define VIPS_SEND_COMMAND
*/
#define VIPS_SEND_COMMAND
/*
* This option is to show an information dialog, with player's VIP level.
If you want to dialog don't show, just make something like this:
//#define SHOW_LEVEL_DIALOG
*/
#define SHOW_LEVEL_DIALOG
/*
New Feature added in v3.0
* This option is for each player's VIP security. If you level this function
without comment, if the joined player don't have same IP with last player
what used his VIP level, a message will show for player, with this text:
"SERVER: For security reasons, your VIP level hasn't been loaded !"
//#define SECURITY
*/
#define SECURITY
/*
New feature added in v3.0
* If the filterscript dialogs confuse with other filterscript's or gamemode's
dialogs, just change the value from this define:
#define DIALOG_IDS
*/
#define DIALOG_IDS 4000
//====================================//
//============ [ Dialogs ] ===========//
#define MYLVL 4000 + DIALOG_IDS
#define VIPS 4000 + DIALOG_IDS
#define VIPCMDS 4000 + DIALOG_IDS
#define ONCONN 4000 + DIALOG_IDS
#define VSPA 4000 + DIALOG_IDS
//====================================//
//============= [ Level Check ] ======//
stock
bool:False = false
;
#define VipCheck(%0,%1)\
do{\
if(P_DATA[(%0)][Vip] < (%1)){\
new Str[128];\
format(Str, 128, "~r~~h~ERROR!~n~~w~You need to be V.I.P level
~y~~h~%d ~w~to use this command!", (%1));\
return GameTextForPlayer((%0), Str, 3000, 4);\
}\
}\
while(False)
//============= [ SPEC ] =============//
#define ADMIN_SPEC_TYPE_NONE (0)
#define ADMIN_SPEC_TYPE_PLAYER (1)
#define ADMIN_SPEC_TYPE_VEHICLE (2)
//=========== [ Shortcuts ] ==========//
#define Public:%0(%1) \
forward%0(%1); public%0(%1)
//====================================//
//========== [ News&Enums ] ==========//
enum pInfo
{
Vip,
SpecID,
SpecType,
God,
CarGod,
p_FavSkin,
p_IP[ 17 ]
};
if ( MySQLCheckConnection( ) == 0 )
{
print( "Please check your mysql connection!" );
return SendRconCommand( "rcon exit" );
}
return 1;
}
public OnFilterScriptExit( )
return mysql_close( );
format( gStr, 128, "UPDATE `vips` SET `level` = %d,`favskin` = %d WHERE `name`
= '%s'",
P_DATA[ playerid ][ Vip ], P_DATA[ playerid ][ p_FavSkin ],
PlayerName( playerid ) );
#else
mysql_function_query( 1, gStr, false, "", "" );
#endif
foreach(new i : Player)
if ( GetPlayerState( i ) == PLAYER_STATE_SPECTATING && P_DATA[ i ]
[ SpecID ] == playerid )
AdvanceSpectate( i );
return 1;
}
public OnPlayerDeath( playerid, killerid, reason )
{
foreach(new i : Player)
if ( GetPlayerState( i ) == PLAYER_STATE_SPECTATING && P_DATA[ i ]
[ SpecID ] == playerid )
AdvanceSpectate( i );
return 1;
}
public OnPlayerInteriorChange( playerid, newinteriorid, oldinteriorid )
{
new i = 0;
while( i != MAX_PLAYERS )
{
if ( IsPlayerConnected( i ) && GetPlayerState( i ) ==
PLAYER_STATE_SPECTATING && P_DATA[ i ][ SpecID ] == playerid && P_DATA[ i ]
[ SpecType ] == ADMIN_SPEC_TYPE_PLAYER )
{
SetPlayerInterior( i, newinteriorid );
}
i++;
}
}
public OnPlayerSpawn( playerid )
{
if ( P_DATA[ playerid ][ p_FavSkin ] != -1 )
SetPlayerSkin( playerid, P_DATA[ playerid ][ p_FavSkin ] );
return 1;
}
public OnPlayerKeyStateChange( playerid, newkeys, oldkeys )
{
if ( GetPlayerState( playerid ) == PLAYER_STATE_SPECTATING &&
P_DATA[ playerid ][ SpecID ] != INVALID_PLAYER_ID )
{
if ( newkeys == KEY_JUMP )
AdvanceSpectate( playerid );
switch( listitem )
{
case 0:
{
for ( new i = 0; i < 5; i++ )
if ( IsPlayerAttachedObjectSlotUsed( playerid,
i ) )
RemovePlayerAttachedObject( playerid,
i );
new
string[ 128 ],
giveplayerid,
level
;
if ( sscanf( params, "ud", giveplayerid, level ) )
return SendClientMessage( playerid, RED, "USAGE: {FFFF00}/setvip
[playerid] [level]" );
if ( giveplayerid == INVALID_PLAYER_ID )
return SendClientMessage( playerid, RED, "Player Is Not Connected!" );
VipCheck( playerid, 2 );
if ( IsPlayerConnected( PID ) )
return SendClientMessage( playerid, RED, "Player not connected or is
yourself!" );
GetPlayerPos( PID , x , y , z );
SetPlayerInterior( playerid , GetPlayerInterior( PID ) );
SetPlayerVirtualWorld( playerid , GetPlayerVirtualWorld( PID ) );
SpawnPlayer( playerid );
SendClientMessage( playerid, COLOR_VIP, "You have been respawmed!" );
#if defined VIPS_SEND_COMMAND
SendVipsCommand( playerid, "/spawnme" );
#endif
return 1;
}
CMD:vips( playerid, params[ ] )
{
new
V,
lsString[ 1024 ]
;
VipCheck( playerid, 1 );
VipCheck( playerid, 1 );
VipCheck( playerid, 1 );
if ( vw == 0 )
{
SetPlayerVirtualWorld( playerid, 0 );
return SendClientMessage( playerid, YELLOW, "You have returned back in
normal world( 0 )!" );
}
SetPlayerVirtualWorld( playerid, vw );
format( string, sizeof( string ), "You have set your Virtual World to
{E60000}%d", vw );
SendClientMessage( playerid, COLOR_VIP, string );
#if defined VIPS_SEND_COMMAND
SendVipsCommand( playerid, "/myvw" );
#endif
return 1;
}
CMD:vasay( playerid, params[ ] )
{
new VipMessage[ 180 ];
VipCheck( playerid, 2 );
SendPlayerMaxAmmo( playerid );
SendClientMessage( playerid, COLOR_VIP, "You have added {00FF00}Max
Ammo{FF5500} to your weapons!" );
#if defined VIPS_SEND_COMMAND
SendVipsCommand( playerid, "/MaxAmmo" );
#endif
return 1;
}
CMD:vweapons( playerid, params[ ] )
{
VipCheck( playerid, 2 );
VipCheck( playerid, 1 );
if ( !IsPlayerConnected( PID ) )
return SendClientMessage( playerid, RED, "ERROR: Player is not
connected!" );
StopSpectate( playerid );
SetTimerEx("ReturnPosition", 3000, 0, "d", playerid );
SendClientMessage( playerid, COLOR_VIP, "You have stop spectating" );
#if defined VIPS_SEND_COMMAND
SendVipsCommand( playerid, "/vspecoff" );
#endif
return 1;
}
CMD:vsaveskin( playerid, params[ ] )
{
VipCheck( playerid, 2 );
new
SkinID,
string[ 128 ]
;
if ( sscanf( params, "i", SkinID ) )
return SendClientMessage( playerid, RED, "USAGE: {FFFF00}/vsaveskin
[Current SkinID]" );
format( string, sizeof( string ), "You have successfully saved this skin (ID:
%d)", SkinID );
SendClientMessage( playerid, COLOR_VIP, string );
SendClientMessage( playerid, COLOR_VIP, "Type /dontuseskin for don't save
again this skin!" );
if ( Colour > 8 )
return SendClientMessage( playerid, RED, "Colours: 0 = Black | 1 =
White | 2 = Red | 3 = Orange | 4 = Yellow | 5 = Green | 6 = Blue | 7 = Purple | 8 =
Brown" );
switch ( Colour )
{
case 0: SetPlayerColor( playerid, 0x000000AA ), colour = "Black";
case 1: SetPlayerColor( playerid, 0xFFFFFFAA ), colour = "White";
case 2: SetPlayerColor( playerid, 0xE60000AA ), colour = "Red";
case 3: SetPlayerColor( playerid, 0xFF5500AA ), colour = "Orange";
case 4: SetPlayerColor( playerid, 0xFFFF00AA ), colour = "Yellow";
case 5: SetPlayerColor( playerid, 0x00FF00AA ), colour = "Green";
case 6: SetPlayerColor( playerid, 0x0000BBAA ), colour = "Blue";
case 7: SetPlayerColor( playerid, 0x800080AA ), colour = "Purple";
case 8: SetPlayerColor( playerid, 0xA52A2AAA ), colour = "Brown";
}
VipCheck( playerid, 3 );
if ( !IsPlayerConnected( PID ) )
return SendClientMessage( playerid, RED, "Player is not connected or is
yourself!" );
GetPlayerPos( playerid, x, y, z );
SetPlayerInterior( PID, GetPlayerInterior( playerid ) );
SetPlayerVirtualWorld( PID, GetPlayerVirtualWorld( playerid ) );
if ( GetPlayerState( PID ) == 2 )
{
new VehicleID = GetPlayerVehicleID( PID );
SetVehiclePos( VehicleID, x+3, y, z);
LinkVehicleToInterior( VehicleID, GetPlayerInterior( PID ) );
SetVehicleVirtualWorld( GetPlayerVehicleID( PID ),
GetPlayerVirtualWorld( PID ) );
format( string, sizeof( string ),"You have been teleported to V.I.P
{00FF00}%s's {FF5500}location", PlayerName( playerid ) );
SendClientMessage( PID, COLOR_VIP, string );
format( string, sizeof( string ),"You have teleported {00FF00}%s
{FF5500}to your location", PlayerName( PID ) );
SendClientMessage( playerid, COLOR_VIP, string );
#if defined VIPS_SEND_COMMAND
SendVipsCommand( playerid, "/vget" );
#endif
} else {
SetPlayerPos( PID, x+2, y, z );
#if defined VIPS_SEND_COMMAND
SendVipsCommand( playerid, "/vget" );
#endif
format( string, sizeof( string ),"You have been teleported to V.I.P
{00FF00}%s's {FF5500}location", PlayerName( playerid ) );
SendClientMessage( PID, COLOR_VIP, string );
format( string, sizeof( string ),"You have teleported {00FF00}%s
{FF5500}to your location", PlayerName( PID ) );
SendClientMessage( playerid, COLOR_VIP, string );
}
return 1;
}
CMD:vkick( playerid, params[ ] )
{
new string[ 128 ];
VipCheck( playerid, 3 );
if ( IsPlayerConnected( params[ 0 ] ) )
return SendClientMessage( playerid, RED, "Player is not connected !" );
if ( !strlen( params[ 1 ] ) )
{
format( string, sizeof( string ), "%s {FF5500}has been kicked by V.I.P
{00FF00}%s {FF5500}[no reason given]!",PlayerName( params[ 0 ] ),
PlayerName( playerid ) );
SendClientMessageToAll( GREEN, string );
Kick( params[ 0 ] );
}
else
{
format( string, sizeof( string ), "%s {FF5500}has been kicked by V.I.P
{00FF00}%s {FF5500}[reason: {00FF00%s{FF5500}] ", PlayerName( params[ 0 ] ),
PlayerName( playerid ), params[ 1 ] );
SendClientMessageToAll( GREEN, string );
Kick( params[ 0 ] );
}
VipCheck( playerid, 1 );
if ( IsPlayerInAnyVehicle( playerid ) )
return SendClientMessage( playerid, RED, "ERROR: You already have a
vehicle" );
VipCheck( playerid, 1 );
if ( IsPlayerInAnyVehicle( playerid ) )
return SendClientMessage( playerid, RED, "ERROR: You already have a
vehicle" );
VipCheck( playerid, 1 );
if ( IsPlayerInAnyVehicle( playerid ) )
return SendClientMessage( playerid, RED, "ERROR: You already have a
vehicle" );
VipCheck( playerid, 1 );
if ( IsPlayerInAnyVehicle( playerid ) )
return SendClientMessage( playerid, RED, "ERROR: You already have a
vehicle" );
VipCheck( playerid, 1 );
if ( IsPlayerInAnyVehicle( playerid ) )
return SendClientMessage( playerid, RED, "ERROR: You already have a
vehicle" );
VipCheck( playerid, 1 );
if ( IsPlayerInAnyVehicle( playerid ) )
return SendClientMessage( playerid, RED, "ERROR: You already have a
vehicle" );
if ( IsPlayerInAnyVehicle( playerid ) )
return SendClientMessage( playerid, RED, "ERROR: You already have a
vehicle" );
VipCheck( playerid, 1 );
if ( IsPlayerInAnyVehicle( playerid ) )
return SendClientMessage( playerid, RED, "ERROR: You already have a
vehicle" );
VipCheck( playerid, 1 );
if ( IsPlayerInAnyVehicle( playerid ) )
return SendClientMessage( playerid, RED, "ERROR: You already have a
vehicle" );
VipCheck( playerid, 1 );
if ( IsPlayerInAnyVehicle( playerid ) )
return SendClientMessage( playerid, RED, "ERROR: You already have a
vehicle" );
VipCheck( playerid, 1 );
if ( IsPlayerInAnyVehicle( playerid ) )
return SendClientMessage( playerid, RED, "ERROR: You already have a
vehicle" );
VipCheck( playerid, 1 );
if ( IsPlayerInAnyVehicle( playerid ) )
return SendClientMessage( playerid, RED, "ERROR: You already have a
vehicle" );
VipCheck( playerid, 1 );
if ( IsPlayerInAnyVehicle( playerid ) )
return SendClientMessage( playerid, RED, "ERROR: You already have a
vehicle" );
GetPlayerPos( playerid, x, y, z );
GetPlayerFacingAngle( playerid, Angle );
carid = CreateVehicle( 562, x, y, z, Angle, 1, -1, -1 );
PutPlayerInVehicle( playerid, carid, 0 );
AddVehicleComponent( carid, 1034 ); AddVehicleComponent( carid, 1038 );
AddVehicleComponent( carid, 1147 );
AddVehicleComponent( carid, 1010 ); AddVehicleComponent( carid, 1073 );
ChangeVehiclePaintjob( carid, 0 );
SetVehicleVirtualWorld( carid, GetPlayerVirtualWorld( playerid ) );
LinkVehicleToInterior( carid, GetPlayerInterior( playerid ) );
return 1;
}
CMD:vcar( playerid, params[ ] )
{
new Float:x, Float:y, Float:z, Float:Angle, carid;
VipCheck( playerid, 1 );
if ( IsPlayerInAnyVehicle( playerid ) )
return SendClientMessage( playerid, RED, "ERROR: You already have a
vehicle" );
GetPlayerPos( playerid, x, y, z );
GetPlayerFacingAngle( playerid, Angle );
carid = CreateVehicle( 402, x, y, z, Angle, 0, 0, 0 ); // Car: Buffalo
PutPlayerInVehicle( playerid, carid, 0 );
SetVehicleVirtualWorld( carid, GetPlayerVirtualWorld( playerid ) );
LinkVehicleToInterior( carid, GetPlayerInterior( playerid ) );
//Source: http://wiki.sa-mp.com/wiki/Vehicles:All
return 1;
}
CMD:vannounce( playerid, params[ ] )
{
VipCheck( playerid, 1 );
new datas[ 2 ];
cache_get_data( datas[ 0 ], datas[ 1 ] );
if ( !datas[ 0 ] )
{
#if defined SHOW_LEVEL_DIALOG
ShowPlayerDialog( playerid, ONCONN+1, DIALOG_STYLE_MSGBOX,
"{00FF00}V.I.P", "{E60000}This username have V.I.P level 0", "Quit", "" );
#endif
#endif
return 1;
}
Public: SendVipMessage( color, const string[ ] )
{
foreach(new i : Player)
if ( P_DATA[ i ][ Vip ] >= 1 )
SendClientMessage( i, color, string );
return 1;
}
Public: ReturnPosition( playerid )
{
SetPlayerPos( playerid, Position[ playerid ][ 0 ], Position[ playerid ][ 1 ],
Position[ playerid ][ 2 ] );
SetPlayerFacingAngle( playerid, Position[ playerid ][ 3 ] );
}
Public: GodUpdate( )
{
new Float:v_Health;
foreach(new i : Player)
{
if ( P_DATA[ i ][ CarGod ] == 1 )
{
if ( IsPlayerInAnyVehicle( i ) )
{
new vid = GetPlayerVehicleID( i );
//Stocks
stock PlayerName( i )
{
new n[ 24 ];
GetPlayerName( i, n, 24 );
return n;
}
stock GetIP( i )
{
new ip[ 17 ];
GetPlayerIp( i, ip, 17 );
return ip;
}
stock SpectatePlayer( playerid, PID )
{
new Float:health, Float:armour;
foreach(new i : Player)
if ( GetPlayerState( i ) == PLAYER_STATE_SPECTATING && P_DATA[ i ]
[ SpecID ] == playerid )
AdvanceSpectate( i );
if ( IsPlayerInAnyVehicle( PID ) )
{
PlayerSpectateVehicle( playerid, GetPlayerVehicleID( PID ) );
P_DATA[ playerid ][ SpecID ] = PID;
P_DATA[ playerid ][ SpecType ] = ADMIN_SPEC_TYPE_VEHICLE;
}
else
{
PlayerSpectatePlayer( playerid, PID );
P_DATA[ playerid ][ SpecID ] = PID;
P_DATA[ playerid ][ SpecType ] = ADMIN_SPEC_TYPE_PLAYER;
}
foreach(new i : Player)
Connected++;
return Connected;
}
break;
}
}
}
return 1;
}
stock SendPlayerMaxAmmo( playerid )
{
new slot, weap, ammo;
}
return 1;
}
stock IsValidWeapon( weaponid )
{
if ( weaponid > 0 && weaponid < 19 || weaponid > 21 && weaponid < 47 )
return 1;
return 0;
}
stock MySQLCheckConnection( )
{
if ( mysql_ping( ) != 1 )
return 0;
else
return 1;
}