Advertisement
Kwarde

Kwarde's Vehicle Spawn System

Apr 11th, 2011
936
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 7.68 KB | None | 0 0
  1. /*
  2.     Vehicle spawn system with anti spam (v1.2) - By Kwarde
  3.     Link to topic: http://forum.sa-mp.com/showthread.php?p=879008 - More info there
  4.    
  5.     You may re-release this script, but only if you keep this comment in the script.
  6.     If you remove it, you may not re-release it.
  7.     You may, off course just edit it. blabla.
  8.    
  9.     - Kevin
  10. */
  11.  
  12. #include <a_samp>
  13. #include <zcmd>
  14.  
  15. #undef MAX_PLAYERS
  16. #define MAX_SLOTS       500 //Max players of your server. Changing it is recommended!
  17.  
  18. #define COLOR_WHITE     0xFFFFFFAA
  19. #define COLOR_RED       0xFF0000AA
  20. #define COLOR_GREEN     0x00FF00AA
  21. #define COLOR_YELLOW    0xFFFF00AA
  22.  
  23. new bool:RconOnly = true,
  24.         VehicleSpawned[MAX_SLOTS],
  25.         bool:MessageGiven[MAX_SLOTS];
  26.  
  27. public OnFilterScriptInit()
  28. {
  29.     for(new i = 0; i < MAX_SLOTS; i++){
  30.         if(VehicleSpawned[i] != -1){
  31.             DestroyVehicle(VehicleSpawned[i]);
  32.             VehicleSpawned[i] = (-1);
  33.         }
  34.         MessageGiven[i] = false;
  35.     }
  36.     print("Kwarde's Vehicle Spawn system LOADED");
  37.     return 1;
  38. }
  39.  
  40. public OnFilterScriptExit()
  41. {
  42.     for(new i = 0; i < MAX_SLOTS; i++){
  43.         if(VehicleSpawned[i] != -1){
  44.             DestroyVehicle(VehicleSpawned[i]);
  45.             VehicleSpawned[i] = (-1);
  46.         }
  47.         MessageGiven[i] = false;
  48.     }
  49.     return 1;
  50. }
  51.  
  52. public OnPlayerConnect(playerid)
  53. {
  54.     if(VehicleSpawned[playerid] != -1){
  55.         DestroyVehicle(VehicleSpawned[playerid]);
  56.         VehicleSpawned[playerid] = (-1);
  57.     }
  58.     MessageGiven[playerid] = false;
  59.     SendClientMessage(playerid, COLOR_GREEN, "* This server is using Kwarde's Vehicle spawn system. Use /kvechelp");
  60.     return 1;
  61. }
  62.  
  63. public OnPlayerDisconnect(playerid)
  64. {
  65.     if(VehicleSpawned[playerid] != -1){
  66.         DestroyVehicle(VehicleSpawned[playerid]);
  67.         VehicleSpawned[playerid] = (-1);
  68.     }
  69.     MessageGiven[playerid] = false;
  70.     return 1;
  71. }
  72.  
  73. public OnPlayerSpawn(playerid)
  74. {
  75.     if(!MessageGiven[playerid]){
  76.         SendClientMessage(playerid, COLOR_WHITE, "** This server is using Kwarde's Vehicle Spawn System, see: /kvechelp");
  77.         MessageGiven[playerid] = true;
  78.     }
  79.     return 1;
  80. }
  81.  
  82. CMD:kvechelp(playerid, params[])
  83. {
  84.     if(RconOnly && !IsPlayerAdmin(playerid)) return SendClientMessage(playerid, COLOR_RED, "ERROR: This is for RCON admins only!");
  85.     SendClientMessage(playerid, COLOR_YELLOW, "|---------- Kwarde's Vehicle Spawn System ----------|");
  86.     SendClientMessage(playerid, COLOR_WHITE, "** /kvec [ID] -> Spawns a vehicle. [ID] is the vehicle model ID (eg. /kvec 411 for an infernus)");
  87.     SendClientMessage(playerid, COLOR_WHITE, "** /kcallvec -> Calls your spawned vehicle");
  88.     SendClientMessage(playerid, COLOR_WHITE, "** /kgotovec -> Teleports you into your spawned vehicle");
  89.     SendClientMessage(playerid, COLOR_WHITE, "** /kremovevec -> Removes your spawned vehicle");
  90.     SendClientMessage(playerid, COLOR_WHITE, "**!: /krcononly -> Toggle the commands above for RCON only on/off");
  91.     SendClientMessage(playerid, COLOR_WHITE, "**!: /krallvec -> Remove all spawned vehicles");
  92.     SendClientMessage(playerid, COLOR_YELLOW, "|---------- Kwarde's Vehicle Spawn System ----------|");
  93.     return 1;
  94. }
  95.  
  96. CMD:kvec(playerid, params[])
  97. {
  98.     if(RconOnly && !IsPlayerAdmin(playerid)) return SendClientMessage(playerid, COLOR_RED, "ERROR: This is for RCON admins only!");
  99.     new Float:sPos[4];
  100.  
  101.     if(!strlen(params)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: {FFFF00}/kvec [ID]");
  102.     if(strval(params) < 400 || strval(params) > 611) return SendClientMessage(playerid, COLOR_RED, "ERROR: Invalid vehicle model ID");
  103.  
  104.     if(IsPlayerInAnyVehicle(playerid)){
  105.         GetVehiclePos(GetPlayerVehicleID(playerid), sPos[0], sPos[1], sPos[2]);
  106.         GetVehicleZAngle(GetPlayerVehicleID(playerid), sPos[3]);
  107.         if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
  108.             SetVehicleToRespawn(GetPlayerVehicleID(playerid));
  109.         else
  110.             RemovePlayerFromVehicle(playerid);
  111.     }
  112.     else{
  113.         GetPlayerPos(playerid, sPos[0], sPos[1], sPos[2]);
  114.         GetPlayerFacingAngle(playerid, sPos[3]);
  115.     }
  116.     if(VehicleSpawned[playerid] != -1)
  117.         DestroyVehicle(VehicleSpawned[playerid]);
  118.     VehicleSpawned[playerid] = CreateVehicle(strval(params[0]), sPos[0], sPos[1], sPos[2], sPos[3], -1, -1, -1);
  119.     SetVehicleVirtualWorld(VehicleSpawned[playerid], GetPlayerVirtualWorld(playerid));
  120.     LinkVehicleToInterior(VehicleSpawned[playerid], GetPlayerInterior(playerid));
  121.     PutPlayerInVehicle(playerid, VehicleSpawned[playerid], 0);
  122.     SendClientMessage(playerid, COLOR_GREEN, "* Your vehicle has been spawned.");
  123.     return 1;
  124. }
  125.  
  126. CMD:kcallvec(playerid, params[])
  127. {
  128.     if(RconOnly && !IsPlayerAdmin(playerid)) return SendClientMessage(playerid, COLOR_RED, "ERROR: This is for RCON admins only!");
  129.     if(VehicleSpawned[playerid] == -1) return SendClientMessage(playerid, COLOR_RED, "ERROR: You didn't spawn a vehicle yet.");
  130.     new Float:sPos[4];
  131.     if(IsPlayerInAnyVehicle(playerid)){
  132.         GetVehiclePos(GetPlayerVehicleID(playerid), sPos[0], sPos[1], sPos[2]);
  133.         GetVehicleZAngle(GetPlayerVehicleID(playerid), sPos[3]);
  134.         if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
  135.             SetVehicleToRespawn(GetPlayerVehicleID(playerid));
  136.         else
  137.             RemovePlayerFromVehicle(playerid);
  138.     }
  139.     else{
  140.         GetPlayerPos(playerid, sPos[0], sPos[1], sPos[2]);
  141.         GetPlayerFacingAngle(playerid, sPos[3]);
  142.     }
  143.     RemoveAllPlayersFromVehicle(VehicleSpawned[playerid]);
  144.     SetVehiclePos(VehicleSpawned[playerid], sPos[0], sPos[1], sPos[2]);
  145.     SetVehicleZAngle(VehicleSpawned[playerid], sPos[3]);
  146.     SetVehicleVirtualWorld(VehicleSpawned[playerid], GetPlayerVirtualWorld(playerid));
  147.     LinkVehicleToInterior(VehicleSpawned[playerid], GetPlayerInterior(playerid));
  148.     PutPlayerInVehicle(playerid, VehicleSpawned[playerid], 0);
  149.     SendClientMessage(playerid, COLOR_GREEN, "* Your vehicle has been called.");
  150.     return 1;
  151. }
  152.  
  153. CMD:kgotovec(playerid, params[])
  154. {
  155.     if(RconOnly && !IsPlayerAdmin(playerid)) return SendClientMessage(playerid, COLOR_RED, "ERROR: This is for RCON admins only!");
  156.     if(VehicleSpawned[playerid] == -1) return SendClientMessage(playerid, COLOR_RED, "ERROR: You didn't spawn a vehicle yet.");
  157.     RemoveAllPlayersFromVehicle(VehicleSpawned[playerid]);
  158.     PutPlayerInVehicle(playerid, VehicleSpawned[playerid], 0);
  159.     SendClientMessage(playerid, COLOR_GREEN, "* You've been teleported to your vehicle");
  160.     return 1;
  161. }
  162.  
  163. CMD:kremovevec(playerid, params[])
  164. {
  165.     if(RconOnly && !IsPlayerAdmin(playerid)) return SendClientMessage(playerid, COLOR_RED, "ERROR: This is for RCON admins only!");
  166.     if(VehicleSpawned[playerid] == -1) return SendClientMessage(playerid, COLOR_RED, "ERROR: You didn't spawn a vehicle yet.");
  167.     DestroyVehicle(VehicleSpawned[playerid]);
  168.     VehicleSpawned[playerid] = (-1);
  169.     SendClientMessage(playerid, COLOR_GREEN, "* Your vehicle has been removed.");
  170.     return 1;
  171. }
  172.  
  173. CMD:krcononly(playerid, params[])
  174. {
  175.     if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, COLOR_RED, "ERROR: This is for RCON admins only!");
  176.     if(RconOnly){
  177.         RconOnly = false;
  178.         SendClientMessageToAll(COLOR_GREEN, "* Kwarde's Vehicle Spawn System is now avaible for everyone! (/kvechelp)");
  179.     }
  180.     else{
  181.         RconOnly = true;
  182.         SendClientMessageToAll(COLOR_RED, "* Kwarde's Vehicle Spawn System is now only avaible for RCON admins!");
  183.     }
  184.     return 1;
  185. }
  186.  
  187. CMD:krallvec(playerid, params[])
  188. {
  189.     if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, COLOR_RED, "ERROR: This is for RCON admins only!");
  190.     for(new i = 0; i < MAX_SLOTS; i++){
  191.         if(VehicleSpawned[i] != -1){
  192.             DestroyVehicle(VehicleSpawned[i]);
  193.             VehicleSpawned[i] = (-1);
  194.         }
  195.         MessageGiven[i] = false;
  196.     }
  197.     SendClientMessageToAll(COLOR_RED, "* All spawned vehicles are removed by an RCON admin!");
  198.     return 1;
  199. }
  200.  
  201. stock RemoveAllPlayersFromVehicle(vehicleid)
  202. {
  203.     for(new i = 0; i < MAX_SLOTS; i++)
  204.         if(IsPlayerInVehicle(i, vehicleid))
  205.             RemovePlayerFromVehicle(i);
  206.     return 1;
  207. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement