Advertisement
System32

UAV

Dec 3rd, 2011
435
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 8.52 KB | None | 0 0
  1. #include <a_samp>
  2. #include <YSI\y_commands>
  3.  
  4. forward ControlBoxPos(playerid);
  5. forward UAVCanFire(playerid);
  6. forward ControlZoom(playerid);
  7.  
  8. new string[128], Float: Pos[4], UAVPlane, UAVBox, UAVMissile, bool: UAVStarted = false, BoxPos, ZoomPos, Float: NewX, Float: NewY, Float: NewZ, Float: CamNewX, Float: CamNewY, Float: CamNewZ, Float: Rot[4], CanFire, UAVPlayer[24], bool: AllowAim = false, bool: AllowZoom = false;
  9.  
  10. enum bInfo
  11. {
  12.     Float: bPosX,
  13.     Float: bPosY,
  14.     Float: bPosZ,
  15.     Float: bCamPosX,
  16.     Float: bCamPosY,
  17.     Float: bCamPosZ,
  18. };
  19. new BoxInfo[1][bInfo];
  20.  
  21. public OnFilterScriptInit()
  22. {
  23.     print("\n");
  24.     print("  \4\4\4\4\4\4\4\4\4\4\4\4");
  25.     print("  \4 UAV      \4");
  26.     print("  \4 by       \4");
  27.     print("  \4 System32 \4");
  28.     print("  \4\4\4\4\4\4\4\4\4\4\4\4\n");
  29.     return 1;
  30. }
  31.  
  32. public OnFilterScriptExit()
  33. {
  34.     return 1;
  35. }
  36.  
  37. public OnPlayerConnect(playerid)
  38. {
  39.     return 1;
  40. }
  41.  
  42. public OnPlayerDisconnect(playerid, reason)
  43. {
  44.     return 1;
  45. }
  46.  
  47. YCMD:uavstart(playerid, params[], help)
  48. {
  49.     #pragma unused help
  50.     #pragma unused params
  51.     new chname[24], playername[24];
  52.     GetPlayerName(playerid, chname, sizeof(chname));
  53.     if(UAVStarted == true) return SendClientMessage(playerid, -1, "UAV is already here!");
  54.     if(strcmp(chname, "None", false))
  55.     {
  56.         GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
  57.         UAVPlane = CreateObject(10757, Pos[0], Pos[1], Pos[2] + 50, 9.8890, 8.6291, 359.75, 300);
  58.         UAVBox = CreatePlayerObject(playerid, 19054, Pos[0] + 2, Pos[1] + 2, Pos[2], 0, 0, 0, 300);
  59.         UAVMissile = CreateObject(3786, Pos[0], Pos[1], Pos[2] + 49.5, 0.00000000, -6.00000000, 0.000000, 300);
  60.         BoxInfo[0][bPosX] = Pos[0] + 2;
  61.         BoxInfo[0][bPosY] = Pos[1] + 2;
  62.         BoxInfo[0][bPosZ] = Pos[2];
  63.         BoxInfo[0][bCamPosX] = Pos[0];
  64.         BoxInfo[0][bCamPosY] = Pos[1];
  65.         BoxInfo[0][bCamPosZ] = Pos[2] + 49.3;
  66.         CanFire = 1;
  67.         AllowAim = true;
  68.         AllowZoom = false;
  69.         TogglePlayerControllable(playerid, 0);
  70.         SetPlayerCameraPos(playerid, Pos[0], Pos[1], Pos[2] + 49.3);
  71.         GetPlayerName(playerid, playername, sizeof(playername));
  72.         format(UAVPlayer, 24, "%s", playername);
  73.         SetPlayerCameraLookAt(playerid, Pos[0], Pos[1], Pos[2] - 90);
  74.         BoxPos = SetTimerEx("ControlBoxPos", 250, 1, "d", playerid);
  75.         UAVStarted = true;
  76.     }
  77.     else SendClientMessage(playerid, -1, "Somebody already control UAV!");
  78.     return 1;
  79. }
  80.  
  81. YCMD:uavstop(playerid, params[], help)
  82. {
  83.     #pragma unused help
  84.     #pragma unused params
  85.     new chname[24];
  86.     GetPlayerName(playerid, chname, sizeof(chname));
  87.     if(UAVStarted == false) return SendClientMessage(playerid, -1, "UAV isn't already here!");
  88.     if(strcmp(chname, UAVPlayer, false)) return SendClientMessage(playerid, -1, "Somebody already control UAV!");
  89.     GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
  90.     SetCameraBehindPlayer(playerid);
  91.     DestroyObject(UAVPlane);
  92.     DestroyPlayerObject(playerid, UAVBox);
  93.     DestroyObject(UAVMissile);
  94.     TogglePlayerControllable(playerid, 1);
  95.     AllowAim = false;
  96.     AllowZoom = false;
  97.     KillTimer(BoxPos);
  98.     KillTimer(ZoomPos);
  99.     format(UAVPlayer, 24, "None");
  100.     UAVStarted = false;
  101.     return 1;
  102. }
  103.  
  104. YCMD:uavzoom(playerid, params[], help)
  105. {
  106.     #pragma unused help
  107.     #pragma unused params
  108.     new chname[24];
  109.     GetPlayerName(playerid, chname, sizeof(chname));
  110.     if(UAVStarted == false) return SendClientMessage(playerid, -1, "UAV isn't here!");
  111.     if(strcmp(chname, UAVPlayer, false)) return SendClientMessage(playerid, -1, "Somebody already control UAV!");
  112.     AllowAim = false;
  113.     AllowZoom = true;
  114.     ZoomPos = SetTimerEx("ControlZoom", 250, 1, "d", playerid);
  115.     return 1;
  116. }
  117.  
  118. public ControlBoxPos(playerid)
  119. {
  120.     new keys, ud, lr;
  121.     GetPlayerKeys(playerid, keys, ud, lr);
  122.     if(AllowAim == true)
  123.     {
  124.         AllowZoom = false;
  125.         if(ud > 0)
  126.         {
  127.             if(keys == KEY_SPRINT) NewX -= 10.0;
  128.             else NewX -= 1.0;
  129.             format(string, sizeof(string), "~n~~n~~n~~n~~n~~n~~n~~n~X: %.4f Y: %.4f Z: %.4f", NewX, NewY, NewZ);
  130.             GameTextForPlayer(playerid, string, 3000, 5);
  131.             SetPlayerObjectPos(playerid, UAVBox, BoxInfo[0][bPosX] + NewX, BoxInfo[0][bPosY] + NewY, BoxInfo[0][bPosZ] + NewZ);
  132.         }
  133.         else if(ud < 0)
  134.         {
  135.             if(keys == KEY_SPRINT) NewX += 10.0;
  136.             else NewX += 1.0;
  137.             format(string, sizeof(string), "~n~~n~~n~~n~~n~~n~~n~~n~X: %.4f Y: %.4f Z: %.4f", NewX, NewY, NewZ);
  138.             GameTextForPlayer(playerid, string, 3000, 5);
  139.             SetPlayerObjectPos(playerid, UAVBox, BoxInfo[0][bPosX] + NewX, BoxInfo[0][bPosY] + NewY, BoxInfo[0][bPosZ] + NewZ);
  140.         }
  141.         if(lr > 0)
  142.         {
  143.             if(keys == KEY_SPRINT) NewY -= 10.0;
  144.             else NewY -= 1.0;
  145.             format(string, sizeof(string), "~n~~n~~n~~n~~n~~n~~n~~n~X: %.4f Y: %.4f Z: %.4f", NewX, NewY, NewZ);
  146.             GameTextForPlayer(playerid, string, 3000, 5);
  147.             SetPlayerObjectPos(playerid, UAVBox, BoxInfo[0][bPosX] + NewX, BoxInfo[0][bPosY] + NewY, BoxInfo[0][bPosZ] + NewZ);
  148.         }
  149.         else if(lr < 0)
  150.         {
  151.             if(keys == KEY_SPRINT) NewY += 10.0;
  152.             else NewY += 1.0;
  153.             format(string, sizeof(string), "~n~~n~~n~~n~~n~~n~~n~~n~X: %.4f Y: %.4f Z: %.4f", NewX, NewY, NewZ);
  154.             GameTextForPlayer(playerid, string, 3000, 5);
  155.             SetPlayerObjectPos(playerid, UAVBox, BoxInfo[0][bPosX] + NewX, BoxInfo[0][bPosY] + NewY, BoxInfo[0][bPosZ] + NewZ);
  156.         }
  157.         if(keys == KEY_CROUCH)
  158.         {
  159.             if(keys == KEY_SPRINT) NewZ -= 10.0;
  160.             else NewZ -= 1.0;
  161.             format(string, sizeof(string), "~n~~n~~n~~n~~n~~n~~n~~n~X: %.4f Y: %.4f Z: %.4f", NewX, NewY, NewZ);
  162.             GameTextForPlayer(playerid, string, 5000, 5);
  163.             SetPlayerObjectPos(playerid, UAVBox, BoxInfo[0][bPosX] + NewX, BoxInfo[0][bPosY] + NewY, BoxInfo[0][bPosZ] + NewZ);
  164.         }
  165.         else if(keys == KEY_WALK)
  166.         {
  167.             if(keys == KEY_SPRINT) NewZ += 10.0;
  168.             else NewZ += 1.0;
  169.             format(string, sizeof(string), "~n~~n~~n~~n~~n~~n~~n~~n~X: %.4f Y: %.4f Z: %.4f", NewX, NewY, NewZ);
  170.             GameTextForPlayer(playerid, string, 5000, 5);
  171.             SetPlayerObjectPos(playerid, UAVBox, BoxInfo[0][bPosX] + NewX, BoxInfo[0][bPosY] + NewY, BoxInfo[0][bPosZ] + NewZ);
  172.         }
  173.         if(keys == KEY_SECONDARY_ATTACK)
  174.         {
  175.             if(CanFire == 1)
  176.             {
  177.                 GetPlayerObjectRot(playerid, UAVBox, Rot[0], Rot[1], Rot[2]);
  178.                 SetObjectRot(UAVMissile, Rot[0], Rot[1], Rot[2]);
  179.                 MoveObject(UAVMissile, BoxInfo[0][bPosX] + NewX, BoxInfo[0][bPosY] + NewY, BoxInfo[0][bPosZ] + NewZ, 100);
  180.                 CanFire = 0;
  181.             }
  182.         }
  183.     }
  184.     return 1;
  185. }
  186.  
  187. public OnObjectMoved(objectid)
  188. {
  189.     if(objectid == UAVMissile)
  190.     {
  191.         GetObjectPos(UAVMissile, Pos[0], Pos[1], Pos[2]);
  192.         if(Pos[0], Pos[1], Pos[2] == BoxInfo[0][bPosX] + NewX, BoxInfo[0][bPosY] + NewY, BoxInfo[0][bPosZ] + NewZ)
  193.         {
  194.             for(new i = 0; i < MAX_PLAYERS; i++)
  195.             {
  196.                 if(!IsPlayerConnected(i)) continue;
  197.                 SetTimerEx("UAVCanFire", 5000, 0, "d", i);
  198.             }
  199.             GetObjectPos(UAVPlane, Pos[0], Pos[1], Pos[2]);
  200.             SetObjectPos(UAVMissile, Pos[0], Pos[1], Pos[2] - 0.5);
  201.             CreateExplosion(BoxInfo[0][bPosX] + NewX, BoxInfo[0][bPosY] + NewY, BoxInfo[0][bPosZ] + NewZ, 7, 1);
  202.             CreateExplosion(BoxInfo[0][bPosX] + NewX, BoxInfo[0][bPosY] + NewY, BoxInfo[0][bPosZ] + NewZ, 7, 1);
  203.             StopObject(UAVMissile);
  204.         }
  205.     }
  206.     return 1;
  207. }
  208.  
  209. public UAVCanFire(playerid)
  210. {
  211.     new chname[24];
  212.     GetPlayerName(playerid, chname, sizeof(chname));
  213.     CanFire = 1;
  214.     if(!strcmp(chname, UAVPlayer, false)) SendClientMessage(playerid, -1, "Missile is reloaded!");
  215.     return 1;
  216. }
  217.  
  218. public ControlZoom(playerid)
  219. {
  220.     new keys, ud, lr;
  221.     GetPlayerKeys(playerid, keys, ud, lr);
  222.     if(AllowZoom == true)
  223.     {
  224.         if(ud < 0)
  225.         {
  226.             if(keys == KEY_SPRINT) CamNewZ -= 10.0;
  227.             else CamNewZ -= 1.0;
  228.             format(string, sizeof(string), "~n~~n~~n~~n~~n~X: %.4f Y: %.4f Z: %.4f", CamNewX, CamNewY, CamNewZ);
  229.             GameTextForPlayer(playerid, string, 3000, 5);
  230.             GetObjectPos(UAVPlane, Pos[0], Pos[1], Pos[2]);
  231.             SetPlayerCameraPos(playerid, Pos[0], Pos[1], BoxInfo[0][bCamPosZ] + CamNewZ);
  232.             SetPlayerCameraLookAt(playerid, Pos[0], Pos[1], BoxInfo[0][bCamPosZ] - 90);
  233.         }
  234.         else if(ud > 0)
  235.         {
  236.             if(keys == KEY_SPRINT) CamNewZ += 10.0;
  237.             else CamNewZ += 1.0;
  238.             format(string, sizeof(string), "~n~~n~~n~~n~~n~X: %.4f Y: %.4f Z: %.4f", CamNewX, CamNewY, CamNewZ);
  239.             GameTextForPlayer(playerid, string, 3000, 5);
  240.             GetObjectPos(UAVPlane, Pos[0], Pos[1], Pos[2]);
  241.             SetPlayerCameraPos(playerid, Pos[0], Pos[1], BoxInfo[0][bCamPosZ] + CamNewZ);
  242.             SetPlayerCameraLookAt(playerid, Pos[0], Pos[1], BoxInfo[0][bCamPosZ] - 90);
  243.         }
  244.         if(keys == KEY_SECONDARY_ATTACK)
  245.         {
  246.             AllowAim = true;
  247.             SendClientMessage(playerid, 0x10F441AA, "Now you can control your UAV!");
  248.             KillTimer(ZoomPos);
  249.         }
  250.     }
  251.     return 1;
  252. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement