1
0

a_samp.inc 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440
  1. /* SA-MP Functions
  2. *
  3. * (c) Copyright 2005-2017, SA-MP Team
  4. *
  5. */
  6. #if defined _samp_included
  7. #endinput
  8. #endif
  9. #define _samp_included
  10. #pragma library samp
  11. #pragma tabsize 4
  12. // Ignores warning 217 for properly indented PAWNO code
  13. // It's tab size is 4 and often uses 4 spaces instead, PAWNCC's is 8
  14. #include <core>
  15. #include <float>
  16. #include <string>
  17. #include <file>
  18. #include <time>
  19. #include <datagram>
  20. #include <a_players>
  21. #include <a_vehicles>
  22. #include <a_objects>
  23. #include <a_actor>
  24. #include <a_sampdb>
  25. // Limits and internal constants
  26. #define MAX_PLAYER_NAME (24)
  27. #define MAX_PLAYERS (1000)
  28. #define MAX_VEHICLES (2000)
  29. #define MAX_ACTORS (1000)
  30. #define INVALID_PLAYER_ID (0xFFFF)
  31. #define INVALID_VEHICLE_ID (0xFFFF)
  32. #define INVALID_ACTOR_ID (0xFFFF)
  33. #define NO_TEAM (255)
  34. #define MAX_OBJECTS (2000)
  35. #define INVALID_OBJECT_ID (0xFFFF)
  36. #define MAX_GANG_ZONES (1024)
  37. #define MAX_TEXT_DRAWS (2048)
  38. #define MAX_PLAYER_TEXT_DRAWS (256)
  39. #define MAX_MENUS (128)
  40. #define MAX_3DTEXT_GLOBAL (1024)
  41. #define MAX_3DTEXT_PLAYER (1024)
  42. #define MAX_PICKUPS (4096)
  43. #define INVALID_MENU (0xFF)
  44. #define INVALID_TEXT_DRAW (0xFFFF)
  45. #define INVALID_GANG_ZONE (-1)
  46. #define INVALID_3DTEXT_ID (0xFFFF)
  47. // --------------------------------------------------
  48. // Natives
  49. // --------------------------------------------------
  50. // Util
  51. native print(const string[]);
  52. native printf(const format[], {Float,_}:...);
  53. native format(output[], len, const format[], {Float,_}:...);
  54. native SendClientMessage(playerid, color, const message[]);
  55. native SendClientMessageToAll(color, const message[]);
  56. native SendPlayerMessageToPlayer(playerid, senderid, const message[]);
  57. native SendPlayerMessageToAll(senderid, const message[]);
  58. native SendDeathMessage(killer, killee, weapon);
  59. native SendDeathMessageToPlayer(playerid, killer, killee, weapon);
  60. native GameTextForAll(const string[],time,style);
  61. native GameTextForPlayer(playerid,const string[],time,style);
  62. native SetTimer(funcname[], interval, repeating);
  63. native SetTimerEx(funcname[], interval, repeating, const format[], {Float,_}:...);
  64. native KillTimer(timerid);
  65. native GetTickCount();
  66. native GetMaxPlayers();
  67. native CallRemoteFunction(const function[], const format[], {Float,_}:...);
  68. native CallLocalFunction(const function[], const format[], {Float,_}:...);
  69. native Float:VectorSize(Float:x, Float:y, Float:z);
  70. native Float:asin(Float:value);
  71. native Float:acos(Float:value);
  72. native Float:atan(Float:value);
  73. native Float:atan2(Float:x, Float:y);
  74. native GetPlayerPoolSize();
  75. native GetVehiclePoolSize();
  76. native GetActorPoolSize();
  77. // Hash
  78. native SHA256_PassHash(password[], salt[], ret_hash[], ret_hash_len); // SHA256 for password hashing
  79. // Server wide persistent variable system (SVars)
  80. native SetSVarInt(varname[], int_value);
  81. native GetSVarInt(varname[]);
  82. native SetSVarString(varname[], string_value[]);
  83. native GetSVarString(varname[], string_return[], len);
  84. native SetSVarFloat(varname[], Float:float_value);
  85. native Float:GetSVarFloat(varname[]);
  86. native DeleteSVar(varname[]);
  87. // SVar enumeration
  88. #define SERVER_VARTYPE_NONE 0
  89. #define SERVER_VARTYPE_INT 1
  90. #define SERVER_VARTYPE_STRING 2
  91. #define SERVER_VARTYPE_FLOAT 3
  92. native GetSVarsUpperIndex();
  93. native GetSVarNameAtIndex(index, ret_varname[], ret_len);
  94. native GetSVarType(varname[]);
  95. // Game
  96. native SetGameModeText(const string[]);
  97. native SetTeamCount(count);
  98. native AddPlayerClass(modelid, Float:spawn_x, Float:spawn_y, Float:spawn_z, Float:z_angle, weapon1, weapon1_ammo, weapon2, weapon2_ammo, weapon3, weapon3_ammo);
  99. native AddPlayerClassEx(teamid, modelid, Float:spawn_x, Float:spawn_y, Float:spawn_z, Float:z_angle, weapon1, weapon1_ammo, weapon2, weapon2_ammo, weapon3, weapon3_ammo);
  100. native AddStaticVehicle(modelid, Float:spawn_x, Float:spawn_y, Float:spawn_z, Float:z_angle, color1, color2);
  101. native AddStaticVehicleEx(modelid, Float:spawn_x, Float:spawn_y, Float:spawn_z, Float:z_angle, color1, color2, respawn_delay, addsiren=0);
  102. native AddStaticPickup(model, type, Float:X, Float:Y, Float:Z, virtualworld = 0);
  103. native CreatePickup(model, type, Float:X, Float:Y, Float:Z, virtualworld = 0);
  104. native DestroyPickup(pickup);
  105. native ShowNameTags(show);
  106. native ShowPlayerMarkers(mode);
  107. native GameModeExit();
  108. native SetWorldTime(hour);
  109. native GetWeaponName(weaponid, const weapon[], len);
  110. native EnableTirePopping(enable); // deprecated function
  111. native EnableVehicleFriendlyFire();
  112. native AllowInteriorWeapons(allow);
  113. native SetWeather(weatherid);
  114. native SetGravity(Float:gravity);
  115. native AllowAdminTeleport(allow);
  116. native SetDeathDropAmount(amount);
  117. native CreateExplosion(Float:X, Float:Y, Float:Z, type, Float:Radius);
  118. native EnableZoneNames(enable);
  119. native UsePlayerPedAnims(); // Will cause the players to use CJ running/walking animations
  120. native DisableInteriorEnterExits(); // will disable all interior enter/exits in the game.
  121. native SetNameTagDrawDistance(Float:distance); // Distance at which nametags will start rendering on the client.
  122. native DisableNameTagLOS(); // Disables the nametag Line-Of-Sight checking
  123. native LimitGlobalChatRadius(Float:chat_radius);
  124. native LimitPlayerMarkerRadius(Float:marker_radius);
  125. // Npc
  126. native ConnectNPC(name[], script[]);
  127. native IsPlayerNPC(playerid);
  128. // Artwork/NetModels
  129. #define DOWNLOAD_REQUEST_EMPTY 0
  130. #define DOWNLOAD_REQUEST_MODEL_FILE 1
  131. #define DOWNLOAD_REQUEST_TEXTURE_FILE 2
  132. native AddCharModel(baseid, newid, dffname[], txdname[]);
  133. native AddSimpleModel(virtualworld, baseid, newid, dffname[], txdname[]);
  134. native AddSimpleModelTimed(virtualworld, baseid, newid, dffname[], txdname[], timeon, timeoff);
  135. native FindModelFileNameFromCRC(crc, retstr[], retstr_size);
  136. native FindTextureFileNameFromCRC(crc, retstr[], retstr_size);
  137. native RedirectDownload(playerid, url[]);
  138. // Admin
  139. native IsPlayerAdmin(playerid);
  140. native Kick(playerid);
  141. native Ban(playerid);
  142. native BanEx(playerid, const reason[]);
  143. native SendRconCommand(command[]);
  144. native GetPlayerNetworkStats(playerid, retstr[], retstr_size);
  145. native GetNetworkStats(retstr[], retstr_size);
  146. native GetPlayerVersion(playerid, const version[], len); // Returns the SA-MP client revision as reported by the player
  147. native BlockIpAddress(ip_address[], timems);
  148. native UnBlockIpAddress(ip_address[]);
  149. // Deprecated:
  150. native GetServerVarAsString(const varname[], buffer[], len);
  151. native GetServerVarAsInt(const varname[]);
  152. native GetServerVarAsBool(const varname[]);
  153. // These are the same 3 functions as above although they avoid the name ambiguity/conflict with the SVar system.
  154. native GetConsoleVarAsString(const varname[], buffer[], len);
  155. native GetConsoleVarAsInt(const varname[]);
  156. native GetConsoleVarAsBool(const varname[]);
  157. // Extended admin network stats
  158. native GetServerTickRate();
  159. native NetStats_GetConnectedTime(playerid);
  160. native NetStats_MessagesReceived(playerid);
  161. native NetStats_BytesReceived(playerid);
  162. native NetStats_MessagesSent(playerid);
  163. native NetStats_BytesSent(playerid);
  164. native NetStats_MessagesRecvPerSecond(playerid);
  165. native Float:NetStats_PacketLossPercent(playerid);
  166. native NetStats_ConnectionStatus(playerid);
  167. native NetStats_GetIpPort(playerid, ip_port[], ip_port_len);
  168. // Menu
  169. native Menu:CreateMenu(const title[], columns, Float:x, Float:y, Float:col1width, Float:col2width = 0.0);
  170. native DestroyMenu(Menu:menuid);
  171. native AddMenuItem(Menu:menuid, column, const menutext[]);
  172. native SetMenuColumnHeader(Menu:menuid, column, const columnheader[]);
  173. native ShowMenuForPlayer(Menu:menuid, playerid);
  174. native HideMenuForPlayer(Menu:menuid, playerid);
  175. native IsValidMenu(Menu:menuid);
  176. native DisableMenu(Menu:menuid);
  177. native DisableMenuRow(Menu:menuid, row);
  178. native Menu:GetPlayerMenu(playerid);
  179. // Text Draw
  180. #define TEXT_DRAW_FONT_SPRITE_DRAW 4
  181. #define TEXT_DRAW_FONT_MODEL_PREVIEW 5
  182. native Text:TextDrawCreate(Float:x, Float:y, text[]);
  183. native TextDrawDestroy(Text:text);
  184. native TextDrawLetterSize(Text:text, Float:x, Float:y);
  185. native TextDrawTextSize(Text:text, Float:x, Float:y);
  186. native TextDrawAlignment(Text:text, alignment);
  187. native TextDrawColor(Text:text, color);
  188. native TextDrawUseBox(Text:text, use);
  189. native TextDrawBoxColor(Text:text, color);
  190. native TextDrawSetShadow(Text:text, size);
  191. native TextDrawSetOutline(Text:text, size);
  192. native TextDrawBackgroundColor(Text:text, color);
  193. native TextDrawFont(Text:text, font);
  194. native TextDrawSetProportional(Text:text, set);
  195. native TextDrawSetSelectable(Text:text, set);
  196. native TextDrawShowForPlayer(playerid, Text:text);
  197. native TextDrawHideForPlayer(playerid, Text:text);
  198. native TextDrawShowForAll(Text:text);
  199. native TextDrawHideForAll(Text:text);
  200. native TextDrawSetString(Text:text, string[]);
  201. native TextDrawSetPreviewModel(Text:text, modelindex);
  202. native TextDrawSetPreviewRot(Text:text, Float:fRotX, Float:fRotY, Float:fRotZ, Float:fZoom = 1.0);
  203. native TextDrawSetPreviewVehCol(Text:text, color1, color2);
  204. // Gang Zones
  205. native GangZoneCreate(Float:minx, Float:miny, Float:maxx, Float:maxy);
  206. native GangZoneDestroy(zone);
  207. native GangZoneShowForPlayer(playerid, zone, color);
  208. native GangZoneShowForAll(zone, color);
  209. native GangZoneHideForPlayer(playerid, zone);
  210. native GangZoneHideForAll(zone);
  211. native GangZoneFlashForPlayer(playerid, zone, flashcolor);
  212. native GangZoneFlashForAll(zone, flashcolor);
  213. native GangZoneStopFlashForPlayer(playerid, zone);
  214. native GangZoneStopFlashForAll(zone);
  215. // Global 3D Text Labels
  216. native Text3D:Create3DTextLabel(text[], color, Float:X, Float:Y, Float:Z, Float:DrawDistance, virtualworld, testLOS=0);
  217. native Delete3DTextLabel(Text3D:id);
  218. native Attach3DTextLabelToPlayer(Text3D:id, playerid, Float:OffsetX, Float:OffsetY, Float:OffsetZ);
  219. native Attach3DTextLabelToVehicle(Text3D:id, vehicleid, Float:OffsetX, Float:OffsetY, Float:OffsetZ);
  220. native Update3DTextLabelText(Text3D:id, color, text[]);
  221. // Per-player 3D Text Labels
  222. native PlayerText3D:CreatePlayer3DTextLabel(playerid, text[], color, Float:X, Float:Y, Float:Z, Float:DrawDistance, attachedplayer=INVALID_PLAYER_ID, attachedvehicle=INVALID_VEHICLE_ID, testLOS=0);
  223. native DeletePlayer3DTextLabel(playerid, PlayerText3D:id);
  224. native UpdatePlayer3DTextLabelText(playerid, PlayerText3D:id, color, text[]);
  225. // Player GUI Dialog
  226. #define DIALOG_STYLE_MSGBOX 0
  227. #define DIALOG_STYLE_INPUT 1
  228. #define DIALOG_STYLE_LIST 2
  229. #define DIALOG_STYLE_PASSWORD 3
  230. #define DIALOG_STYLE_TABLIST 4
  231. #define DIALOG_STYLE_TABLIST_HEADERS 5
  232. native ShowPlayerDialog(playerid, dialogid, style, caption[], info[], button1[], button2[]);
  233. // --------------------------------------------------
  234. // Defines
  235. // --------------------------------------------------
  236. // States
  237. #define PLAYER_STATE_NONE (0)
  238. #define PLAYER_STATE_ONFOOT (1)
  239. #define PLAYER_STATE_DRIVER (2)
  240. #define PLAYER_STATE_PASSENGER (3)
  241. #define PLAYER_STATE_EXIT_VEHICLE (4) // (used internally)
  242. #define PLAYER_STATE_ENTER_VEHICLE_DRIVER (5) // (used internally)
  243. #define PLAYER_STATE_ENTER_VEHICLE_PASSENGER (6) // (used internally)
  244. #define PLAYER_STATE_WASTED (7)
  245. #define PLAYER_STATE_SPAWNED (8)
  246. #define PLAYER_STATE_SPECTATING (9)
  247. // Marker modes used by ShowPlayerMarkers()
  248. #define PLAYER_MARKERS_MODE_OFF (0)
  249. #define PLAYER_MARKERS_MODE_GLOBAL (1)
  250. #define PLAYER_MARKERS_MODE_STREAMED (2)
  251. // Weapons
  252. #define WEAPON_BRASSKNUCKLE (1)
  253. #define WEAPON_GOLFCLUB (2)
  254. #define WEAPON_NITESTICK (3)
  255. #define WEAPON_KNIFE (4)
  256. #define WEAPON_BAT (5)
  257. #define WEAPON_SHOVEL (6)
  258. #define WEAPON_POOLSTICK (7)
  259. #define WEAPON_KATANA (8)
  260. #define WEAPON_CHAINSAW (9)
  261. #define WEAPON_DILDO (10)
  262. #define WEAPON_DILDO2 (11)
  263. #define WEAPON_VIBRATOR (12)
  264. #define WEAPON_VIBRATOR2 (13)
  265. #define WEAPON_FLOWER (14)
  266. #define WEAPON_CANE (15)
  267. #define WEAPON_GRENADE (16)
  268. #define WEAPON_TEARGAS (17)
  269. #define WEAPON_MOLTOV (18)
  270. #define WEAPON_COLT45 (22)
  271. #define WEAPON_SILENCED (23)
  272. #define WEAPON_DEAGLE (24)
  273. #define WEAPON_SHOTGUN (25)
  274. #define WEAPON_SAWEDOFF (26)
  275. #define WEAPON_SHOTGSPA (27)
  276. #define WEAPON_UZI (28)
  277. #define WEAPON_MP5 (29)
  278. #define WEAPON_AK47 (30)
  279. #define WEAPON_M4 (31)
  280. #define WEAPON_TEC9 (32)
  281. #define WEAPON_RIFLE (33)
  282. #define WEAPON_SNIPER (34)
  283. #define WEAPON_ROCKETLAUNCHER (35)
  284. #define WEAPON_HEATSEEKER (36)
  285. #define WEAPON_FLAMETHROWER (37)
  286. #define WEAPON_MINIGUN (38)
  287. #define WEAPON_SATCHEL (39)
  288. #define WEAPON_BOMB (40)
  289. #define WEAPON_SPRAYCAN (41)
  290. #define WEAPON_FIREEXTINGUISHER (42)
  291. #define WEAPON_CAMERA (43)
  292. #define WEAPON_PARACHUTE (46)
  293. #define WEAPON_VEHICLE (49)
  294. #define WEAPON_DROWN (53)
  295. #define WEAPON_COLLISION (54)
  296. // Keys
  297. #define KEY_ACTION (1)
  298. #define KEY_CROUCH (2)
  299. #define KEY_FIRE (4)
  300. #define KEY_SPRINT (8)
  301. #define KEY_SECONDARY_ATTACK (16)
  302. #define KEY_JUMP (32)
  303. #define KEY_LOOK_RIGHT (64)
  304. #define KEY_HANDBRAKE (128)
  305. #define KEY_LOOK_LEFT (256)
  306. #define KEY_SUBMISSION (512)
  307. #define KEY_LOOK_BEHIND (512)
  308. #define KEY_WALK (1024)
  309. #define KEY_ANALOG_UP (2048)
  310. #define KEY_ANALOG_DOWN (4096)
  311. #define KEY_ANALOG_LEFT (8192)
  312. #define KEY_ANALOG_RIGHT (16384)
  313. #define KEY_YES (65536)
  314. #define KEY_NO (131072)
  315. #define KEY_CTRL_BACK (262144)
  316. #define KEY_UP (-128)
  317. #define KEY_DOWN (128)
  318. #define KEY_LEFT (-128)
  319. #define KEY_RIGHT (128)
  320. // --------------------------------------------------
  321. // Forwards (Callback declarations)
  322. // --------------------------------------------------
  323. forward OnGameModeInit();
  324. forward OnGameModeExit();
  325. forward OnFilterScriptInit();
  326. forward OnFilterScriptExit();
  327. forward OnPlayerConnect(playerid);
  328. forward OnPlayerDisconnect(playerid, reason);
  329. forward OnPlayerSpawn(playerid);
  330. forward OnPlayerDeath(playerid, killerid, reason);
  331. forward OnVehicleSpawn(vehicleid);
  332. forward OnVehicleDeath(vehicleid, killerid);
  333. forward OnPlayerText(playerid, text[]);
  334. forward OnPlayerCommandText(playerid, cmdtext[]);
  335. forward OnPlayerRequestClass(playerid, classid);
  336. forward OnPlayerEnterVehicle(playerid, vehicleid, ispassenger);
  337. forward OnPlayerExitVehicle(playerid, vehicleid);
  338. forward OnPlayerStateChange(playerid, newstate, oldstate);
  339. forward OnPlayerEnterCheckpoint(playerid);
  340. forward OnPlayerLeaveCheckpoint(playerid);
  341. forward OnPlayerEnterRaceCheckpoint(playerid);
  342. forward OnPlayerLeaveRaceCheckpoint(playerid);
  343. forward OnRconCommand(cmd[]);
  344. forward OnPlayerRequestSpawn(playerid);
  345. forward OnObjectMoved(objectid);
  346. forward OnPlayerObjectMoved(playerid, objectid);
  347. forward OnPlayerPickUpPickup(playerid, pickupid);
  348. forward OnVehicleMod(playerid, vehicleid, componentid);
  349. forward OnEnterExitModShop(playerid, enterexit, interiorid);
  350. forward OnVehiclePaintjob(playerid, vehicleid, paintjobid);
  351. forward OnVehicleRespray(playerid, vehicleid, color1, color2);
  352. forward OnVehicleDamageStatusUpdate(vehicleid, playerid);
  353. forward OnUnoccupiedVehicleUpdate(vehicleid, playerid, passenger_seat, Float:new_x, Float:new_y, Float:new_z, Float:vel_x, Float:vel_y, Float:vel_z);
  354. forward OnPlayerSelectedMenuRow(playerid, row);
  355. forward OnPlayerExitedMenu(playerid);
  356. forward OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid);
  357. forward OnPlayerKeyStateChange(playerid, newkeys, oldkeys);
  358. forward OnRconLoginAttempt( ip[], password[], success );
  359. forward OnPlayerUpdate(playerid);
  360. forward OnPlayerStreamIn(playerid, forplayerid);
  361. forward OnPlayerStreamOut(playerid, forplayerid);
  362. forward OnVehicleStreamIn(vehicleid, forplayerid);
  363. forward OnVehicleStreamOut(vehicleid, forplayerid);
  364. forward OnActorStreamIn(actorid, forplayerid);
  365. forward OnActorStreamOut(actorid, forplayerid);
  366. forward OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]);
  367. forward OnPlayerTakeDamage(playerid, issuerid, Float:amount, weaponid, bodypart);
  368. forward OnPlayerGiveDamage(playerid, damagedid, Float:amount, weaponid, bodypart);
  369. forward OnPlayerGiveDamageActor(playerid, damaged_actorid, Float:amount, weaponid, bodypart);
  370. forward OnPlayerClickMap(playerid, Float:fX, Float:fY, Float:fZ);
  371. forward OnPlayerClickTextDraw(playerid, Text:clickedid);
  372. forward OnPlayerClickPlayerTextDraw(playerid, PlayerText:playertextid);
  373. forward OnIncomingConnection(playerid, ip_address[], port);
  374. forward OnTrailerUpdate(playerid, vehicleid);
  375. forward OnVehicleSirenStateChange(playerid, vehicleid, newstate);
  376. forward OnPlayerFinishedDownloading(playerid, virtualworld);
  377. forward OnPlayerRequestDownload(playerid, type, crc);
  378. #define CLICK_SOURCE_SCOREBOARD 0
  379. forward OnPlayerClickPlayer(playerid, clickedplayerid, source);
  380. #define EDIT_RESPONSE_CANCEL 0
  381. #define EDIT_RESPONSE_FINAL 1
  382. #define EDIT_RESPONSE_UPDATE 2
  383. forward OnPlayerEditObject( playerid, playerobject, objectid, response,
  384. Float:fX, Float:fY, Float:fZ, Float:fRotX, Float:fRotY, Float:fRotZ );
  385. forward OnPlayerEditAttachedObject( playerid, response, index, modelid, boneid,
  386. Float:fOffsetX, Float:fOffsetY, Float:fOffsetZ,
  387. Float:fRotX, Float:fRotY, Float:fRotZ,
  388. Float:fScaleX, Float:fScaleY, Float:fScaleZ );
  389. #define SELECT_OBJECT_GLOBAL_OBJECT 1
  390. #define SELECT_OBJECT_PLAYER_OBJECT 2
  391. forward OnPlayerSelectObject(playerid, type, objectid, modelid, Float:fX, Float:fY, Float:fZ);
  392. #define BULLET_HIT_TYPE_NONE 0
  393. #define BULLET_HIT_TYPE_PLAYER 1
  394. #define BULLET_HIT_TYPE_VEHICLE 2
  395. #define BULLET_HIT_TYPE_OBJECT 3
  396. #define BULLET_HIT_TYPE_PLAYER_OBJECT 4
  397. forward OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ);
  398. // --------------------------------------------------