Useful Functions

EDIT: I decided to edit my post, also adding SetVehicleLocalXYVelocity (I know it has been done plenty of times before under other names but I made this one to be used with GetVehicleLocalXYVelocity, this mean that it is in some way different from other functions of its type, letting you set X and Y local velocity at the same time, instead of just forward/backward as it commonly is).

Functions:

Код:
stock SetVehicleLocalXYVelocity(vehicleid, Float:VelocityX, Float:VelocityY)
{
	// FUNCTION: Set the local XY velocity of the specified vehicle (velocity relative to its Z rotation angle).
	new Float:VSpeed[3], Float:VRotZ;
	GetVehicleVelocity(vehicleid, VSpeed[0], VSpeed[1], VSpeed[2]);
	GetVehicleZAngle(vehicleid, VRotZ);
	// Optimized, thanks to Nero_3D.
	SetVehicleVelocity(vehicleid, floatcos(VRotZ, degrees) * VelocityX - floatsin(VRotZ, degrees) * VelocityY, floatsin(VRotZ, degrees) * VelocityX + floatcos(VRotZ, degrees) * VelocityY, VSpeed[2]);
	return 1;
}

stock GetVehicleLocalXYVelocity(vehicleid, &Float:VelocityX, &Float:VelocityY)
{
	// FUNCTION: Get the local XY velocity of the specified vehicle (velocity relative to its Z rotation angle).
	new Float:VSpeed[3], Float:VRotZ;
	GetVehicleVelocity(vehicleid, VSpeed[0], VSpeed[1], VSpeed[2]);
	GetVehicleZAngle(vehicleid, VRotZ);
	// Optimized, thanks to Nero_3D.
	VelocityX = floatsin(VRotZ, degrees) * VSpeed[1] + floatcos(VRotZ, degrees) * VSpeed[0];
	VelocityY = floatcos(VRotZ, degrees) * VSpeed[1] - floatsin(VRotZ, degrees) * VSpeed[0];
	return 1;
}
With these functions you can set and get how fast the vehicle is going forward/backward and on the sides, might be useful for drift calculations and other vehicle velocity related scripts. Using both together you can have precise velocity control based on the vehicle's Z rotation angle.

Example:

Код:
stock VehicleSpeedboost(vehicleid, Float:BoostSpeed)
{
	// Boost the vehicle forward (local Y velocity) while cancelling it's side speed (local X velocity).
	// This also maintains the vehicle's original forward speed, which means the vehicle will go faster every time it is used.
	// Using a negative BoostSpeed will boost the vehicle backward.
	new Float:VLocalSpeed[2];
	GetVehicleLocalXYVelocity(vehicleid, VLocalSpeed[0], VLocalSpeed[1]);
	SetVehicleLocalXYVelocity(vehicleid, 0.0, VLocalSpeed[1] + BoostSpeed);
	return 1;
}
Yes, simple as that! Enjoy.

EDIT2: Functions optimized, thanks to Nero_3D.
Reply

Here's a short function to change seconds to minutes, there are probably much better ones but this does the job for me.
pawn Код:
formattime(seconds)//Thanks to Nero_3D
{
    new vstr[8], minutes = seconds / 60;
    format(vstr, sizeof(vstr), "%02d:%02d", minutes, seconds - (minutes * 60));
    return vstr;
}
Reply

Quote:
Originally Posted by xVIP3Rx
Посмотреть сообщение
Here's a short function to change seconds to minutes, there are probably much better ones but this does the job for me.
pawn Код:
vformattime(seconds)
{
    new vstr[8], minutes = floatround(seconds / 60, floatround_floor);
    format(vstr, sizeof(vstr), "%02d:%02d", minutes, seconds - (minutes * 60));
    return vstr;
}
Technically "seconds / 60" is not a float. So whatever "seconds / 60" is, it will automatically be rounded to the nearest integer. You need to add ".0" to the "60".
Reply

Quote:
Originally Posted by Crayder
Посмотреть сообщение
Technically "seconds / 60" is not a float. So whatever "seconds / 60" is, it will automatically be rounded to the nearest integer. You need to add ".0" to the "60".
If that's correct, It wouldn't work for values like, 175 seconds, because 165 / 60 = 2.75;
if it gets rounded to the nearest it's gonna be 3 minutes and no seconds, which doesn't happen..
But maybe it would improve the efficiency of the code, and make it slightly faster, IF that's true..

Quote:
Originally Posted by Yashas
Посмотреть сообщение
12. Do not mix floats and integers in an expression
by Mauzen

Maybe this one is too simple, but I at least wanted to add it, as I see people doing that "mistake" very often.

Never mix up floats and integers (even if it does not give a tag mismatch warning). Always use the same datatypes in a single statement.

e.g.
pawn Код:
new Float:result = 2.0 + 1;

// Is compiled as
new Float:result = 2.0 + float(1);

// Which is significantly slower than
new Float:result = 2.0 + 1.0;
pawn Код:
new mindist = 10;
if (GetPlayerDistanceFromPoint(playerid, 237.9, 115.6, 1010.2) < mindist)

// Is compiled as
new mindist = 10;
if (GetPlayerDistanceFromPoint(playerid, 237.9, 115.6, 1010.2) < float(mindist))

// Which is significantly slower than
new Float:mindist = 10.0;
if (GetPlayerDistanceFromPoint(playerid, 237.9, 115.6, 1010.2) < mindist)
For complex mathematical tasks a simple .0 can make a speed difference of some percent.
Reply

Quote:
Originally Posted by xVIP3Rx
Посмотреть сообщение
If that's correct, It wouldn't work for values like, 175 seconds, because 165 / 60 = 2.75;
if it gets rounded to the nearest it's gonna be 3 minutes and no seconds, which doesn't happen..
But maybe it would improve the efficiency of the code, and make it slightly faster, IF that's true..
It doesn't get rounded or anything, the fractional part gets only cut off
Also if you have integer avoid float operations because they are slower
Reply

Quote:
Originally Posted by Nero_3D
Посмотреть сообщение
It doesn't get rounded or anything, the fractional part gets only cut off
Also if you have integer avoid float operations because they are slower
Right.., thanks.
Edited the function..
Reply

So use tag Float: in all and change 60 -> 60.0

new iMinutes = Time / 60
new iSeconds = Time % 60
Reply

The fastest IsValidSkin:


PHP код:
//By Emmet using define and avoiding 'return' instead which makes the function faster.
#define IsValidSkin(%0) (0 <= %0 <= 311) && %0 != 74 
PHP код:
 ConvertDateTimeToSecs(minuteshoursdaysyears);
 */
#define ConvertDateTimeToSecs(%0,%1,%2,%3) \
    
