VerbalVandalism

Verbal's Live Camera

May 24th, 2012
218
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 6.43 KB | None | 0 0
  1. /*
  2. ____     ___              ___                 ___
  3. `Mb(     )d'               MM                 `MM
  4.  YM.     ,P                MM                  MM
  5.  `Mb     d'  ____  ___  __ MM____      ___     MM
  6.   YM.   ,P  6MMMMb `MM 6MM MMMMMMb   6MMMMb    MM
  7.   `Mb   d' 6M'  `Mb MM69 " MM'  `Mb 8M'  `Mb   MM
  8.    YM. ,P  MM    MM MM'    MM    MM     ,oMM   MM
  9.    `Mb d'  MMMMMMMM MM     MM    MM ,6MM9'MM   MM
  10.     YM,P   MM       MM     MM    MM MM'   MM   MM
  11.     `MM'   YM    d9 MM     MM.  ,M9 MM.  ,MM   MM
  12.      YP     YMMMM9 _MM_   _MYMMMM9  `YMMM9'Yb._MM_
  13.                                                  
  14.     Verbal's Live Camera V0.1
  15. */
  16.  
  17. #include <a_samp>
  18. #include <zcmd>
  19. #include <sscanf>
  20.  
  21. #define                 VERSION                  "0.1"
  22. #define                 FLOAT_INFINITY           (Float:0x7F800000)
  23. #define                 CAMERA_PRICE             (700) // The price to buy a camera
  24. #define                 MAX_CAMERAS              (3)   // Maximum cameras a player can have
  25.  
  26. new
  27.     str[128],
  28.     Camera[MAX_PLAYERS][MAX_CAMERAS],
  29.     CameraMounted[MAX_PLAYERS][MAX_CAMERAS],
  30.     bool:UsingCamera[MAX_PLAYERS][MAX_CAMERAS];
  31.  
  32. public OnFilterScriptInit()
  33. {
  34.     print("\n|_____________________________________________|\n");
  35.     print("|\tVerbal's Live Camera V"VERSION" Loaded.     |");
  36.     print("\n|_____________________________________________|\n");
  37.     return 1;
  38. }
  39.  
  40. public OnPlayerConnect(playerid)
  41. {
  42.     for (new i; i < MAX_CAMERAS; i++)
  43.     {
  44.         Camera[playerid][i] = -1;
  45.         CameraMounted[playerid][i] = -1;
  46.         UsingCamera[playerid][i] = false;
  47.     }
  48.     return 1;
  49. }
  50.  
  51. CMD:mycameras(playerid)
  52. {
  53.     SendClientMessage(playerid, 0xFF9900AA, "|________________ Cameras _______________|");
  54.     for (new i; i < MAX_CAMERAS; i++)
  55.     {
  56.         if (Camera[playerid][i] == -1)
  57.         {
  58.             format(str, sizeof(str), "{FFFFFF}[%d] {FFFF00}Owned: {FF5959}No | {FFFF00}Vechile Mounted: {FF5959}None", i);
  59.             SendClientMessage(playerid, 0xFFFF00AA, str);
  60.         }
  61.         else
  62.         {
  63.             format(str, sizeof(str), "{FFFFFF}[%d] {FFFF00}Owned: {33AA33}Yes | {FFFF00}Vechile Mounted: {33AA33}%d", i, CameraMounted[playerid][i]);
  64.             SendClientMessage(playerid, 0xFFFF00AA, str);
  65.         }
  66.     }
  67.     SendClientMessage(playerid, 0xFF9900AA, "|________________________________________|");
  68.     return 1;
  69. }
  70.  
  71. CMD:buycamera(playerid)
  72. {
  73.     if (GetPlayerMoney(playerid) < CAMERA_PRICE) return SendClientMessage(playerid, 0xFF5959AA, "You don't have enough money to buy a camera.");
  74.     if (Camera[playerid][2] != -1) return SendClientMessage(playerid, 0xFF5959AA, "You already have the maximum amount of cameras.");
  75.     for (new i; i < MAX_CAMERAS; i++)
  76.     {
  77.         if (Camera[playerid][i] == -1)
  78.         {
  79.             Camera[playerid][i] = 1;
  80.             break;
  81.         }
  82.     }
  83.     GivePlayerMoney(playerid, -CAMERA_PRICE);
  84.     SendClientMessage(playerid, 0x33AA33AA, "You have successfully purchased a camera.");
  85.     return 1;
  86. }
  87.  
  88. CMD:destroycamera(playerid, params[])
  89. {
  90.     new
  91.         cameraid;
  92.     if (Camera[playerid][0] == -1) return SendClientMessage(playerid, 0xFF5959AA, "You don't have a camera.");
  93.     if (sscanf(params, "d", cameraid)) return SendClientMessage(playerid, 0xFF5959AA, "USAGE: /destroycamera [camera slot]");
  94.     if (Camera[playerid][cameraid] == -1) return SendClientMessage(playerid, 0xFF5959AA, "You don't have a camera in that slot.");
  95.     if (cameraid == 0) return SendClientMessage(playerid, 0xFF5959AA, "You can't destroy the camera in slot 1.");
  96.     Camera[playerid][cameraid] = -1;
  97.     SendClientMessage(playerid, 0x33AA33AA, "You have successfully destroyed this camera.");
  98.     return 1;
  99. }
  100.  
  101. CMD:mountcamera(playerid, params[])
  102. {
  103.     new
  104.         closest = GetClosestVehicle(playerid, 5.0),
  105.         cameraid;
  106.     if (Camera[playerid][0] == -1) return SendClientMessage(playerid, 0xFF5959AA, "You don't have a camera.");
  107.     if (closest == INVALID_VEHICLE_ID) return SendClientMessage(playerid, 0xFF5959AA, "You are not near any vehicle.");
  108.     if (sscanf(params, "d", cameraid)) return SendClientMessage(playerid, 0xFF5959AA, "USAGE: /mountcamera [camera slot]");
  109.     if (Camera[playerid][cameraid] == -1) return SendClientMessage(playerid, 0xFF5959AA, "You don't have a camera in that slot.");
  110.     if (CameraMounted[playerid][cameraid] != -1) return SendClientMessage(playerid, 0xFF5959AA, "This camera is already mounted.");
  111.     CameraMounted[playerid][cameraid] = closest;
  112.     SendClientMessage(playerid, 0x33AA33AA, "You have successfully mounted the camera.");
  113.     return 1;
  114. }
  115.  
  116. CMD:unmountcamera(playerid, params[])
  117. {
  118.     new
  119.         cameraid;
  120.     if (Camera[playerid][0] == -1) return SendClientMessage(playerid, 0xFF5959AA, "You don't have a camera.");
  121.     if (sscanf(params, "d", cameraid)) return SendClientMessage(playerid, 0xFF5959AA, "USAGE: /unmountcamera [camera slot]");
  122.     if (Camera[playerid][cameraid] == -1) return SendClientMessage(playerid, 0xFF5959AA, "You don't have a camera in that slot.");
  123.     if (CameraMounted[playerid][cameraid] == -1) return SendClientMessage(playerid, 0xFF5959AA, "This camera is already unmounted.");
  124.     CameraMounted[playerid][cameraid] = -1;
  125.     TogglePlayerSpectating(playerid, 0);
  126.     SendClientMessage(playerid, 0x33AA33AA, "You have successfully unmounted the camera.");
  127.     return 1;
  128. }
  129.  
  130. CMD:togcamera(playerid, params[])
  131. {
  132.     new
  133.         cameraid;
  134.     if (Camera[playerid][0] == -1) return SendClientMessage(playerid, 0xFF5959AA, "You don't have a camera.");
  135.     if (sscanf(params, "d", cameraid)) return SendClientMessage(playerid, 0xFF5959AA, "USAGE: /togcamera [camera slot]");
  136.     if (Camera[playerid][cameraid] == -1) return SendClientMessage(playerid, 0xFF5959AA, "You don't have a camera in that slot.");
  137.     if (CameraMounted[playerid][cameraid] == -1) return SendClientMessage(playerid, 0xFF5959AA, "This camera isn't mounted.");
  138.     if (UsingCamera[playerid][cameraid] != true)
  139.     {
  140.         TogglePlayerSpectating(playerid, 1);
  141.         PlayerSpectateVehicle(playerid, CameraMounted[playerid][cameraid]);
  142.         UsingCamera[playerid][cameraid] = true;
  143.         GameTextForPlayer(playerid, "~g~Using", 2000, 4);
  144.     }
  145.     else
  146.     {
  147.         TogglePlayerSpectating(playerid, 0);
  148.         UsingCamera[playerid][cameraid] =  false;
  149.         GameTextForPlayer(playerid, "~r~Not Using", 2000, 4);
  150.     }
  151.     return 1;
  152. }
  153.  
  154. stock GetClosestVehicle(playerid, Float:dis)
  155. {
  156.   new Float:X, Float:Y, Float:Z;
  157.   if(GetPlayerPos(playerid, X, Y, Z)) {
  158.     new vehicleid = INVALID_VEHICLE_ID;
  159.     for(new v, Float:temp, Float:VX, Float:VY, Float:VZ; v != MAX_VEHICLES; v++) {
  160.       if(GetVehiclePos(v, VX, VY, VZ)) {
  161.         VX -= X, VY -= Y, VZ -= Z;
  162.         temp = VX * VX + VY * VY + VZ * VZ;
  163.         if(temp < dis) dis = temp, vehicleid = v;
  164.       }
  165.     }
  166.     dis = floatpower(dis, 0.5);
  167.     return vehicleid;
  168.   }
  169.   return INVALID_VEHICLE_ID;
  170. }
Add Comment
Please, Sign In to add comment