/* SA-MP NPC Functions
|
|
*
|
|
* (c) Copyright 2009, SA-MP Team
|
|
*
|
|
*/
|
|
|
|
#if defined _samp_included
|
|
#endinput
|
|
#endif
|
|
#define _samp_included
|
|
#pragma library samp
|
|
|
|
#pragma tabsize 4
|
|
|
|
#include <core>
|
|
#include <float>
|
|
#include <string>
|
|
#include <file>
|
|
#include <time>
|
|
#include <datagram>
|
|
|
|
// --------------------------------------------------
|
|
// Natives
|
|
// --------------------------------------------------
|
|
|
|
// Util
|
|
native print(const string[]);
|
|
native printf(const format[], {Float,_}:...);
|
|
native format(output[], len, const format[], {Float,_}:...);
|
|
native SetTimer(funcname[], interval, repeating);
|
|
native KillTimer(timerid);
|
|
native GetTickCount();
|
|
native Float:asin(Float:value);
|
|
native Float:acos(Float:value);
|
|
native Float:atan(Float:value);
|
|
native Float:atan2(Float:x, Float:y);
|
|
|
|
native SendChat(msg[]);
|
|
native SendCommand(commandtext[]);
|
|
|
|
native GetPlayerState(playerid);
|
|
native GetPlayerPos(playerid, &Float:x, &Float:y, &Float:z);
|
|
native GetPlayerVehicleID(playerid);
|
|
native GetPlayerArmedWeapon(playerid);
|
|
native GetPlayerHealth(playerid);
|
|
native GetPlayerArmour(playerid);
|
|
native GetPlayerSpecialAction(playerid);
|
|
native IsPlayerStreamedIn(playerid);
|
|
native IsVehicleStreamedIn(vehicleid);
|
|
native GetPlayerKeys(playerid, &keys, &updown, &leftright);
|
|
native GetPlayerFacingAngle(playerid, &Float:ang);
|
|
native GetMyPos(&Float:x, &Float:y, &Float:z);
|
|
native SetMyPos(Float:x, Float:y, Float:z);
|
|
native GetMyFacingAngle(&Float:ang);
|
|
native SetMyFacingAngle(Float:ang);
|
|
|
|
native GetDistanceFromMeToPoint(Float:X, Float:Y, Float:Z, &Float:Distance);
|
|
native IsPlayerInRangeOfPoint(playerid, Float:range, Float:X, Float:Y, Float:Z);
|
|
|
|
native GetPlayerName(playerid, const name[], len);
|
|
native IsPlayerConnected(playerid);
|
|
|
|
#define PLAYER_RECORDING_TYPE_NONE 0
|
|
#define PLAYER_RECORDING_TYPE_DRIVER 1
|
|
#define PLAYER_RECORDING_TYPE_ONFOOT 2
|
|
|
|
native StartRecordingPlayback(playbacktype, recordname[]);
|
|
native StopRecordingPlayback();
|
|
native PauseRecordingPlayback();
|
|
native ResumeRecordingPlayback();
|
|
|
|
// --------------------------------------------------
|
|
// Defines
|
|
// --------------------------------------------------
|
|
|
|
// States
|
|
#define PLAYER_STATE_NONE (0)
|
|
#define PLAYER_STATE_ONFOOT (1)
|
|
#define PLAYER_STATE_DRIVER (2)
|
|
#define PLAYER_STATE_PASSENGER (3)
|
|
#define PLAYER_STATE_WASTED (7)
|
|
#define PLAYER_STATE_SPAWNED (8)
|
|
#define PLAYER_STATE_SPECTATING (9)
|
|
|
|
// Misc
|
|
#define MAX_PLAYER_NAME (24)
|
|
#define MAX_PLAYERS (500)
|
|
#define MAX_VEHICLES (2000)
|
|
#define INVALID_PLAYER_ID (0xFFFF)
|
|
#define INVALID_VEHICLE_ID (0xFFFF)
|
|
#define NO_TEAM (255)
|
|
#define MAX_OBJECTS (150)
|
|
#define INVALID_OBJECT_ID (255)
|
|
#define MAX_GANG_ZONES (1024)
|
|
#define MAX_TEXT_DRAWS (1024)
|
|
#define MAX_MENUS (128)
|
|
#define INVALID_MENU (0xFF)
|
|
#define INVALID_TEXT_DRAW (0xFFFF)
|
|
#define INVALID_GANG_ZONE (-1)
|
|
|
|
// Weapons
|
|
#define WEAPON_BRASSKNUCKLE (1)
|
|
#define WEAPON_GOLFCLUB (2)
|
|
#define WEAPON_NITESTICK (3)
|
|
#define WEAPON_KNIFE (4)
|
|
#define WEAPON_BAT (5)
|
|
#define WEAPON_SHOVEL (6)
|
|
#define WEAPON_POOLSTICK (7)
|
|
#define WEAPON_KATANA (8)
|
|
#define WEAPON_CHAINSAW (9)
|
|
#define WEAPON_DILDO (10)
|
|
#define WEAPON_DILDO2 (11)
|
|
#define WEAPON_VIBRATOR (12)
|
|
#define WEAPON_VIBRATOR2 (13)
|
|
#define WEAPON_FLOWER (14)
|
|
#define WEAPON_CANE (15)
|
|
#define WEAPON_GRENADE (16)
|
|
#define WEAPON_TEARGAS (17)
|
|
#define WEAPON_MOLTOV (18)
|
|
#define WEAPON_COLT45 (22)
|
|
#define WEAPON_SILENCED (23)
|
|
#define WEAPON_DEAGLE (24)
|
|
#define WEAPON_SHOTGUN (25)
|
|
#define WEAPON_SAWEDOFF (26)
|
|
#define WEAPON_SHOTGSPA (27)
|
|
#define WEAPON_UZI (28)
|
|
#define WEAPON_MP5 (29)
|
|
#define WEAPON_AK47 (30)
|
|
#define WEAPON_M4 (31)
|
|
#define WEAPON_TEC9 (32)
|
|
#define WEAPON_RIFLE (33)
|
|
#define WEAPON_SNIPER (34)
|
|
#define WEAPON_ROCKETLAUNCHER (35)
|
|
#define WEAPON_HEATSEEKER (36)
|
|
#define WEAPON_FLAMETHROWER (37)
|
|
#define WEAPON_MINIGUN (38)
|
|
#define WEAPON_SATCHEL (39)
|
|
#define WEAPON_BOMB (40)
|
|
#define WEAPON_SPRAYCAN (41)
|
|
#define WEAPON_FIREEXTINGUISHER (42)
|
|
#define WEAPON_CAMERA (43)
|
|
#define WEAPON_PARACHUTE (46)
|
|
#define WEAPON_VEHICLE (49)
|
|
#define WEAPON_DROWN (53)
|
|
#define WEAPON_COLLISION (54)
|
|
|
|
// Keys
|
|
#define KEY_ACTION (1)
|
|
#define KEY_CROUCH (2)
|
|
#define KEY_FIRE (4)
|
|
#define KEY_SPRINT (8)
|
|
#define KEY_SECONDARY_ATTACK (16)
|
|
#define KEY_JUMP (32)
|
|
#define KEY_LOOK_RIGHT (64)
|
|
#define KEY_HANDBRAKE (128)
|
|
#define KEY_LOOK_LEFT (256)
|
|
#define KEY_SUBMISSION (512)
|
|
#define KEY_LOOK_BEHIND (512)
|
|
#define KEY_WALK (1024)
|
|
#define KEY_ANALOG_UP (2048)
|
|
#define KEY_ANALOG_DOWN (4096)
|
|
#define KEY_ANALOG_RIGHT (16384)
|
|
#define KEY_ANALOG_LEFT (8192)
|
|
|
|
#define KEY_UP (-128)
|
|
#define KEY_DOWN (128)
|
|
#define KEY_LEFT (-128)
|
|
#define KEY_RIGHT (128)
|
|
|
|
// --------------------------------------------------
|
|
// Forwards (Callback declarations)
|
|
// --------------------------------------------------
|
|
|
|
forward OnNPCModeInit();
|
|
forward OnNPCModeExit();
|
|
forward OnNPCConnect(myplayerid);
|
|
forward OnNPCDisconnect(reason[]);
|
|
forward OnNPCSpawn();
|
|
forward OnNPCEnterVehicle(vehicleid, seatid);
|
|
forward OnNPCExitVehicle();
|
|
forward OnClientMessage(color, text[]);
|
|
forward OnPlayerDeath(playerid);
|
|
forward OnPlayerText(playerid, text[]);
|
|
forward OnPlayerStreamIn(playerid);
|
|
forward OnPlayerStreamOut(playerid);
|
|
forward OnVehicleStreamIn(vehicleid);
|
|
forward OnVehicleStreamOut(vehicleid);
|
|
forward OnRecordingPlaybackEnd();
|
|
|
|
// --------------------------------------------------
|