((%60)+(%3600) + (%86400) + (%31556952)) 
PHP код:
//By Tomohiko Sakamoto modified by me.
stock GetDayName(ymd)//y = year, m = month, d = day
{
    new 
DArray[7][10] = 
    {
        
"Sunday",
        
"Monday"
        
"Tuesday",
        
"Wednesday",
        
"Thursday",
        
"Friday",
        
"Saturday"
    
};
    new 
t[] = {032503514624};
    
-= _:(3);
    return 
DArray[((y/y/100 y/400 t[m-1] + d) % 7)];

Reply

To censor/hide partially/all email address username (not the domain) but still giving the same email address length. The way how it works is explained on the code comments.
Код:
stock CensorEmailAddress(const addr[], addr_len, addr_censored[], replace_char = '*', visible_chars = 1)
{
	new at_idx, idx = 0;
 	// Get the last @ symbol position
	while(idx < addr_len)
	{
	    if(addr[idx] == '@')
	    {
	        at_idx = idx;
	    }
	    else if(addr[idx] == '\0')
		{
			break; // It's end of string, go out
		}
	    idx++;
	}
	if(at_idx > 0 && visible_chars >= 0) // @ symbol is found or not the first character and make sure visible_chars is not negative
	{
	    while(idx >= at_idx) // Copy the characters after @ symbol
	    {
	        addr_censored[idx] = addr[idx];
	        idx--;
	    }
		idx = at_idx-1;
		while(idx >= visible_chars) // Only censor until visible characters from start
		{
			addr_censored[idx] = replace_char;
			idx--;
		}
		while(idx >= 0) // Now copy the visible first characters
		{
		    addr_censored[idx] = addr[idx];
		    idx--;
		}
		return 1;
	}
	return 0;
}
Params:
  • addr[] : the input string for email address
  • addr_len : the email address length
  • addr_censored[] : the output string for censored email address (any array to be stored/passed by reference)
  • replace_char : the character used to censor, default: '*'
  • visible_chars : the number of characters to be made visible (not censored/hidden) from start of the address, default: 1
Returns:
  • 0: The at (@) symbol is not found or it's only in the first character, no output given.
  • 1: The function is executed successfully, output of censored email address is given.
Examples:
Код:
new censored_email[128];
CensorEmailAddress("foobar@example.com", sizeof(email), censored_email);
printf("Email: %s", censored_email);
will give output:
Quote:

Email: f*****@example.com

Код:
new censored_email[128];
CensorEmailAddress("foobar@example.com", sizeof(email), censored_email, '?');
printf("Email: %s", censored_email);
will give output:
Quote:

Email: f?????@example.com

Код:
new censored_email[128];
CensorEmailAddress("foobar@example.com", sizeof(email), censored_email, .visible_chars = 3);
printf("Email: %s", censored_email);
will give output:
Quote:

Email: foo***@example.com

Well if you want to censor all, then set visible_chars to 0.
Код:
new censored_email[128];
CensorEmailAddress("foobar@example.com", sizeof(email), censored_email, .visible_chars = 0);
printf("Email: %s", censored_email);
will give output:
Quote:

Email: ******@example.com

Hope it will be useful :D, it's just a simple function though, it has no valid email address checking.
Reply

Just made this for my script:
PHP Code:
GetPlayerID(givenname[])
{
    new 
name[MAX_PLAYER_NAME];
    for(new 
0GetPlayerPoolSize(); <= tx++)
    {
        if(
IsPlayerConnected(x))
        {
            
GetPlayerName(xnameMAX_PLAYER_NAME);
            if(!
strcmp(givennamenamefalse)) return x;
        }
    }
    return 
INVALID_PLAYER_ID;

It returns the ID of the player who has the specified name, or INVALID_PLAYER_ID if player isn't found. The given name must match 100%.

Take this one too:
PHP Code:
GetName(playeridbool:us=false)
{
    new 
name[MAX_PLAYER_NAME];
    
GetPlayerName(playeridnameMAX_PLAYER_NAME);
    if(
us)
    {
        for(new 
0MAX_PLAYER_NAMEi++)
        {
            if(
name[i] == '_'name[i] = ' ';
        }
    }
    return 
name;

Returns the name of the player with the specified ID, if us is set to true it'll remove the underscores.
Reply

GetAnimIndexByName(animlib[], animname[]) function
Get Animation Index By Name

pawn Код:
static const AnimationsNames[1812][36] =
{
    "", "AIRPORT:THRW_BARL_THRW", "ATTRACTORS:STEPSIT_IN", "ATTRACTORS:STEPSIT_LOOP", "ATTRACTORS:STEPSIT_OUT",
    "BAR:BARCUSTOM_GET", "BAR:BARCUSTOM_LOOP", "BAR:BARCUSTOM_ORDER", "BAR:BARMAN_IDLE", "BAR:BARSERVE_BOTTLE",
    "BAR:BARSERVE_GIVE", "BAR:BARSERVE_GLASS", "BAR:BARSERVE_IN", "BAR:BARSERVE_LOOP", "BAR:BARSERVE_ORDER",
    "BAR:DNK_STNDF_LOOP", "BAR:DNK_STNDM_LOOP", "BASEBALL:BAT_1", "BASEBALL:BAT_2", "BASEBALL:BAT_3",
    "BASEBALL:BAT_4", "BASEBALL:BAT_BLOCK", "BASEBALL:BAT_HIT_1", "BASEBALL:BAT_HIT_2", "BASEBALL:BAT_HIT_3",
    "BASEBALL:BAT_IDLE", "BASEBALL:BAT_M", "BASEBALL:BAT_PART", "BD_FIRE:BD_FIRE1", "BD_FIRE:BD_FIRE2",
    "BD_FIRE:BD_FIRE3", "BD_FIRE:BD_GF_WAVE", "BD_FIRE:BD_PANIC_01", "BD_FIRE:BD_PANIC_02", "BD_FIRE:BD_PANIC_03",
    "BD_FIRE:BD_PANIC_04", "BD_FIRE:BD_PANIC_LOOP", "BD_FIRE:GRLFRD_KISS_03", "BD_FIRE:M_SMKLEAN_LOOP", "BD_FIRE:PLAYA_KISS_03",
    "BD_FIRE:WASH_UP", "BEACH:BATHER", "BEACH:LAY_BAC_LOOP", "BEACH:PARKSIT_M_LOOP", "BEACH:PARKSIT_W_LOOP",
    "BEACH:SITNWAIT_LOOP_W", "BENCHPRESS:GYM_BP_CELEBRATE", "BENCHPRESS:GYM_BP_DOWN", "BENCHPRESS:GYM_BP_GETOFF", "BENCHPRESS:GYM_BP_GETON",
    "BENCHPRESS:GYM_BP_UP_A", "BENCHPRESS:GYM_BP_UP_B", "BENCHPRESS:GYM_BP_UP_SMOOTH", "BF_INJECTION:BF_GETIN_LHS", "BF_INJECTION:BF_GETIN_RHS",
    "BF_INJECTION:BF_GETOUT_LHS", "BF_INJECTION:BF_GETOUT_RHS", "BIKED:BIKED_BACK", "BIKED:BIKED_DRIVEBYFT", "BIKED:BIKED_DRIVEBYLHS",
    "BIKED:BIKED_DRIVEBYRHS", "BIKED:BIKED_FWD", "BIKED:BIKED_GETOFFBACK", "BIKED:BIKED_GETOFFLHS", "BIKED:BIKED_GETOFFRHS",
    "BIKED:BIKED_HIT", "BIKED:BIKED_JUMPONL", "BIKED:BIKED_JUMPONR", "BIKED:BIKED_KICK", "BIKED:BIKED_LEFT",
    "BIKED:BIKED_PASSENGER", "BIKED:BIKED_PUSHES", "BIKED:BIKED_RIDE", "BIKED:BIKED_RIGHT", "BIKED:BIKED_SHUFFLE",
    "BIKED:BIKED_STILL", "BIKEH:BIKEH_BACK", "BIKEH:BIKEH_DRIVEBYFT", "BIKEH:BIKEH_DRIVEBYLHS", "BIKEH:BIKEH_DRIVEBYRHS",
    "BIKEH:BIKEH_FWD", "BIKEH:BIKEH_GETOFFBACK", "BIKEH:BIKEH_GETOFFLHS", "BIKEH:BIKEH_GETOFFRHS", "BIKEH:BIKEH_HIT",
    "BIKEH:BIKEH_JUMPONL", "BIKEH:BIKEH_JUMPONR", "BIKEH:BIKEH_KICK", "BIKEH:BIKEH_LEFT", "BIKEH:BIKEH_PASSENGER",
    "BIKEH:BIKEH_PUSHES", "BIKEH:BIKEH_RIDE", "BIKEH:BIKEH_RIGHT", "BIKEH:BIKEH_STILL", "BIKELEAP:BK_BLNCE_IN",
    "BIKELEAP:BK_BLNCE_OUT", "BIKELEAP:BK_JMP", "BIKELEAP:BK_RDY_IN", "BIKELEAP:BK_RDY_OUT", "BIKELEAP:STRUGGLE_CESAR",
    "BIKELEAP:STRUGGLE_DRIVER", "BIKELEAP:TRUCK_DRIVER", "BIKELEAP:TRUCK_GETIN", "BIKES:BIKES_BACK", "BIKES:BIKES_DRIVEBYFT",
    "BIKES:BIKES_DRIVEBYLHS", "BIKES:BIKES_DRIVEBYRHS", "BIKES:BIKES_FWD", "BIKES:BIKES_GETOFFBACK", "BIKES:BIKES_GETOFFLHS",
    "BIKES:BIKES_GETOFFRHS", "BIKES:BIKES_HIT", "BIKES:BIKES_JUMPONL", "BIKES:BIKES_JUMPONR", "BIKES:BIKES_KICK",
    "BIKES:BIKES_LEFT", "BIKES:BIKES_PASSENGER", "BIKES:BIKES_PUSHES", "BIKES:BIKES_RIDE", "BIKES:BIKES_RIGHT",
    "BIKES:BIKES_SNATCH_L", "BIKES:BIKES_SNATCH_R", "BIKES:BIKES_STILL", "BIKEV:BIKEV_BACK", "BIKEV:BIKEV_DRIVEBYFT",
    "BIKEV:BIKEV_DRIVEBYLHS", "BIKEV:BIKEV_DRIVEBYRHS", "BIKEV:BIKEV_FWD", "BIKEV:BIKEV_GETOFFBACK", "BIKEV:BIKEV_GETOFFLHS",
    "BIKEV:BIKEV_GETOFFRHS", "BIKEV:BIKEV_HIT", "BIKEV:BIKEV_JUMPONL", "BIKEV:BIKEV_JUMPONR", "BIKEV:BIKEV_KICK",
    "BIKEV:BIKEV_LEFT", "BIKEV:BIKEV_PASSENGER", "BIKEV:BIKEV_PUSHES", "BIKEV:BIKEV_RIDE", "BIKEV:BIKEV_RIGHT",
    "BIKEV:BIKEV_STILL", "BIKE_DBZ:PASS_DRIVEBY_BWD", "BIKE_DBZ:PASS_DRIVEBY_FWD", "BIKE_DBZ:PASS_DRIVEBY_LHS", "BIKE_DBZ:PASS_DRIVEBY_RHS",
    "BMX:BMX_BACK", "BMX:BMX_BUNNYHOP", "BMX:BMX_DRIVEBYFT", "BMX:BMX_DRIVEBY_LHS", "BMX:BMX_DRIVEBY_RHS",
    "BMX:BMX_FWD", "BMX:BMX_GETOFFBACK", "BMX:BMX_GETOFFLHS", "BMX:BMX_GETOFFRHS", "BMX:BMX_JUMPONL",
    "BMX:BMX_JUMPONR", "BMX:BMX_LEFT", "BMX:BMX_PEDAL", "BMX:BMX_PUSHES", "BMX:BMX_RIDE",
    "BMX:BMX_RIGHT", "BMX:BMX_SPRINT", "BMX:BMX_STILL", "BOMBER:BOM_PLANT", "BOMBER:BOM_PLANT_2IDLE",
    "BOMBER:BOM_PLANT_CROUCH_IN", "BOMBER:BOM_PLANT_CROUCH_OUT", "BOMBER:BOM_PLANT_IN", "BOMBER:BOM_PLANT_LOOP", "BOX:BOXHIPIN",
    "BOX:BOXHIPUP", "BOX:BOXSHDWN", "BOX:BOXSHUP", "BOX:BXHIPWLK", "BOX:BXHWLKI",
    "BOX:BXSHWLK", "BOX:BXSHWLKI", "BOX:BXWLKO", "BOX:CATCH_BOX", "BSKTBALL:BBALL_DEF_JUMP_SHOT",
    "BSKTBALL:BBALL_DEF_LOOP", "BSKTBALL:BBALL_DEF_STEPL", "BSKTBALL:BBALL_DEF_STEPR", "BSKTBALL:BBALL_DNK", "BSKTBALL:BBALL_DNK_GLI",
    "BSKTBALL:BBALL_DNK_GLI_O", "BSKTBALL:BBALL_DNK_LNCH", "BSKTBALL:BBALL_DNK_LNCH_O", "BSKTBALL:BBALL_DNK_LND", "BSKTBALL:BBALL_DNK_O",
    "BSKTBALL:BBALL_IDLE", "BSKTBALL:BBALL_IDLE2", "BSKTBALL:BBALL_IDLE2_O", "BSKTBALL:BBALL_IDLELOOP", "BSKTBALL:BBALL_IDLELOOP_O",
    "BSKTBALL:BBALL_IDLE_O", "BSKTBALL:BBALL_JUMP_CANCEL", "BSKTBALL:BBALL_JUMP_CANCEL_O", "BSKTBALL:BBALL_JUMP_END", "BSKTBALL:BBALL_JUMP_SHOT",
    "BSKTBALL:BBALL_JUMP_SHOT_O", "BSKTBALL:BBALL_NET_DNK_O", "BSKTBALL:BBALL_PICKUP", "BSKTBALL:BBALL_PICKUP_O", "BSKTBALL:BBALL_REACT_MISS",
    "BSKTBALL:BBALL_REACT_SCORE", "BSKTBALL:BBALL_RUN", "BSKTBALL:BBALL_RUN_O", "BSKTBALL:BBALL_SKIDSTOP_L", "BSKTBALL:BBALL_SKIDSTOP_L_O",
    "BSKTBALL:BBALL_SKIDSTOP_R", "BSKTBALL:BBALL_SKIDSTOP_R_O", "BSKTBALL:BBALL_WALK", "BSKTBALL:BBALL_WALKSTOP_L", "BSKTBALL:BBALL_WALKSTOP_L_O",
    "BSKTBALL:BBALL_WALKSTOP_R", "BSKTBALL:BBALL_WALKSTOP_R_O", "BSKTBALL:BBALL_WALK_O", "BSKTBALL:BBALL_WALK_START", "BSKTBALL:BBALL_WALK_START_O",
    "BUDDY:BUDDY_CROUCHFIRE", "BUDDY:BUDDY_CROUCHRELOAD", "BUDDY:BUDDY_FIRE", "BUDDY:BUDDY_FIRE_POOR", "BUDDY:BUDDY_RELOAD",
    "BUS:BUS_CLOSE", "BUS:BUS_GETIN_LHS", "BUS:BUS_GETIN_RHS", "BUS:BUS_GETOUT_LHS", "BUS:BUS_GETOUT_RHS",
    "BUS:BUS_JACKED_LHS", "BUS:BUS_OPEN", "BUS:BUS_OPEN_RHS", "BUS:BUS_PULLOUT_LHS", "CAMERA:CAMCRCH_CMON",
    "CAMERA:CAMCRCH_IDLELOOP", "CAMERA:CAMCRCH_STAY", "CAMERA:CAMCRCH_TO_CAMSTND", "CAMERA:CAMSTND_CMON", "CAMERA:CAMSTND_IDLELOOP",
    "CAMERA:CAMSTND_LKABT", "CAMERA:CAMSTND_TO_CAMCRCH", "CAMERA:PICCRCH_IN", "CAMERA:PICCRCH_OUT", "CAMERA:PICCRCH_TAKE",
    "CAMERA:PICSTND_IN", "CAMERA:PICSTND_OUT", "CAMERA:PICSTND_TAKE", "CAR:FIXN_CAR_LOOP", "CAR:FIXN_CAR_OUT",
    "CAR:FLAG_DROP", "CAR:SIT_RELAXED", "CAR:TAP_HAND", "CAR:TYD2CAR_BUMP", "CAR:TYD2CAR_HIGH",
    "CAR:TYD2CAR_LOW", "CAR:TYD2CAR_MED", "CAR:TYD2CAR_TURNL", "CAR:TYD2CAR_TURNR", "CARRY:CRRY_PRTIAL",
    "CARRY:LIFTUP", "CARRY:LIFTUP05", "CARRY:LIFTUP105", "CARRY:PUTDWN", "CARRY:PUTDWN05",
    "CARRY:PUTDWN105", "CAR_CHAT:CARFONE_IN", "CAR_CHAT:CARFONE_LOOPA", "CAR_CHAT:CARFONE_LOOPA_TO_B", "CAR_CHAT:CARFONE_LOOPB",
    "CAR_CHAT:CARFONE_LOOPB_TO_A", "CAR_CHAT:CARFONE_OUT", "CAR_CHAT:CAR_SC1_BL", "CAR_CHAT:CAR_SC1_BR", "CAR_CHAT:CAR_SC1_FL",
    "CAR_CHAT:CAR_SC1_FR", "CAR_CHAT:CAR_SC2_FL", "CAR_CHAT:CAR_SC3_BR", "CAR_CHAT:CAR_SC3_FL", "CAR_CHAT:CAR_SC3_FR",
    "CAR_CHAT:CAR_SC4_BL", "CAR_CHAT:CAR_SC4_BR", "CAR_CHAT:CAR_SC4_FL", "CAR_CHAT:CAR_SC4_FR", "CAR_CHAT:CAR_TALKM_IN",
    "CAR_CHAT:CAR_TALKM_LOOP", "CAR_CHAT:CAR_TALKM_OUT", "CASINO:CARDS_IN", "CASINO:CARDS_LOOP", "CASINO:CARDS_LOSE",
    "CASINO:CARDS_OUT", "CASINO:CARDS_PICK_01", "CASINO:CARDS_PICK_02", "CASINO:CARDS_RAISE", "CASINO:CARDS_WIN",
    "CASINO:DEALONE", "CASINO:MANWINB", "CASINO:MANWIND", "CASINO:ROULETTE_BET", "CASINO:ROULETTE_IN",
    "CASINO:ROULETTE_LOOP", "CASINO:ROULETTE_LOSE", "CASINO:ROULETTE_OUT", "CASINO:ROULETTE_WIN", "CASINO:SLOT_BET_01",
    "CASINO:SLOT_BET_02", "CASINO:SLOT_IN", "CASINO:SLOT_LOSE_OUT", "CASINO:SLOT_PLYR", "CASINO:SLOT_WAIT",
    "CASINO:SLOT_WIN_OUT", "CASINO:WOF", "CHAINSAW:CSAW_1", "CHAINSAW:CSAW_2", "CHAINSAW:CSAW_3",
    "CHAINSAW:CSAW_G", "CHAINSAW:CSAW_HIT_1", "CHAINSAW:CSAW_HIT_2", "CHAINSAW:CSAW_HIT_3", "CHAINSAW:CSAW_PART",
    "CHAINSAW:IDLE_CSAW", "CHAINSAW:WEAPON_CSAW", "CHAINSAW:WEAPON_CSAWLO", "CHOPPA:CHOPPA_BACK", "CHOPPA:CHOPPA_BUNNYHOP",
    "CHOPPA:CHOPPA_DRIVEBYFT", "CHOPPA:CHOPPA_DRIVEBY_LHS", "CHOPPA:CHOPPA_DRIVEBY_RHS", "CHOPPA:CHOPPA_FWD", "CHOPPA:CHOPPA_GETOFFBACK",
    "CHOPPA:CHOPPA_GETOFFLHS", "CHOPPA:CHOPPA_GETOFFRHS", "CHOPPA:CHOPPA_JUMPONL", "CHOPPA:CHOPPA_JUMPONR", "CHOPPA:CHOPPA_LEFT",
    "CHOPPA:CHOPPA_PEDAL", "CHOPPA:CHOPPA_PUSHES", "CHOPPA:CHOPPA_RIDE", "CHOPPA:CHOPPA_RIGHT", "CHOPPA:CHOPPA_SPRINT",
    "CHOPPA:CHOPPA_STILL", "CLOTHES:CLO_BUY", "CLOTHES:CLO_IN", "CLOTHES:CLO_OUT", "CLOTHES:CLO_POSE_HAT",
    "CLOTHES:CLO_POSE_IN", "CLOTHES:CLO_POSE_IN_O", "CLOTHES:CLO_POSE_LEGS", "CLOTHES:CLO_POSE_LOOP", "CLOTHES:CLO_POSE_OUT",
    "CLOTHES:CLO_POSE_OUT_O", "CLOTHES:CLO_POSE_SHOES", "CLOTHES:CLO_POSE_TORSO", "CLOTHES:CLO_POSE_WATCH", "COACH:COACH_INL",
    "COACH:COACH_INR", "COACH:COACH_OPNL", "COACH:COACH_OPNR", "COACH:COACH_OUTL", "COACH:COACH_OUTR",
    "COLT45:2GUNS_CROUCHFIRE", "COLT45:COLT45_CROUCHFIRE", "COLT45:COLT45_CROUCHRELOAD", "COLT45:COLT45_FIRE", "COLT45:COLT45_FIRE_2HANDS",
    "COLT45:COLT45_RELOAD", "COLT45:SAWNOFF_RELOAD", "COP_AMBIENT:COPBROWSE_IN", "COP_AMBIENT:COPBROWSE_LOOP", "COP_AMBIENT:COPBROWSE_NOD",
    "COP_AMBIENT:COPBROWSE_OUT", "COP_AMBIENT:COPBROWSE_SHAKE", "COP_AMBIENT:COPLOOK_IN", "COP_AMBIENT:COPLOOK_LOOP", "COP_AMBIENT:COPLOOK_NOD",
    "COP_AMBIENT:COPLOOK_OUT", "COP_AMBIENT:COPLOOK_SHAKE", "COP_AMBIENT:COPLOOK_THINK", "COP_AMBIENT:COPLOOK_WATCH", "COP_DVBYZ:COP_DVBY_B",
    "COP_DVBYZ:COP_DVBY_FT", "COP_DVBYZ:COP_DVBY_L", "COP_DVBYZ:COP_DVBY_R", "CRACK:BBALBAT_IDLE_01", "CRACK:BBALBAT_IDLE_02",
    "CRACK:CRCKDETH1", "CRACK:CRCKDETH2", "CRACK:CRCKDETH3", "CRACK:CRCKDETH4", "CRACK:CRCKIDLE1",
    "CRACK:CRCKIDLE2", "CRACK:CRCKIDLE3", "CRACK:CRCKIDLE4", "CRIB:CRIB_CONSOLE_LOOP", "CRIB:CRIB_USE_SWITCH",
    "CRIB:PED_CONSOLE_LOOP", "CRIB:PED_CONSOLE_LOOSE", "CRIB:PED_CONSOLE_WIN", "DAM_JUMP:DAM_DIVE_LOOP", "DAM_JUMP:DAM_LAND",
    "DAM_JUMP:DAM_LAUNCH", "DAM_JUMP:JUMP_ROLL", "DAM_JUMP:SF_JUMPWALL", "DANCING:BD_CLAP", "DANCING:BD_CLAP1",
    "DANCING:DANCE_LOOP", "DANCING:DAN_DOWN_A", "DANCING:DAN_LEFT_A", "DANCING:DAN_LOOP_A", "DANCING:DAN_RIGHT_A",
    "DANCING:DAN_UP_A", "DANCING:DNCE_M_A", "DANCING:DNCE_M_B", "DANCING:DNCE_M_C", "DANCING:DNCE_M_D",
    "DANCING:DNCE_M_E", "DEALER:DEALER_DEAL", "DEALER:DEALER_IDLE", "DEALER:DEALER_IDLE_01", "DEALER:DEALER_IDLE_02",
    "DEALER:DEALER_IDLE_03", "DEALER:DRUGS_BUY", "DEALER:SHOP_PAY", "DILDO:DILDO_1", "DILDO:DILDO_2",
    "DILDO:DILDO_3", "DILDO:DILDO_BLOCK", "DILDO:DILDO_G", "DILDO:DILDO_HIT_1", "DILDO:DILDO_HIT_2",
    "DILDO:DILDO_HIT_3", "DILDO:DILDO_IDLE", "DODGE:COVER_DIVE_01", "DODGE:COVER_DIVE_02", "DODGE:CRUSHED",
    "DODGE:CRUSH_JUMP", "DOZER:DOZER_ALIGN_LHS", "DOZER:DOZER_ALIGN_RHS", "DOZER:DOZER_GETIN_LHS", "DOZER:DOZER_GETIN_RHS",
    "DOZER:DOZER_GETOUT_LHS", "DOZER:DOZER_GETOUT_RHS", "DOZER:DOZER_JACKED_LHS", "DOZER:DOZER_JACKED_RHS", "DOZER:DOZER_PULLOUT_LHS",
    "DOZER:DOZER_PULLOUT_RHS", "DRIVEBYS:GANG_DRIVEBYLHS", "DRIVEBYS:GANG_DRIVEBYLHS_BWD", "DRIVEBYS:GANG_DRIVEBYLHS_FWD", "DRIVEBYS:GANG_DRIVEBYRHS",
    "DRIVEBYS:GANG_DRIVEBYRHS_BWD", "DRIVEBYS:GANG_DRIVEBYRHS_FWD", "DRIVEBYS:GANG_DRIVEBYTOP_LHS", "DRIVEBYS:GANG_DRIVEBYTOP_RHS", "FAT:FATIDLE",
    "FAT:FATIDLE_ARMED", "FAT:FATIDLE_CSAW", "FAT:FATIDLE_ROCKET", "FAT:FATRUN", "FAT:FATRUN_ARMED",
    "FAT:FATRUN_CSAW", "FAT:FATRUN_ROCKET", "FAT:FATSPRINT", "FAT:FATWALK", "FAT:FATWALKSTART",
    "FAT:FATWALKSTART_CSAW", "FAT:FATWALKST_ARMED", "FAT:FATWALKST_ROCKET", "FAT:FATWALK_ARMED", "FAT:FATWALK_CSAW",
    "FAT:FATWALK_ROCKET", "FAT:IDLE_TIRED", "FIGHT_B:FIGHTB_1", "FIGHT_B:FIGHTB_2", "FIGHT_B:FIGHTB_3",
    "FIGHT_B:FIGHTB_BLOCK", "FIGHT_B:FIGHTB_G", "FIGHT_B:FIGHTB_IDLE", "FIGHT_B:FIGHTB_M", "FIGHT_B:HITB_1",
    "FIGHT_B:HITB_2", "FIGHT_B:HITB_3", "FIGHT_C:FIGHTC_1", "FIGHT_C:FIGHTC_2", "FIGHT_C:FIGHTC_3",
    "FIGHT_C:FIGHTC_BLOCK", "FIGHT_C:FIGHTC_BLOCKING", "FIGHT_C:FIGHTC_G", "FIGHT_C:FIGHTC_IDLE", "FIGHT_C:FIGHTC_M",
    "FIGHT_C:FIGHTC_SPAR", "FIGHT_C:HITC_1", "FIGHT_C:HITC_2", "FIGHT_C:HITC_3", "FIGHT_D:FIGHTD_1",
    "FIGHT_D:FIGHTD_2", "FIGHT_D:FIGHTD_3", "FIGHT_D:FIGHTD_BLOCK", "FIGHT_D:FIGHTD_G", "FIGHT_D:FIGHTD_IDLE",
    "FIGHT_D:FIGHTD_M", "FIGHT_D:HITD_1", "FIGHT_D:HITD_2", "FIGHT_D:HITD_3", "FIGHT_E:FIGHTKICK",
    "FIGHT_E:FIGHTKICK_B", "FIGHT_E:HIT_FIGHTKICK", "FIGHT_E:HIT_FIGHTKICK_B", "FINALE:FIN_CLIMB_IN", "FINALE:FIN_COP1_CLIMBOUT2",
    "FINALE:FIN_COP1_LOOP", "FINALE:FIN_COP1_STOMP", "FINALE:FIN_HANG_L", "FINALE:FIN_HANG_LOOP", "FINALE:FIN_HANG_R",
    "FINALE:FIN_HANG_SLIP", "FINALE:FIN_JUMP_ON", "FINALE:FIN_LAND_CAR", "FINALE:FIN_LAND_DIE", "FINALE:FIN_LEGSUP",
    "FINALE:FIN_LEGSUP_L", "FINALE:FIN_LEGSUP_LOOP", "FINALE:FIN_LEGSUP_R", "FINALE:FIN_LET_GO", "FINALE2:FIN_COP1_CLIMBOUT",
    "FINALE2:FIN_COP1_FALL", "FINALE2:FIN_COP1_LOOP", "FINALE2:FIN_COP1_SHOT", "FINALE2:FIN_COP1_SWING", "FINALE2:FIN_COP2_CLIMBOUT",
    "FINALE2:FIN_SWITCH_P", "FINALE2:FIN_SWITCH_S", "FLAME:FLAME_FIRE", "FLOWERS:FLOWER_ATTACK", "FLOWERS:FLOWER_ATTACK_M",
    "FLOWERS:FLOWER_HIT", "FOOD:EAT_BURGER", "FOOD:EAT_CHICKEN", "FOOD:EAT_PIZZA", "FOOD:EAT_VOMIT_P",
    "FOOD:EAT_VOMIT_SK", "FOOD:FF_DAM_BKW", "FOOD:FF_DAM_FWD", "FOOD:FF_DAM_LEFT", "FOOD:FF_DAM_RIGHT",
    "FOOD:FF_DIE_BKW", "FOOD:FF_DIE_FWD", "FOOD:FF_DIE_LEFT", "FOOD:FF_DIE_RIGHT", "FOOD:FF_SIT_EAT1",
    "FOOD:FF_SIT_EAT2", "FOOD:FF_SIT_EAT3", "FOOD:FF_SIT_IN", "FOOD:FF_SIT_IN_L", "FOOD:FF_SIT_IN_R",
    "FOOD:FF_SIT_LOOK", "FOOD:FF_SIT_LOOP", "FOOD:FF_SIT_OUT_180", "FOOD:FF_SIT_OUT_L_180", "FOOD:FF_SIT_OUT_R_180",
    "FOOD:SHP_THANK", "FOOD:SHP_TRAY_IN", "FOOD:SHP_TRAY_LIFT", "FOOD:SHP_TRAY_LIFT_IN", "FOOD:SHP_TRAY_LIFT_LOOP",
    "FOOD:SHP_TRAY_LIFT_OUT", "FOOD:SHP_TRAY_OUT", "FOOD:SHP_TRAY_POSE", "FOOD:SHP_TRAY_RETURN", "FREEWEIGHTS:GYM_BARBELL",
    "FREEWEIGHTS:GYM_FREE_A", "FREEWEIGHTS:GYM_FREE_B", "FREEWEIGHTS:GYM_FREE_CELEBRATE", "FREEWEIGHTS:GYM_FREE_DOWN", "FREEWEIGHTS:GYM_FREE_LOOP",
    "FREEWEIGHTS:GYM_FREE_PICKUP", "FREEWEIGHTS:GYM_FREE_PUTDOWN", "FREEWEIGHTS:GYM_FREE_UP_SMOOTH", "GANGS:DEALER_DEAL", "GANGS:DEALER_IDLE",
    "GANGS:DRNKBR_PRTL", "GANGS:DRNKBR_PRTL_F", "GANGS:DRUGS_BUY", "GANGS:HNDSHKAA", "GANGS:HNDSHKBA",
    "GANGS:HNDSHKCA", "GANGS:HNDSHKCB", "GANGS:HNDSHKDA", "GANGS:HNDSHKEA", "GANGS:HNDSHKFA",
    "GANGS:HNDSHKFA_SWT", "GANGS:INVITE_NO", "GANGS:INVITE_YES", "GANGS:LEANIDLE", "GANGS:LEANIN",
    "GANGS:LEANOUT", "GANGS:PRTIAL_GNGTLKA", "GANGS:PRTIAL_GNGTLKB", "GANGS:PRTIAL_GNGTLKC", "GANGS:PRTIAL_GNGTLKD",
    "GANGS:PRTIAL_GNGTLKE", "GANGS:PRTIAL_GNGTLKF", "GANGS:PRTIAL_GNGTLKG", "GANGS:PRTIAL_GNGTLKH", "GANGS:PRTIAL_HNDSHK_01",
    "GANGS:PRTIAL_HNDSHK_BIZ_01", "GANGS:SHAKE_CARA", "GANGS:SHAKE_CARK", "GANGS:SHAKE_CARSH", "GANGS:SMKCIG_PRTL",
    "GANGS:SMKCIG_PRTL_F", "GHANDS:GSIGN1", "GHANDS:GSIGN1LH", "GHANDS:GSIGN2", "GHANDS:GSIGN2LH",
    "GHANDS:GSIGN3", "GHANDS:GSIGN3LH", "GHANDS:GSIGN4", "GHANDS:GSIGN4LH", "GHANDS:GSIGN5",
    "GHANDS:GSIGN5LH", "GHANDS:LHGSIGN1", "GHANDS:LHGSIGN2", "GHANDS:LHGSIGN3", "GHANDS:LHGSIGN4",
    "GHANDS:LHGSIGN5", "GHANDS:RHGSIGN1", "GHANDS:RHGSIGN2", "GHANDS:RHGSIGN3", "GHANDS:RHGSIGN4",
    "GHANDS:RHGSIGN5", "GHETTO_DB:GDB_CAR2_PLY", "GHETTO_DB:GDB_CAR2_SMO", "GHETTO_DB:GDB_CAR2_SWE", "GHETTO_DB:GDB_CAR_PLY",
    "GHETTO_DB:GDB_CAR_RYD", "GHETTO_DB:GDB_CAR_SMO", "GHETTO_DB:GDB_CAR_SWE", "GOGGLES:GOGGLES_PUT_ON", "GRAFFITI:GRAFFITI_CHKOUT",
    "GRAFFITI:SPRAYCAN_FIRE", "GRAVEYARD:MRNF_LOOP", "GRAVEYARD:MRNM_LOOP", "GRAVEYARD:PRST_LOOPA", "GRENADE:WEAPON_START_THROW",
    "GRENADE:WEAPON_THROW", "GRENADE:WEAPON_THROWU", "GYMNASIUM:GYMSHADOWBOX", "GYMNASIUM:GYM_BIKE_CELEBRATE", "GYMNASIUM:GYM_BIKE_FAST",
    "GYMNASIUM:GYM_BIKE_FASTER", "GYMNASIUM:GYM_BIKE_GETOFF", "GYMNASIUM:GYM_BIKE_GETON", "GYMNASIUM:GYM_BIKE_PEDAL", "GYMNASIUM:GYM_BIKE_SLOW",
    "GYMNASIUM:GYM_BIKE_STILL", "GYMNASIUM:GYM_JOG_FALLOFF", "GYMNASIUM:GYM_SHADOWBOX", "GYMNASIUM:GYM_TREAD_CELEBRATE", "GYMNASIUM:GYM_TREAD_FALLOFF",
    "GYMNASIUM:GYM_TREAD_GETOFF", "GYMNASIUM:GYM_TREAD_GETON", "GYMNASIUM:GYM_TREAD_JOG", "GYMNASIUM:GYM_TREAD_SPRINT", "GYMNASIUM:GYM_TREAD_TIRED",
    "GYMNASIUM:GYM_TREAD_WALK", "GYMNASIUM:GYM_WALK_FALLOFF", "GYMNASIUM:PEDALS_FAST", "GYMNASIUM:PEDALS_MED", "GYMNASIUM:PEDALS_SLOW",
    "GYMNASIUM:PEDALS_STILL", "HAIRCUTS:BRB_BEARD_01", "HAIRCUTS:BRB_BUY", "HAIRCUTS:BRB_CUT", "HAIRCUTS:BRB_CUT_IN",
    "HAIRCUTS:BRB_CUT_OUT", "HAIRCUTS:BRB_HAIR_01", "HAIRCUTS:BRB_HAIR_02", "HAIRCUTS:BRB_IN", "HAIRCUTS:BRB_LOOP",
    "HAIRCUTS:BRB_OUT", "HAIRCUTS:BRB_SIT_IN", "HAIRCUTS:BRB_SIT_LOOP", "HAIRCUTS:BRB_SIT_OUT", "HEIST9:CAS_G2_GASKO",
    "HEIST9:SWT_WLLPK_L", "HEIST9:SWT_WLLPK_L_BACK", "HEIST9:SWT_WLLPK_R", "HEIST9:SWT_WLLPK_R_BACK", "HEIST9:SWT_WLLSHOOT_IN_L",
    "HEIST9:SWT_WLLSHOOT_IN_R", "HEIST9:SWT_WLLSHOOT_OUT_L", "HEIST9:SWT_WLLSHOOT_OUT_R", "HEIST9:USE_SWIPECARD", "INT_HOUSE:BED_IN_L",
    "INT_HOUSE:BED_IN_R", "INT_HOUSE:BED_LOOP_L", "INT_HOUSE:BED_LOOP_R", "INT_HOUSE:BED_OUT_L", "INT_HOUSE:BED_OUT_R",
    "INT_HOUSE:LOU_IN", "INT_HOUSE:LOU_LOOP", "INT_HOUSE:LOU_OUT", "INT_HOUSE:WASH_UP", "INT_OFFICE:FF_DAM_FWD",
    "INT_OFFICE:OFF_SIT_2IDLE_180", "INT_OFFICE:OFF_SIT_BORED_LOOP", "INT_OFFICE:OFF_SIT_CRASH", "INT_OFFICE:OFF_SIT_DRINK", "INT_OFFICE:OFF_SIT_IDLE_LOOP",
    "INT_OFFICE:OFF_SIT_IN", "INT_OFFICE:OFF_SIT_READ", "INT_OFFICE:OFF_SIT_TYPE_LOOP", "INT_OFFICE:OFF_SIT_WATCH", "INT_SHOP:SHOP_CASHIER",
    "INT_SHOP:SHOP_IN", "INT_SHOP:SHOP_LOOKA", "INT_SHOP:SHOP_LOOKB", "INT_SHOP:SHOP_LOOP", "INT_SHOP:SHOP_OUT",
    "INT_SHOP:SHOP_PAY", "INT_SHOP:SHOP_SHELF", "JST_BUISNESS:GIRL_01", "JST_BUISNESS:GIRL_02", "JST_BUISNESS:PLAYER_01",
    "JST_BUISNESS:SMOKE_01", "KART:KART_GETIN_LHS", "KART:KART_GETIN_RHS", "KART:KART_GETOUT_LHS", "KART:KART_GETOUT_RHS",
    "KISSING:BD_GF_WAVE", "KISSING:GFWAVE2", "KISSING:GF_CARARGUE_01", "KISSING:GF_CARARGUE_02", "KISSING:GF_CARSPOT",
    "KISSING:GF_STREETARGUE_01", "KISSING:GF_STREETARGUE_02", "KISSING:GIFT_GET", "KISSING:GIFT_GIVE", "KISSING:GRLFRD_KISS_01",
    "KISSING:GRLFRD_KISS_02", "KISSING:GRLFRD_KISS_03", "KISSING:PLAYA_KISS_01", "KISSING:PLAYA_KISS_02", "KISSING:PLAYA_KISS_03",
    "KNIFE:KILL_KNIFE_PED_DAMAGE", "KNIFE:KILL_KNIFE_PED_DIE", "KNIFE:KILL_KNIFE_PLAYER", "KNIFE:KILL_PARTIAL", "KNIFE:KNIFE_1",
    "KNIFE:KNIFE_2", "KNIFE:KNIFE_3", "KNIFE:KNIFE_4", "KNIFE:KNIFE_BLOCK", "KNIFE:KNIFE_G",
    "KNIFE:KNIFE_HIT_1", "KNIFE:KNIFE_HIT_2", "KNIFE:KNIFE_HIT_3", "KNIFE:KNIFE_IDLE", "KNIFE:KNIFE_PART",
    "KNIFE:WEAPON_KNIFEIDLE", "LAPDAN1:LAPDAN_D", "LAPDAN1:LAPDAN_P", "LAPDAN2:LAPDAN_D", "LAPDAN2:LAPDAN_P",
    "LAPDAN3:LAPDAN_D", "LAPDAN3:LAPDAN_P", "LOWRIDER:F_SMKLEAN_LOOP", "LOWRIDER:LRGIRL_BDBNCE", "LOWRIDER:LRGIRL_HAIR",
    "LOWRIDER:LRGIRL_HURRY", "LOWRIDER:LRGIRL_IDLELOOP", "LOWRIDER:LRGIRL_IDLE_TO_L0", "LOWRIDER:LRGIRL_L0_BNCE", "LOWRIDER:LRGIRL_L0_LOOP",
    "LOWRIDER:LRGIRL_L0_TO_L1", "LOWRIDER:LRGIRL_L12_TO_L0", "LOWRIDER:LRGIRL_L1_BNCE", "LOWRIDER:LRGIRL_L1_LOOP", "LOWRIDER:LRGIRL_L1_TO_L2",
    "LOWRIDER:LRGIRL_L2_BNCE", "LOWRIDER:LRGIRL_L2_LOOP", "LOWRIDER:LRGIRL_L2_TO_L3", "LOWRIDER:LRGIRL_L345_TO_L1", "LOWRIDER:LRGIRL_L3_BNCE",
    "LOWRIDER:LRGIRL_L3_LOOP", "LOWRIDER:LRGIRL_L3_TO_L4", "LOWRIDER:LRGIRL_L4_BNCE", "LOWRIDER:LRGIRL_L4_LOOP", "LOWRIDER:LRGIRL_L4_TO_L5",
    "LOWRIDER:LRGIRL_L5_BNCE", "LOWRIDER:LRGIRL_L5_LOOP", "LOWRIDER:M_SMKLEAN_LOOP", "LOWRIDER:M_SMKSTND_LOOP", "LOWRIDER:PRTIAL_GNGTLKB",
    "LOWRIDER:PRTIAL_GNGTLKC", "LOWRIDER:PRTIAL_GNGTLKD", "LOWRIDER:PRTIAL_GNGTLKE", "LOWRIDER:PRTIAL_GNGTLKF", "LOWRIDER:PRTIAL_GNGTLKG",
    "LOWRIDER:PRTIAL_GNGTLKH", "LOWRIDER:RAP_A_LOOP", "LOWRIDER:RAP_B_LOOP", "LOWRIDER:RAP_C_LOOP", "LOWRIDER:SIT_RELAXED",
    "LOWRIDER:TAP_HAND", "MD_CHASE:CARHIT_HANGON", "MD_CHASE:CARHIT_TUMBLE", "MD_CHASE:DONUTDROP", "MD_CHASE:FEN_CHOPPA_L1",
    "MD_CHASE:FEN_CHOPPA_L2", "MD_CHASE:FEN_CHOPPA_L3", "MD_CHASE:FEN_CHOPPA_R1", "MD_CHASE:FEN_CHOPPA_R2", "MD_CHASE:FEN_CHOPPA_R3",
    "MD_CHASE:HANGON_STUN_LOOP", "MD_CHASE:HANGON_STUN_TURN", "MD_CHASE:MD_BIKE_2_HANG", "MD_CHASE:MD_BIKE_JMP_BL", "MD_CHASE:MD_BIKE_JMP_F",
    "MD_CHASE:MD_BIKE_LND_BL", "MD_CHASE:MD_BIKE_LND_DIE_BL", "MD_CHASE:MD_BIKE_LND_DIE_F", "MD_CHASE:MD_BIKE_LND_F", "MD_CHASE:MD_BIKE_LND_ROLL",
    "MD_CHASE:MD_BIKE_LND_ROLL_F", "MD_CHASE:MD_BIKE_PUNCH", "MD_CHASE:MD_BIKE_PUNCH_F", "MD_CHASE:MD_BIKE_SHOT_F", "MD_CHASE:MD_HANG_LND_ROLL",
    "MD_CHASE:MD_HANG_LOOP", "MD_END:END_SC1_PLY", "MD_END:END_SC1_RYD", "MD_END:END_SC1_SMO", "MD_END:END_SC1_SWE",
    "MD_END:END_SC2_PLY", "MD_END:END_SC2_RYD", "MD_END:END_SC2_SMO", "MD_END:END_SC2_SWE", "MEDIC:CPR",
    "MISC:BITCHSLAP", "MISC:BMX_CELEBRATE", "MISC:BMX_COMEON", "MISC:BMX_IDLELOOP_01", "MISC:BMX_IDLELOOP_02",
    "MISC:BMX_TALKLEFT_IN", "MISC:BMX_TALKLEFT_LOOP", "MISC:BMX_TALKLEFT_OUT", "MISC:BMX_TALKRIGHT_IN", "MISC:BMX_TALKRIGHT_LOOP",
    "MISC:BMX_TALKRIGHT_OUT", "MISC:BNG_WNDW", "MISC:BNG_WNDW_02", "MISC:CASE_PICKUP", "MISC:DOOR_JET",
    "MISC:GRAB_L", "MISC:GRAB_R", "MISC:HIKER_POSE", "MISC:HIKER_POSE_L", "MISC:IDLE_CHAT_02",
    "MISC:KAT_THROW_K", "MISC:KAT_THROW_O", "MISC:KAT_THROW_P", "MISC:PASS_RIFLE_O", "MISC:PASS_RIFLE_PED",
    "MISC:PASS_RIFLE_PLY", "MISC:PICKUP_BOX", "MISC:PLANE_DOOR", "MISC:PLANE_EXIT", "MISC:PLANE_HIJACK",
    "MISC:PLUNGER_01", "MISC:PLYRLEAN_LOOP", "MISC:PLYR_SHKHEAD", "MISC:RUN_DIVE", "MISC:SCRATCHBALLS_01",
    "MISC:SEAT_LR", "MISC:SEAT_TALK_01", "MISC:SEAT_TALK_02", "MISC:SEAT_WATCH", "MISC:SMALPLANE_DOOR",
    "MISC:SMLPLANE_DOOR", "MTB:MTB_BACK", "MTB:MTB_BUNNYHOP", "MTB:MTB_DRIVEBYFT", "MTB:MTB_DRIVEBY_LHS",
    "MTB:MTB_DRIVEBY_RHS", "MTB:MTB_FWD", "MTB:MTB_GETOFFBACK", "MTB:MTB_GETOFFLHS", "MTB:MTB_GETOFFRHS",
    "MTB:MTB_JUMPONL", "MTB:MTB_JUMPONR", "MTB:MTB_LEFT", "MTB:MTB_PEDAL", "MTB:MTB_PUSHES",
    "MTB:MTB_RIDE", "MTB:MTB_RIGHT", "MTB:MTB_SPRINT", "MTB:MTB_STILL", "MUSCULAR:MSCLEWALKST_ARMED",
    "MUSCULAR:MSCLEWALKST_CSAW", "MUSCULAR:MSCLE_RCKT_RUN", "MUSCULAR:MSCLE_RCKT_WALKST", "MUSCULAR:MSCLE_RUN_CSAW", "MUSCULAR:MUSCLEIDLE",
    "MUSCULAR:MUSCLEIDLE_ARMED", "MUSCULAR:MUSCLEIDLE_CSAW", "MUSCULAR:MUSCLEIDLE_ROCKET", "MUSCULAR:MUSCLERUN", "MUSCULAR:MUSCLERUN_ARMED",
    "MUSCULAR:MUSCLESPRINT", "MUSCULAR:MUSCLEWALK", "MUSCULAR:MUSCLEWALKSTART", "MUSCULAR:MUSCLEWALK_ARMED", "MUSCULAR:MUSCLEWALK_CSAW",
    "MUSCULAR:MUSCLEWALK_ROCKET", "NEVADA:NEVADA_GETIN", "NEVADA:NEVADA_GETOUT", "ON_LOOKERS:LKAROUND_IN", "ON_LOOKERS:LKAROUND_LOOP",
    "ON_LOOKERS:LKAROUND_OUT", "ON_LOOKERS:LKUP_IN", "ON_LOOKERS:LKUP_LOOP", "ON_LOOKERS:LKUP_OUT", "ON_LOOKERS:LKUP_POINT",
    "ON_LOOKERS:PANIC_COWER", "ON_LOOKERS:PANIC_HIDE", "ON_LOOKERS:PANIC_IN", "ON_LOOKERS:PANIC_LOOP", "ON_LOOKERS:PANIC_OUT",
    "ON_LOOKERS:PANIC_POINT", "ON_LOOKERS:PANIC_SHOUT", "ON_LOOKERS:POINTUP_IN", "ON_LOOKERS:POINTUP_LOOP", "ON_LOOKERS:POINTUP_OUT",
    "ON_LOOKERS:POINTUP_SHOUT", "ON_LOOKERS:POINT_IN", "ON_LOOKERS:POINT_LOOP", "ON_LOOKERS:POINT_OUT", "ON_LOOKERS:SHOUT_01",
    "ON_LOOKERS:SHOUT_02", "ON_LOOKERS:SHOUT_IN", "ON_LOOKERS:SHOUT_LOOP", "ON_LOOKERS:SHOUT_OUT", "ON_LOOKERS:WAVE_IN",
    "ON_LOOKERS:WAVE_LOOP", "ON_LOOKERS:WAVE_OUT", "OTB:BETSLP_IN", "OTB:BETSLP_LKABT", "OTB:BETSLP_LOOP",
    "OTB:BETSLP_OUT", "OTB:BETSLP_TNK", "OTB:WTCHRACE_CMON", "OTB:WTCHRACE_IN", "OTB:WTCHRACE_LOOP",
    "OTB:WTCHRACE_LOSE", "OTB:WTCHRACE_OUT", "OTB:WTCHRACE_WIN", "PARACHUTE:FALL_SKYDIVE", "PARACHUTE:FALL_SKYDIVE_ACCEL",
    "PARACHUTE:FALL_SKYDIVE_DIE", "PARACHUTE:FALL_SKYDIVE_L", "PARACHUTE:FALL_SKYDIVE_R", "PARACHUTE:PARA_DECEL", "PARACHUTE:PARA_DECEL_O",
    "PARACHUTE:PARA_FLOAT", "PARACHUTE:PARA_FLOAT_O", "PARACHUTE:PARA_LAND", "PARACHUTE:PARA_LAND_O", "PARACHUTE:PARA_LAND_WATER",
    "PARACHUTE:PARA_LAND_WATER_O", "PARACHUTE:PARA_OPEN", "PARACHUTE:PARA_OPEN_O", "PARACHUTE:PARA_RIP_LAND_O", "PARACHUTE:PARA_RIP_LOOP_O",
    "PARACHUTE:PARA_RIP_O", "PARACHUTE:PARA_STEERL", "PARACHUTE:PARA_STEERL_O", "PARACHUTE:PARA_STEERR", "PARACHUTE:PARA_STEERR_O",
    "PARK:TAI_CHI_IN", "PARK:TAI_CHI_LOOP", "PARK:TAI_CHI_OUT", "PAULNMAC:PISS_IN", "PAULNMAC:PISS_LOOP",
    "PAULNMAC:PISS_OUT", "PAULNMAC:PNM_ARGUE1_A", "PAULNMAC:PNM_ARGUE1_B", "PAULNMAC:PNM_ARGUE2_A", "PAULNMAC:PNM_ARGUE2_B",
    "PAULNMAC:PNM_LOOP_A", "PAULNMAC:PNM_LOOP_B", "PAULNMAC:WANK_IN", "PAULNMAC:WANK_LOOP", "PAULNMAC:WANK_OUT",
    "PED:ABSEIL", "PED:ARRESTGUN", "PED:ATM", "PED:BIKE_ELBOWL", "PED:BIKE_ELBOWR",
    "PED:BIKE_FALLR", "PED:BIKE_FALL_OFF", "PED:BIKE_PICKUPL", "PED:BIKE_PICKUPR", "PED:BIKE_PULLUPL",
    "PED:BIKE_PULLUPR", "PED:BOMBER", "PED:CAR_ALIGNHI_LHS", "PED:CAR_ALIGNHI_RHS", "PED:CAR_ALIGN_LHS",
    "PED:CAR_ALIGN_RHS", "PED:CAR_CLOSEDOORL_LHS", "PED:CAR_CLOSEDOORL_RHS", "PED:CAR_CLOSEDOOR_LHS", "PED:CAR_CLOSEDOOR_RHS",
    "PED:CAR_CLOSE_LHS", "PED:CAR_CLOSE_RHS", "PED:CAR_CRAWLOUTRHS", "PED:CAR_DEAD_LHS", "PED:CAR_DEAD_RHS",
    "PED:CAR_DOORLOCKED_LHS", "PED:CAR_DOORLOCKED_RHS", "PED:CAR_FALLOUT_LHS", "PED:CAR_FALLOUT_RHS", "PED:CAR_GETINL_LHS",
    "PED:CAR_GETINL_RHS", "PED:CAR_GETIN_LHS", "PED:CAR_GETIN_RHS", "PED:CAR_GETOUTL_LHS", "PED:CAR_GETOUTL_RHS",
    "PED:CAR_GETOUT_LHS", "PED:CAR_GETOUT_RHS", "PED:CAR_HOOKERTALK", "PED:CAR_JACKEDLHS", "PED:CAR_JACKEDRHS",
    "PED:CAR_JUMPIN_LHS", "PED:CAR_LB", "PED:CAR_LB_PRO", "PED:CAR_LB_WEAK", "PED:CAR_LJACKEDLHS",
    "PED:CAR_LJACKEDRHS", "PED:CAR_LSHUFFLE_RHS", "PED:CAR_LSIT", "PED:CAR_OPEN_LHS", "PED:CAR_OPEN_RHS",
    "PED:CAR_PULLOUTL_LHS", "PED:CAR_PULLOUTL_RHS", "PED:CAR_PULLOUT_LHS", "PED:CAR_PULLOUT_RHS", "PED:CAR_QJACKED",
    "PED:CAR_ROLLDOOR", "PED:CAR_ROLLDOORLO", "PED:CAR_ROLLOUT_LHS", "PED:CAR_ROLLOUT_RHS", "PED:CAR_SHUFFLE_RHS",
    "PED:CAR_SIT", "PED:CAR_SITP", "PED:CAR_SITPLO", "PED:CAR_SIT_PRO", "PED:CAR_SIT_WEAK",
    "PED:CAR_TUNE_RADIO", "PED:CLIMB_IDLE", "PED:CLIMB_JUMP", "PED:CLIMB_JUMP2FALL", "PED:CLIMB_JUMP_B",
    "PED:CLIMB_PULL", "PED:CLIMB_STAND", "PED:CLIMB_STAND_FINISH", "PED:COWER", "PED:CROUCH_ROLL_L",
    "PED:CROUCH_ROLL_R", "PED:DAM_ARML_FRMBK", "PED:DAM_ARML_FRMFT", "PED:DAM_ARML_FRMLT", "PED:DAM_ARMR_FRMBK",
    "PED:DAM_ARMR_FRMFT", "PED:DAM_ARMR_FRMRT", "PED:DAM_LEGL_FRMBK", "PED:DAM_LEGL_FRMFT", "PED:DAM_LEGL_FRMLT",
    "PED:DAM_LEGR_FRMBK", "PED:DAM_LEGR_FRMFT", "PED:DAM_LEGR_FRMRT", "PED:DAM_STOMACH_FRMBK", "PED:DAM_STOMACH_FRMFT",
    "PED:DAM_STOMACH_FRMLT", "PED:DAM_STOMACH_FRMRT", "PED:DOOR_LHINGE_O", "PED:DOOR_RHINGE_O", "PED:DRIVEBYL_L",
    "PED:DRIVEBYL_R", "PED:DRIVEBY_L", "PED:DRIVEBY_R", "PED:DRIVE_BOAT", "PED:DRIVE_BOAT_BACK",
    "PED:DRIVE_BOAT_L", "PED:DRIVE_BOAT_R", "PED:DRIVE_L", "PED:DRIVE_LO_L", "PED:DRIVE_LO_R",
    "PED:DRIVE_L_PRO", "PED:DRIVE_L_PRO_SLOW", "PED:DRIVE_L_SLOW", "PED:DRIVE_L_WEAK", "PED:DRIVE_L_WEAK_SLOW",
    "PED:DRIVE_R", "PED:DRIVE_R_PRO", "PED:DRIVE_R_PRO_SLOW", "PED:DRIVE_R_SLOW", "PED:DRIVE_R_WEAK",
    "PED:DRIVE_R_WEAK_SLOW", "PED:DRIVE_TRUCK", "PED:DRIVE_TRUCK_BACK", "PED:DRIVE_TRUCK_L", "PED:DRIVE_TRUCK_R",
    "PED:DROWN", "PED:DUCK_COWER", "PED:ENDCHAT_01", "PED:ENDCHAT_02", "PED:ENDCHAT_03",
    "PED:EV_DIVE", "PED:EV_STEP", "PED:FACANGER", "PED:FACGUM", "PED:FACSURP",
    "PED:FACSURPM", "PED:FACTALK", "PED:FACURIOS", "PED:FALL_BACK", "PED:FALL_COLLAPSE",
    "PED:FALL_FALL", "PED:FALL_FRONT", "PED:FALL_GLIDE", "PED:FALL_LAND", "PED:FALL_SKYDIVE",
    "PED:FIGHT2IDLE", "PED:FIGHTA_1", "PED:FIGHTA_2", "PED:FIGHTA_3", "PED:FIGHTA_BLOCK",
    "PED:FIGHTA_G", "PED:FIGHTA_M", "PED:FIGHTIDLE", "PED:FIGHTSHB", "PED:FIGHTSHF",
    "PED:FIGHTSH_BWD", "PED:FIGHTSH_FWD", "PED:FIGHTSH_LEFT", "PED:FIGHTSH_RIGHT", "PED:FLEE_LKAROUND_01",
    "PED:FLOOR_HIT", "PED:FLOOR_HIT_F", "PED:FUCKU", "PED:GANG_GUNSTAND", "PED:GAS_CWR",
    "PED:GETUP", "PED:GETUP_FRONT", "PED:GUM_EAT", "PED:GUNCROUCHBWD", "PED:GUNCROUCHFWD",
    "PED:GUNMOVE_BWD", "PED:GUNMOVE_FWD", "PED:GUNMOVE_L", "PED:GUNMOVE_R", "PED:GUN_2_IDLE",
    "PED:GUN_BUTT", "PED:GUN_BUTT_CROUCH", "PED:GUN_STAND", "PED:HANDSCOWER", "PED:HANDSUP",
    "PED:HITA_1", "PED:HITA_2", "PED:HITA_3", "PED:HIT_BACK", "PED:HIT_BEHIND",
    "PED:HIT_FRONT", "PED:HIT_GUN_BUTT", "PED:HIT_L", "PED:HIT_R", "PED:HIT_WALK",
    "PED:HIT_WALL", "PED:IDLESTANCE_FAT", "PED:IDLESTANCE_OLD", "PED:IDLE_ARMED", "PED:IDLE_CHAT",
    "PED:IDLE_CSAW", "PED:IDLE_GANG1", "PED:IDLE_HBHB", "PED:IDLE_ROCKET", "PED:IDLE_STANCE",
    "PED:IDLE_TAXI", "PED:IDLE_TIRED", "PED:JETPACK_IDLE", "PED:JOG_FEMALEA", "PED:JOG_MALEA",
    "PED:JUMP_GLIDE", "PED:JUMP_LAND", "PED:JUMP_LAUNCH", "PED:JUMP_LAUNCH_R", "PED:KART_DRIVE",
    "PED:KART_L", "PED:KART_LB", "PED:KART_R", "PED:KD_LEFT", "PED:KD_RIGHT",
    "PED:KO_SHOT_FACE", "PED:KO_SHOT_FRONT", "PED:KO_SHOT_STOM", "PED:KO_SKID_BACK", "PED:KO_SKID_FRONT",
    "PED:KO_SPIN_L", "PED:KO_SPIN_R", "PED:PASS_SMOKE_IN_CAR", "PED:PHONE_IN", "PED:PHONE_OUT",
    "PED:PHONE_TALK", "PED:PLAYER_SNEAK", "PED:PLAYER_SNEAK_WALKSTART", "PED:ROADCROSS", "PED:ROADCROSS_FEMALE",
    "PED:ROADCROSS_GANG", "PED:ROADCROSS_OLD", "PED:RUN_1ARMED", "PED:RUN_ARMED", "PED:RUN_CIVI",
    "PED:RUN_CSAW", "PED:RUN_FAT", "PED:RUN_FATOLD", "PED:RUN_GANG1", "PED:RUN_LEFT",
    "PED:RUN_OLD", "PED:RUN_PLAYER", "PED:RUN_RIGHT", "PED:RUN_ROCKET", "PED:RUN_STOP",
    "PED:RUN_STOPR", "PED:RUN_WUZI", "PED:SEAT_DOWN", "PED:SEAT_IDLE", "PED:SEAT_UP",
    "PED:SHOT_LEFTP", "PED:SHOT_PARTIAL", "PED:SHOT_PARTIAL_B", "PED:SHOT_RIGHTP", "PED:SHOVE_PARTIAL",
    "PED:SMOKE_IN_CAR", "PED:SPRINT_CIVI", "PED:SPRINT_PANIC", "PED:SPRINT_WUZI", "PED:SWAT_RUN",
    "PED:SWIM_TREAD", "PED:TAP_HAND", "PED:TAP_HANDP", "PED:TURN_180", "PED:TURN_L",
    "PED:TURN_R", "PED:WALK_ARMED", "PED:WALK_CIVI", "PED:WALK_CSAW", "PED:WALK_DOORPARTIAL",
    "PED:WALK_DRUNK", "PED:WALK_FAT", "PED:WALK_FATOLD", "PED:WALK_GANG1", "PED:WALK_GANG2",
    "PED:WALK_OLD", "PED:WALK_PLAYER", "PED:WALK_ROCKET", "PED:WALK_SHUFFLE", "PED:WALK_START",
    "PED:WALK_START_ARMED", "PED:WALK_START_CSAW", "PED:WALK_START_ROCKET", "PED:WALK_WUZI", "PED:WEAPON_CROUCH",
    "PED:WOMAN_IDLESTANCE", "PED:WOMAN_RUN", "PED:WOMAN_RUNBUSY", "PED:WOMAN_RUNFATOLD", "PED:WOMAN_RUNPANIC",
    "PED:WOMAN_RUNSEXY", "PED:WOMAN_WALKBUSY", "PED:WOMAN_WALKFATOLD", "PED:WOMAN_WALKNORM", "PED:WOMAN_WALKOLD",
    "PED:WOMAN_WALKPRO", "PED:WOMAN_WALKSEXY", "PED:WOMAN_WALKSHOP", "PED:XPRESSSCRATCH", "PLAYER_DVBYS:PLYR_DRIVEBYBWD",
    "PLAYER_DVBYS:PLYR_DRIVEBYFWD", "PLAYER_DVBYS:PLYR_DRIVEBYLHS", "PLAYER_DVBYS:PLYR_DRIVEBYRHS", "PLAYIDLES:SHIFT", "PLAYIDLES:SHLDR",
    "PLAYIDLES:STRETCH", "PLAYIDLES:STRLEG", "PLAYIDLES:TIME", "POLICE:COPTRAF_AWAY", "POLICE:COPTRAF_COME",
    "POLICE:COPTRAF_LEFT", "POLICE:COPTRAF_STOP", "POLICE:COP_GETOUTCAR_LHS", "POLICE:COP_MOVE_FWD", "POLICE:CRM_DRGBST_01",
    "POLICE:DOOR_KICK", "POLICE:PLC_DRGBST_01", "POLICE:PLC_DRGBST_02", "POOL:POOL_CHALKCUE", "POOL:POOL_IDLE_STANCE",
    "POOL:POOL_LONG_SHOT", "POOL:POOL_LONG_SHOT_O", "POOL:POOL_LONG_START", "POOL:POOL_LONG_START_O", "POOL:POOL_MED_SHOT",
    "POOL:POOL_MED_SHOT_O", "POOL:POOL_MED_START", "POOL:POOL_MED_START_O", "POOL:POOL_PLACE_WHITE", "POOL:POOL_SHORT_SHOT",
    "POOL:POOL_SHORT_SHOT_O", "POOL:POOL_SHORT_START", "POOL:POOL_SHORT_START_O", "POOL:POOL_WALK", "POOL:POOL_WALK_START",
    "POOL:POOL_XLONG_SHOT", "POOL:POOL_XLONG_SHOT_O", "POOL:POOL_XLONG_START", "POOL:POOL_XLONG_START_O", "POOR:WINWASH_START",
    "POOR:WINWASH_WASH2BEG", "PYTHON:PYTHON_CROUCHFIRE", "PYTHON:PYTHON_CROUCHRELOAD", "PYTHON:PYTHON_FIRE", "PYTHON:PYTHON_FIRE_POOR",
    "PYTHON:PYTHON_RELOAD", "QUAD:QUAD_BACK", "QUAD:QUAD_DRIVEBY_FT", "QUAD:QUAD_DRIVEBY_LHS", "QUAD:QUAD_DRIVEBY_RHS",
    "QUAD:QUAD_FWD", "QUAD:QUAD_GETOFF_B", "QUAD:QUAD_GETOFF_LHS", "QUAD:QUAD_GETOFF_RHS", "QUAD:QUAD_GETON_LHS",
    "QUAD:QUAD_GETON_RHS", "QUAD:QUAD_HIT", "QUAD:QUAD_KICK", "QUAD:QUAD_LEFT", "QUAD:QUAD_PASSENGER",
    "QUAD:QUAD_REVERSE", "QUAD:QUAD_RIDE", "QUAD:QUAD_RIGHT", "QUAD_DBZ:PASS_DRIVEBY_BWD", "QUAD_DBZ:PASS_DRIVEBY_FWD",
    "QUAD_DBZ:PASS_DRIVEBY_LHS", "QUAD_DBZ:PASS_DRIVEBY_RHS", "RAPPING:LAUGH_01", "RAPPING:RAP_A_IN", "RAPPING:RAP_A_LOOP",
    "RAPPING:RAP_A_OUT", "RAPPING:RAP_B_IN", "RAPPING:RAP_B_LOOP", "RAPPING:RAP_B_OUT", "RAPPING:RAP_C_LOOP",
    "RIFLE:RIFLE_CROUCHFIRE", "RIFLE:RIFLE_CROUCHLOAD", "RIFLE:RIFLE_FIRE", "RIFLE:RIFLE_FIRE_POOR", "RIFLE:RIFLE_LOAD",
    "RIOT:RIOT_ANGRY", "RIOT:RIOT_ANGRY_B", "RIOT:RIOT_CHALLENGE", "RIOT:RIOT_CHANT", "RIOT:RIOT_FUKU",
    "RIOT:RIOT_PUNCHES", "RIOT:RIOT_SHOUT", "ROB_BANK:CAT_SAFE_END", "ROB_BANK:CAT_SAFE_OPEN", "ROB_BANK:CAT_SAFE_OPEN_O",
    "ROB_BANK:CAT_SAFE_ROB", "ROB_BANK:SHP_HANDSUP_SCR", "ROCKET:IDLE_ROCKET", "ROCKET:ROCKETFIRE", "ROCKET:RUN_ROCKET",
    "ROCKET:WALK_ROCKET", "ROCKET:WALK_START_ROCKET", "RUSTLER:PLANE_ALIGN_LHS", "RUSTLER:PLANE_CLOSE", "RUSTLER:PLANE_GETIN",
    "RUSTLER:PLANE_GETOUT", "RUSTLER:PLANE_OPEN", "RYDER:RYD_BECKON_01", "RYDER:RYD_BECKON_02", "RYDER:RYD_BECKON_03",
    "RYDER:RYD_DIE_PT1", "RYDER:RYD_DIE_PT2", "RYDER:VAN_CRATE_L", "RYDER:VAN_CRATE_R", "RYDER:VAN_FALL_L",
    "RYDER:VAN_FALL_R", "RYDER:VAN_LEAN_L", "RYDER:VAN_LEAN_R", "RYDER:VAN_PICKUP_E", "RYDER:VAN_PICKUP_S",
    "RYDER:VAN_STAND", "RYDER:VAN_STAND_CRATE", "RYDER:VAN_THROW", "SCRATCHING:SCDLDLP", "SCRATCHING:SCDLULP",
    "SCRATCHING:SCDRDLP", "SCRATCHING:SCDRULP", "SCRATCHING:SCLNG_L", "SCRATCHING:SCLNG_R", "SCRATCHING:SCMID_L",
    "SCRATCHING:SCMID_R", "SCRATCHING:SCSHRTL", "SCRATCHING:SCSHRTR", "SCRATCHING:SC_LTOR", "SCRATCHING:SC_RTOL",
    "SHAMAL:SHAMAL_ALIGN", "SHAMAL:SHAMAL_GETIN_LHS", "SHAMAL:SHAMAL_GETOUT_LHS", "SHAMAL:SHAMAL_OPEN", "SHOP:ROB_2IDLE",
    "SHOP:ROB_LOOP", "SHOP:ROB_LOOP_THREAT", "SHOP:ROB_SHIFTY", "SHOP:ROB_STICKUP_IN", "SHOP:SHP_DUCK",
    "SHOP:SHP_DUCK_AIM", "SHOP:SHP_DUCK_FIRE", "SHOP:SHP_GUN_AIM", "SHOP:SHP_GUN_DUCK", "SHOP:SHP_GUN_FIRE",
    "SHOP:SHP_GUN_GRAB", "SHOP:SHP_GUN_THREAT", "SHOP:SHP_HANDSUP_SCR", "SHOP:SHP_JUMP_GLIDE", "SHOP:SHP_JUMP_LAND",
    "SHOP:SHP_JUMP_LAUNCH", "SHOP:SHP_ROB_GIVECASH", "SHOP:SHP_ROB_HANDSUP", "SHOP:SHP_ROB_REACT", "SHOP:SHP_SERVE_END",
    "SHOP:SHP_SERVE_IDLE", "SHOP:SHP_SERVE_LOOP", "SHOP:SHP_SERVE_START", "SHOP:SMOKE_RYD", "SHOTGUN:SHOTGUN_CROUCHFIRE",
    "SHOTGUN:SHOTGUN_FIRE", "SHOTGUN:SHOTGUN_FIRE_POOR", "SILENCED:CROUCHRELOAD", "SILENCED:SILENCECROUCHFIRE", "SILENCED:SILENCE_FIRE",
    "SILENCED:SILENCE_RELOAD", "SKATE:SKATE_IDLE", "SKATE:SKATE_RUN", "SKATE:SKATE_SPRINT", "SMOKING:F_SMKLEAN_LOOP",
    "SMOKING:M_SMKLEAN_LOOP", "SMOKING:M_SMKSTND_LOOP", "SMOKING:M_SMK_DRAG", "SMOKING:M_SMK_IN", "SMOKING:M_SMK_LOOP",
    "SMOKING:M_SMK_OUT", "SMOKING:M_SMK_TAP", "SNIPER:WEAPON_SNIPER", "SPRAYCAN:SPRAYCAN_FIRE", "SPRAYCAN:SPRAYCAN_FULL",
    "STRIP:PLY_CASH", "STRIP:PUN_CASH", "STRIP:PUN_HOLLER", "STRIP:PUN_LOOP", "STRIP:STRIP_A",
    "STRIP:STRIP_B", "STRIP:STRIP_C", "STRIP:STRIP_D", "STRIP:STRIP_E", "STRIP:STRIP_F",
    "STRIP:STRIP_G", "STRIP:STR_A2B", "STRIP:STR_B2A", "STRIP:STR_B2C", "STRIP:STR_C1",
    "STRIP:STR_C2", "STRIP:STR_C2B", "STRIP:STR_LOOP_A", "STRIP:STR_LOOP_B", "STRIP:STR_LOOP_C",
    "SUNBATHE:BATHERDOWN", "SUNBATHE:BATHERUP", "SUNBATHE:LAY_BAC_IN", "SUNBATHE:LAY_BAC_OUT", "SUNBATHE:PARKSIT_M_IDLEA",
    "SUNBATHE:PARKSIT_M_IDLEB", "SUNBATHE:PARKSIT_M_IDLEC", "SUNBATHE:PARKSIT_M_IN", "SUNBATHE:PARKSIT_M_OUT", "SUNBATHE:PARKSIT_W_IDLEA",
    "SUNBATHE:PARKSIT_W_IDLEB", "SUNBATHE:PARKSIT_W_IDLEC", "SUNBATHE:PARKSIT_W_IN", "SUNBATHE:PARKSIT_W_OUT", "SUNBATHE:SBATHE_F_LIEB2SIT",
    "SUNBATHE:SBATHE_F_OUT", "SUNBATHE:SITNWAIT_IN_W", "SUNBATHE:SITNWAIT_OUT_W", "SWAT:GNSTWALL_INJURD", "SWAT:JMP_WALL1M_180",
    "SWAT:RAIL_FALL", "SWAT:RAIL_FALL_CRAWL", "SWAT:SWT_BREACH_01", "SWAT:SWT_BREACH_02", "SWAT:SWT_BREACH_03",
    "SWAT:SWT_GO", "SWAT:SWT_LKT", "SWAT:SWT_STY", "SWAT:SWT_VENT_01", "SWAT:SWT_VENT_02",
    "SWAT:SWT_VNT_SHT_DIE", "SWAT:SWT_VNT_SHT_IN", "SWAT:SWT_VNT_SHT_LOOP", "SWAT:SWT_WLLPK_L", "SWAT:SWT_WLLPK_L_BACK",
    "SWAT:SWT_WLLPK_R", "SWAT:SWT_WLLPK_R_BACK", "SWAT:SWT_WLLSHOOT_IN_L", "SWAT:SWT_WLLSHOOT_IN_R", "SWAT:SWT_WLLSHOOT_OUT_L",
    "SWAT:SWT_WLLSHOOT_OUT_R", "SWEET:HO_ASS_SLAPPED", "SWEET:LAFIN_PLAYER", "SWEET:LAFIN_SWEET", "SWEET:PLYR_HNDSHLDR_01",
    "SWEET:SWEET_ASS_SLAP", "SWEET:SWEET_HNDSHLDR_01", "SWEET:SWEET_INJUREDLOOP", "SWIM:SWIM_BREAST", "SWIM:SWIM_CRAWL",
    "SWIM:SWIM_DIVE_UNDER", "SWIM:SWIM_GLIDE", "SWIM:SWIM_JUMPOUT", "SWIM:SWIM_TREAD", "SWIM:SWIM_UNDER",
    "SWORD:SWORD_1", "SWORD:SWORD_2", "SWORD:SWORD_3", "SWORD:SWORD_4", "SWORD:SWORD_BLOCK",
    "SWORD:SWORD_HIT_1", "SWORD:SWORD_HIT_2", "SWORD:SWORD_HIT_3", "SWORD:SWORD_IDLE", "SWORD:SWORD_PART",
    "TANK:TANK_ALIGN_LHS", "TANK:TANK_CLOSE_LHS", "TANK:TANK_DOORLOCKED", "TANK:TANK_GETIN_LHS", "TANK:TANK_GETOUT_LHS",
    "TANK:TANK_OPEN_LHS", "TATTOOS:TAT_ARML_IN_O", "TATTOOS:TAT_ARML_IN_P", "TATTOOS:TAT_ARML_IN_T", "TATTOOS:TAT_ARML_OUT_O",
    "TATTOOS:TAT_ARML_OUT_P", "TATTOOS:TAT_ARML_OUT_T", "TATTOOS:TAT_ARML_POSE_O", "TATTOOS:TAT_ARML_POSE_P", "TATTOOS:TAT_ARML_POSE_T",
    "TATTOOS:TAT_ARMR_IN_O", "TATTOOS:TAT_ARMR_IN_P", "TATTOOS:TAT_ARMR_IN_T", "TATTOOS:TAT_ARMR_OUT_O", "TATTOOS:TAT_ARMR_OUT_P",
    "TATTOOS:TAT_ARMR_OUT_T", "TATTOOS:TAT_ARMR_POSE_O", "TATTOOS:TAT_ARMR_POSE_P", "TATTOOS:TAT_ARMR_POSE_T", "TATTOOS:TAT_BACK_IN_O",
    "TATTOOS:TAT_BACK_IN_P", "TATTOOS:TAT_BACK_IN_T", "TATTOOS:TAT_BACK_OUT_O", "TATTOOS:TAT_BACK_OUT_P", "TATTOOS:TAT_BACK_OUT_T",
    "TATTOOS:TAT_BACK_POSE_O", "TATTOOS:TAT_BACK_POSE_P", "TATTOOS:TAT_BACK_POSE_T", "TATTOOS:TAT_BACK_SIT_IN_P", "TATTOOS:TAT_BACK_SIT_LOOP_P",
    "TATTOOS:TAT_BACK_SIT_OUT_P", "TATTOOS:TAT_BEL_IN_O", "TATTOOS:TAT_BEL_IN_T", "TATTOOS:TAT_BEL_OUT_O", "TATTOOS:TAT_BEL_OUT_T",
    "TATTOOS:TAT_BEL_POSE_O", "TATTOOS:TAT_BEL_POSE_T", "TATTOOS:TAT_CHE_IN_O", "TATTOOS:TAT_CHE_IN_P", "TATTOOS:TAT_CHE_IN_T",
    "TATTOOS:TAT_CHE_OUT_O", "TATTOOS:TAT_CHE_OUT_P", "TATTOOS:TAT_CHE_OUT_T", "TATTOOS:TAT_CHE_POSE_O", "TATTOOS:TAT_CHE_POSE_P",
    "TATTOOS:TAT_CHE_POSE_T", "TATTOOS:TAT_DROP_O", "TATTOOS:TAT_IDLE_LOOP_O", "TATTOOS:TAT_IDLE_LOOP_T", "TATTOOS:TAT_SIT_IN_O",
    "TATTOOS:TAT_SIT_IN_P", "TATTOOS:TAT_SIT_IN_T", "TATTOOS:TAT_SIT_LOOP_O", "TATTOOS:TAT_SIT_LOOP_P", "TATTOOS:TAT_SIT_LOOP_T",
    "TATTOOS:TAT_SIT_OUT_O", "TATTOOS:TAT_SIT_OUT_P", "TATTOOS:TAT_SIT_OUT_T", "TEC:TEC_CROUCHFIRE", "TEC:TEC_CROUCHRELOAD",
    "TEC:TEC_FIRE", "TEC:TEC_RELOAD", "TRAIN:TRAN_GTUP", "TRAIN:TRAN_HNG", "TRAIN:TRAN_OUCH",
    "TRAIN:TRAN_STMB", "TRUCK:TRUCK_ALIGN_LHS", "TRUCK:TRUCK_ALIGN_RHS", "TRUCK:TRUCK_CLOSEDOOR_LHS", "TRUCK:TRUCK_CLOSEDOOR_RHS",
    "TRUCK:TRUCK_CLOSE_LHS", "TRUCK:TRUCK_CLOSE_RHS", "TRUCK:TRUCK_GETIN_LHS", "TRUCK:TRUCK_GETIN_RHS", "TRUCK:TRUCK_GETOUT_LHS",
    "TRUCK:TRUCK_GETOUT_RHS", "TRUCK:TRUCK_JACKEDLHS", "TRUCK:TRUCK_JACKEDRHS", "TRUCK:TRUCK_OPEN_LHS", "TRUCK:TRUCK_OPEN_RHS",
    "TRUCK:TRUCK_PULLOUT_LHS", "TRUCK:TRUCK_PULLOUT_RHS", "TRUCK:TRUCK_SHUFFLE", "UZI:UZI_CROUCHFIRE", "UZI:UZI_CROUCHRELOAD",
    "UZI:UZI_FIRE", "UZI:UZI_FIRE_POOR", "UZI:UZI_RELOAD", "VAN:VAN_CLOSE_BACK_LHS", "VAN:VAN_CLOSE_BACK_RHS",
    "VAN:VAN_GETIN_BACK_LHS", "VAN:VAN_GETIN_BACK_RHS", "VAN:VAN_GETOUT_BACK_LHS", "VAN:VAN_GETOUT_BACK_RHS", "VAN:VAN_OPEN_BACK_LHS",
    "VAN:VAN_OPEN_BACK_RHS", "VENDING:VEND_DRINK2_P", "VENDING:VEND_DRINK_P", "VENDING:VEND_EAT1_P", "VENDING:VEND_EAT_P",
    "VENDING:VEND_USE", "VENDING:VEND_USE_PT2", "VORTEX:CAR_JUMPIN_LHS", "VORTEX:CAR_JUMPIN_RHS", "VORTEX:VORTEX_GETOUT_LHS",
    "VORTEX:VORTEX_GETOUT_RHS", "WAYFARER:WF_BACK", "WAYFARER:WF_DRIVEBYFT", "WAYFARER:WF_DRIVEBYLHS", "WAYFARER:WF_DRIVEBYRHS",
    "WAYFARER:WF_FWD", "WAYFARER:WF_GETOFFBACK", "WAYFARER:WF_GETOFFLHS", "WAYFARER:WF_GETOFFRHS", "WAYFARER:WF_HIT",
    "WAYFARER:WF_JUMPONL", "WAYFARER:WF_JUMPONR", "WAYFARER:WF_KICK", "WAYFARER:WF_LEFT", "WAYFARER:WF_PASSENGER",
    "WAYFARER:WF_PUSHES", "WAYFARER:WF_RIDE", "WAYFARER:WF_RIGHT", "WAYFARER:WF_STILL", "WEAPONS:SHP_1H_LIFT",
    "WEAPONS:SHP_1H_LIFT_END", "WEAPONS:SHP_1H_RET", "WEAPONS:SHP_1H_RET_S", "WEAPONS:SHP_2H_LIFT", "WEAPONS:SHP_2H_LIFT_END",
    "WEAPONS:SHP_2H_RET", "WEAPONS:SHP_2H_RET_S", "WEAPONS:SHP_AR_LIFT", "WEAPONS:SHP_AR_LIFT_END", "WEAPONS:SHP_AR_RET",
    "WEAPONS:SHP_AR_RET_S", "WEAPONS:SHP_G_LIFT_IN", "WEAPONS:SHP_G_LIFT_OUT", "WEAPONS:SHP_TRAY_IN", "WEAPONS:SHP_TRAY_OUT",
    "WEAPONS:SHP_TRAY_POSE", "WUZI:CS_DEAD_GUY", "WUZI:CS_PLYR_PT1", "WUZI:CS_PLYR_PT2", "WUZI:CS_WUZI_PT1",
    "WUZI:CS_WUZI_PT2", "WUZI:WALKSTART_IDLE_01", "WUZI:WUZI_FOLLOW", "WUZI:WUZI_GREET_PLYR", "WUZI:WUZI_GREET_WUZI",
    "WUZI:WUZI_GRND_CHK", "WUZI:WUZI_STAND_LOOP", "WUZI:WUZI_WALK", "WOP:DANCE_G1", "WOP:DANCE_G2",
    "WOP:DANCE_G3", "WOP:DANCE_G4", "WOP:DANCE_G5", "WOP:DANCE_G6", "WOP:DANCE_G7",
    "WOP:DANCE_G8", "WOP:DANCE_G9", "WOP:DANCE_G10", "WOP:DANCE_G11", "WOP:DANCE_G12",
    "WOP:DANCE_G13", "WOP:DANCE_G14", "WOP:DANCE_G15", "WOP:DANCE_G16", "WOP:DANCE_B1",
    "WOP:DANCE_B2", "WOP:DANCE_B3", "WOP:DANCE_B4", "WOP:DANCE_B5", "WOP:DANCE_B6",
    "WOP:DANCE_B7", "WOP:DANCE_B8", "WOP:DANCE_B9", "WOP:DANCE_B10", "WOP:DANCE_B11",
    "WOP:DANCE_B12", "WOP:DANCE_B13", "WOP:DANCE_B14", "WOP:DANCE_B15", "WOP:DANCE_B16",
    "WOP:DANCE_LOOP", "GFUNK:DANCE_G1", "GFUNK:DANCE_G2", "GFUNK:DANCE_G3", "GFUNK:DANCE_G4",
    "GFUNK:DANCE_G5", "GFUNK:DANCE_G6", "GFUNK:DANCE_G7", "GFUNK:DANCE_G8", "GFUNK:DANCE_G9",
    "GFUNK:DANCE_G10", "GFUNK:DANCE_G11", "GFUNK:DANCE_G12", "GFUNK:DANCE_G13", "GFUNK:DANCE_G14",
    "GFUNK:DANCE_G15", "GFUNK:DANCE_G16", "GFUNK:DANCE_B1", "GFUNK:DANCE_B2", "GFUNK:DANCE_B3",
    "GFUNK:DANCE_B4", "GFUNK:DANCE_B5", "GFUNK:DANCE_B6", "GFUNK:DANCE_B7", "GFUNK:DANCE_B8",
    "GFUNK:DANCE_B9", "GFUNK:DANCE_B10", "GFUNK:DANCE_B11", "GFUNK:DANCE_B12", "GFUNK:DANCE_B13",
    "GFUNK:DANCE_B14", "GFUNK:DANCE_B15", "GFUNK:DANCE_B16", "GFUNK:DANCE_LOOP", "RUNNINGMAN:DANCE_G1",
    "RUNNINGMAN:DANCE_G2", "RUNNINGMAN:DANCE_G3", "RUNNINGMAN:DANCE_G4", "RUNNINGMAN:DANCE_G5", "RUNNINGMAN:DANCE_G6",
    "RUNNINGMAN:DANCE_G7", "RUNNINGMAN:DANCE_G8", "RUNNINGMAN:DANCE_G9", "RUNNINGMAN:DANCE_G10", "RUNNINGMAN:DANCE_G11",
    "RUNNINGMAN:DANCE_G12", "RUNNINGMAN:DANCE_G13", "RUNNINGMAN:DANCE_G14", "RUNNINGMAN:DANCE_G15", "RUNNINGMAN:DANCE_G16",
    "RUNNINGMAN:DANCE_B1", "RUNNINGMAN:DANCE_B2", "RUNNINGMAN:DANCE_B3", "RUNNINGMAN:DANCE_B4", "RUNNINGMAN:DANCE_B5",
    "RUNNINGMAN:DANCE_B6", "RUNNINGMAN:DANCE_B7", "RUNNINGMAN:DANCE_B8", "RUNNINGMAN:DANCE_B9", "RUNNINGMAN:DANCE_B10",
    "RUNNINGMAN:DANCE_B11", "RUNNINGMAN:DANCE_B12", "RUNNINGMAN:DANCE_B13", "RUNNINGMAN:DANCE_B14", "RUNNINGMAN:DANCE_B15",
    "RUNNINGMAN:DANCE_B16", "RUNNINGMAN:DANCE_LOOP"
};

stock GetAnimIndexByName(animlib[], animname[])
{
    new string[sizeof AnimationsNames[]];
    format(string, sizeof string, "%s:%s", animlib, animname);
    for(new i = sizeof(AnimationsNames) - 1; i != -1; --i)
    {
        if(strfind(AnimationsNames[i], string, true) != -1) return i;
    }
    return -1;
}
Reply

Armour & Health Functions

That functions will give extra health or armour to players, for example if a player has 10 health and you use GivePlayerHealth(playerid, 10); somewhere in your script it will set player's health to 20, the same will happen with the armour function

If the amount isn't higher than the current health/armour it won't process the function, if you want to remove this part just remove if declare
GivePlayerArmour Function
Код:
stock GivePlayerArmour(playerid, amount)
{
	new Float:armour;
	GetPlayerArmour(playerid, armour);
	if (armour < amount)
	{
		SetPlayerArmour(playerid, armour + amount);
	}
	return 1;
}
GivePlayerHealth Function
Код:
stock GivePlayerHealth(playerid, amount)
{
	new Float:health;
	GetPlayerHealth(playerid, health);
	if (health < amount)
	{
		SetPlayerHealth(playerid, health + amount);
	}
	return 1;
}
Reply

Just made this macro, using Crayder's idea but fixing it so that 1900, 2100 and years like that won't get considered as leap years.


pawn Код:
#define IsLeapYear(%0) (!(%0 & 15) || (%0 % 100) && !(%0 & 3))
Reply

Two stocks I've made for my gamemode that can help:
IsVehicleOccupied(vehicleid) - Simply checks if there's someone in a vehicle. Good for /respawncars commands and such.
Quote:

stock IsVehicleOccupied(vehicleid) {
for (new i=0, j=MAX_PLAYERS; i<j; i++) {
if(GetPlayerVehicleID(i) == vehicleid) {
return true;
}
}
return false;
}

GetDriverID(vehicleid) - Returns the ID of the vehicle's driver (returns -1 if there is no driver).
Quote:

stock GetDriverID(vehicleid) {
for (new i=0, j=MAX_PLAYERS; i<j; i++) {
if(GetPlayerVehicleID(i) == vehicleid && GetPlayerState(i)==PLAYER_STATE_DRIVER) {
return i;
}
}
return -1;
}

Reply

Код:
stock GetDayName()
{
	new DayName[128];
    switch(gday)
    {
	case 0: format(DayName, sizeof(DayName), "Sunday");
        case 1: format(DayName, sizeof(DayName), "Monday");
        case 2: format(DayName, sizeof(DayName), "Tuesday");
        case 3: format(DayName, sizeof(DayName), "Wednesday");
        case 4: format(DayName, sizeof(DayName), "Thursday");
        case 5: format(DayName, sizeof(DayName), "Friday");
        case 6: format(DayName, sizeof(DayName), "Saturday");
    }
    return DayName;
}[
I'm working on a cops and robbers script, these might be helpful for some.

Код:
stock SetPlayerToFacePlayer(playerid, targetid)
{
	new Float:x[2],Float:y[2], Float:z[2],Float:angle;

	GetPlayerPos(targetid, x[0], y[0], z[0]);
	GetPlayerPos(playerid, x[1], y[1], z[1]);

	angle = (180.0 - atan2(x[1] - x[0], y[1] - y[0]));
	SetPlayerFacingAngle(playerid, angle + (5.0 * -1));
}
Код:
stock FlipVehicle(vehicleid)
{
	new
	    Float:fAngle;

	GetVehicleZAngle(vehicleid, fAngle);

	SetVehicleZAngle(vehicleid, fAngle);
	SetVehicleVelocity(vehicleid, 0.0, 0.0, 0.0);
}
I'll post more later..
Reply

Quote:
Originally Posted by [ND]xXZeusXx.
Посмотреть сообщение
Код:
stock GetDayName()
{
	new DayName[128];
    switch(gday)
    {
	case 0: format(DayName, sizeof(DayName), "Sunday");
        case 1: format(DayName, sizeof(DayName), "Monday");
        case 2: format(DayName, sizeof(DayName), "Tuesday");
        case 3: format(DayName, sizeof(DayName), "Wednesday");
        case 4: format(DayName, sizeof(DayName), "Thursday");
        case 5: format(DayName, sizeof(DayName), "Friday");
        case 6: format(DayName, sizeof(DayName), "Saturday");
    }
    return DayName;
}
I'm working on a cops and robbers script, these might be helpful for some.

Код:
stock SetPlayerToFacePlayer(playerid, targetid)
{
	new Float:x[2],Float:y[2], Float:z[2],Float:angle;

	GetPlayerPos(targetid, x[0], y[0], z[0]);
	GetPlayerPos(playerid, x[1], y[1], z[1]);

	angle = (180.0 - atan2(x[1] - x[0], y[1] - y[0]));
	SetPlayerFacingAngle(playerid, angle + (5.0 * -1));
}
Код:
stock FlipVehicle(vehicleid)
{
	new
	    Float:fAngle;

	GetVehicleZAngle(vehicleid, fAngle);

	SetVehicleZAngle(vehicleid, fAngle);
	SetVehicleVelocity(vehicleid, 0.0, 0.0, 0.0);
}
I'll post more later..
Both of the first two are bad, and the last one can be improved.
For the first one: It doesn't have the 'gday' parameter. It's string size definitely doesn't need to be that large. It doesn't need a slow switch. Declaring the names only once instead of using format is a lot better, and since it's "static const" it will only be declared once.
pawn Код:
stock GetDayName(day)
{
    static const days[7][10] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
    return days[day];
}
For the second one (mainly efficiency):
pawn Код:
stock SetPlayerToFacePlayer(playerid, targetid)
{
    new Float:px, Float:py, Float:tx, Float:ty, Float:z;

    GetPlayerPos(playerid, px, py, z);
    GetPlayerPos(targetid, tx, ty, z);

    SetPlayerFacingAngle(playerid, (180.0 - atan2(tx - px, ty - py));
    //SetCameraBehindPlayer(playerid);
}
For the third one, here is this macro (if you use YSI, you don't need to define 'I@'):
pawn Код:
new I@;
#define FlipVehicle(%0) SetVehicleZAngle((%0), (GetVehicleZAngle((%0), Float:I@), Float:I@))
Reply

Thanks, ill keep that in mind.
Reply

Hello, today i wanna share something i created today. This will create a blood like particle. ( i personally use it when a player is shot). i found this at other server and tried to clone it. It works pretty kay for me.

Код:
stock CreateBlood(playerid)
{
	new Float:x, Float:y, Float:z;

	GetPlayerPos(playerid, x, y, z);
	SetTimerEx("DestroyBlood", 1500, false, "d", CreateDynamicObject(18668, x, y, z - 1.5, 0.0, 0.0, 0.0));

	return 1;
}
And this is the callback of the timer.
Код:
forward DestroyBlood(objectid);
public DestroyBlood(objectid)
{
	DestroyDynamicObject(objectid);
}
Pretty simple and useful, eh?

(i use it at "OnPlayerGiveDamage).

Looking for any constructive criticism on how this can be improved. (Crayder) :P
Reply

Quote:
Originally Posted by RyDeR`
Посмотреть сообщение
Info
Just a simple piece of code which you can to detect IP adresses.
It returns true/1 if it detects a ip otherwise false/0.

Code
pawn Код:
stock stringContainsIP(const szStr[])
{
    new
        iDots,
        i
    ;
    while(szStr[i] != EOS)
    {
        if('0' <= szStr[i] <= '9')
        {
            do
            {
                if(szStr[i] == '.')
                    iDots++;
               
                i++;
            }
            while(('0' <= szStr[i] <= '9') || szStr[i] == '.' || szStr[i] == ':');
        }
        if(iDots > 2)
            return 1;
        else
            iDots = 0;
       
        i++;
    }
    return 0;
}
Usage
Block advertisements:
Under OnPlayerText:
pawn Код:
if(stringContainsIP(text))
{
    new
        szMsg[128]
    ;
    GetPlayerName(playerid, szMsg, MAX_PLAYER_NAME);
   
    format(szMsg, sizeof(szMsg), "%s has been banned due advertising!", szMsg);
    SendClientMessageToAll(0xFF0000FF, szMsg);
    Ban(playerid);
   
    return 0;
}
This will ban the player if he writes an IP adress like 78.22.66.22:7777 (doesn't matter which IP)
This doesn't work if the player uses a command like /me, /do, /a etc.
How can I get it to work that way?
Reply

It could be helpful, I guess.

Code:
isBulletWeapon(weaponid)
{
    switch(weaponid)
    {
        case 16..18, 22..39, 41..43: return 1;
    }
    return 0;
}
Reply


Forum Jump:


Users browsing this thread: 42 Guest(s)