Advertisement
jlalt

Lakers's Security Camera

Aug 9th, 2016
141
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 8.13 KB | None | 0 0
  1. //-------------------------------------- LaKerS Security Camera Script! ---------------->>
  2. //------------------------------- Thanks For Help to me ; BlueDay,Berat And Moneyman---->>
  3. #include <a_samp>
  4.  
  5. #define MAX_CCTVS 100
  6. #define MAX_CCTVMENUS 100
  7.  
  8. new TotalCCTVS;
  9. new CameraName[MAX_CCTVS][32];
  10. new Float:CCTVLA[MAX_PLAYERS][3];
  11. new Float:CCTVLAO[MAX_CCTVS][3];
  12. new Float:CCTVRadius[MAX_PLAYERS];
  13. new Float:CCTVDegree[MAX_PLAYERS] = 0.0;
  14. new Float:CCTVCP[MAX_CCTVS][4];
  15. new CurrentCCTV[MAX_PLAYERS] = -1;
  16.  
  17. new Text:TD;
  18.  
  19. new Menu:CCTVMenu[MAX_CCTVMENUS];
  20. new MenuType[MAX_CCTVMENUS];
  21. new TotalMenus;
  22. new PlayerMenu[MAX_PLAYERS];
  23.  
  24. enum LP
  25. {
  26.     Float:LX,
  27.     Float:LY,
  28.     Float:LZ,
  29.     Float:LA,
  30.     LInterior
  31. }
  32. new Spawned[MAX_PLAYERS];
  33. new LastPos[MAX_PLAYERS][LP];
  34.  
  35. new KeyTimer[MAX_PLAYERS];
  36.  
  37. public OnFilterScriptInit()
  38. {
  39.  
  40.     AddCCTV("Grove Street", 2491, -1665, 47, 0.0);
  41.  
  42.     new Count, Left = TotalCCTVS;
  43.     for(new menu; menu<MAX_CCTVMENUS; menu++)
  44.     {
  45.         if(Left > 12)
  46.         {
  47.             CCTVMenu[menu] = CreateMenu("Choose Camera:", 1, 200, 100, 200);
  48.             TotalMenus++;
  49.             MenuType[menu] = 1;
  50.             for(new i; i<11; i++)
  51.             {
  52.                 AddMenuItem(CCTVMenu[menu], 0, CameraName[Count]);
  53.                 Count++;
  54.                 Left--;
  55.             }
  56.             AddMenuItem(CCTVMenu[menu], 0, "Next");
  57.         }
  58.         else if(Left<13 && Left > 0)
  59.         {
  60.             CCTVMenu[menu] = CreateMenu("Choose Camera:", 1, 200, 100, 200);
  61.             TotalMenus++;
  62.             MenuType[menu] = 2;
  63.             new tmp = Left;
  64.             for(new i; i<tmp; i++)
  65.             {
  66.                 AddMenuItem(CCTVMenu[menu], 0, CameraName[Count]);
  67.                 Count++;
  68.                 Left--;
  69.             }
  70.         }
  71.     }
  72. }
  73.  
  74. public OnFilterScriptExit()
  75. {
  76.     TextDrawHideForAll(TD);
  77.     TextDrawDestroy(TD);
  78.     for(new i; i<TotalMenus; i++)
  79.     {
  80.         DestroyMenu(CCTVMenu[i]);
  81.     }
  82.     return 1;
  83. }
  84.  
  85. public OnPlayerConnect(playerid)
  86. {
  87.     Spawned[playerid] = 0;
  88.     CurrentCCTV[playerid] = -1;
  89.     return 1;
  90. }
  91.  
  92. public OnPlayerDisconnect(playerid, reason)
  93. {
  94.     if(CurrentCCTV[playerid] > -1)
  95.     {
  96.         KillTimer(KeyTimer[playerid]);
  97.         TextDrawHideForPlayer(playerid, TD);
  98.     }
  99.     CurrentCCTV[playerid] = -1;
  100.     return 1;
  101. }
  102.  
  103. public OnPlayerSpawn(playerid)
  104. {
  105.     Spawned[playerid] = 1;
  106.     return 1;
  107. }
  108. public OnPlayerDeath(playerid, killerid, reason)
  109. {
  110.     Spawned[playerid] = 0;
  111.     return 1;
  112. }
  113.  
  114. public OnPlayerCommandText(playerid, cmdtext[])
  115. {
  116.     if (strcmp("/Camera", cmdtext, true) == 0)
  117.     {
  118.         if(Spawned[playerid] == 1)
  119.         {
  120.             PlayerMenu[playerid] = 0;
  121.             TogglePlayerControllable(playerid, 0);
  122.             ShowMenuForPlayer(CCTVMenu[0], playerid);
  123.         }
  124.         return 1;
  125.     }
  126.    
  127.     if (strcmp("/exitcamera", cmdtext, true) == 0)
  128.     {
  129.         if(CurrentCCTV[playerid] > -1)
  130.         {
  131.             SetPlayerPos(playerid, LastPos[playerid][LX], LastPos[playerid][LY], LastPos[playerid][LZ]);
  132.             SetPlayerFacingAngle(playerid, LastPos[playerid][LA]);
  133.             SetPlayerInterior(playerid, LastPos[playerid][LInterior]);
  134.             TogglePlayerControllable(playerid, 1);
  135.             KillTimer(KeyTimer[playerid]);
  136.             SetCameraBehindPlayer(playerid);
  137.             TextDrawHideForPlayer(playerid, TD);
  138.             CurrentCCTV[playerid] = -1;
  139.             return 1;
  140.         }
  141.     }
  142.     return 0;
  143. }
  144.  
  145.  
  146. forward CheckKeyPress(playerid);
  147. public CheckKeyPress(playerid)
  148. {
  149.     new keys, updown, leftright;
  150.     GetPlayerKeys(playerid, keys, updown, leftright);
  151.     if(CurrentCCTV[playerid] > -1 && PlayerMenu[playerid] == -1)
  152.     {
  153.         if(leftright == KEY_RIGHT)
  154.         {
  155.             if(keys == KEY_SPRINT)
  156.             {
  157.                 CCTVDegree[playerid] = (CCTVDegree[playerid] - 2.0);
  158.             }
  159.             else
  160.             {
  161.                 CCTVDegree[playerid] = (CCTVDegree[playerid] - 0.5);
  162.             }
  163.             if(CCTVDegree[playerid] < 0)
  164.             {
  165.                 CCTVDegree[playerid] = 359;
  166.             }
  167.             MovePlayerCCTV(playerid);
  168.  
  169.         }
  170.         if(leftright == KEY_LEFT)
  171.         {
  172.             if(keys == KEY_SPRINT)
  173.             {
  174.                 CCTVDegree[playerid] = (CCTVDegree[playerid] + 2.0);
  175.             }
  176.             else
  177.             {
  178.                 CCTVDegree[playerid] = (CCTVDegree[playerid] + 0.5);
  179.             }
  180.             if(CCTVDegree[playerid] >= 360)
  181.             {
  182.                 CCTVDegree[playerid] = 0;
  183.             }
  184.             MovePlayerCCTV(playerid);
  185.  
  186.         }
  187.         if(updown == KEY_UP)
  188.         {
  189.             if(CCTVRadius[playerid] < 25)
  190.             {
  191.                 if(keys == KEY_SPRINT)
  192.                 {
  193.                     CCTVRadius[playerid] =  (CCTVRadius[playerid] + 0.5);
  194.                     MovePlayerCCTV(playerid);
  195.                 }
  196.                 else
  197.                 {
  198.                     CCTVRadius[playerid] =  (CCTVRadius[playerid] + 0.1);
  199.                     MovePlayerCCTV(playerid);
  200.                 }
  201.             }
  202.         }
  203.         if(updown == KEY_DOWN)
  204.         {
  205.             if(keys == KEY_SPRINT)
  206.             {
  207.                 if(CCTVRadius[playerid] >= 0.6)
  208.                 {
  209.                     CCTVRadius[playerid] =  (CCTVRadius[playerid] - 0.5);
  210.                     MovePlayerCCTV(playerid);
  211.                 }
  212.             }
  213.             else
  214.             {
  215.                 if(CCTVRadius[playerid] >= 0.2)
  216.                 {
  217.                     CCTVRadius[playerid] =  (CCTVRadius[playerid] - 0.1);
  218.                     MovePlayerCCTV(playerid);
  219.                 }
  220.             }
  221.         }
  222.         if(keys == KEY_CROUCH)
  223.         {
  224.             OnPlayerCommandText(playerid, "/exitcamera");
  225.         }
  226.     }
  227.     MovePlayerCCTV(playerid);
  228. }
  229.  
  230. stock MovePlayerCCTV(playerid)
  231. {
  232.     CCTVLA[playerid][0] = CCTVLAO[CurrentCCTV[playerid]][0] + (floatmul(CCTVRadius[playerid], floatsin(-CCTVDegree[playerid], degrees)));
  233.     CCTVLA[playerid][1] = CCTVLAO[CurrentCCTV[playerid]][1] + (floatmul(CCTVRadius[playerid], floatcos(-CCTVDegree[playerid], degrees)));
  234.     SetPlayerCameraLookAt(playerid, CCTVLA[playerid][0], CCTVLA[playerid][1], CCTVLA[playerid][2]);
  235. }
  236.    
  237.  
  238. stock AddCCTV(name[], Float:X, Float:Y, Float:Z, Float:Angle)
  239. {
  240.     if(TotalCCTVS >= MAX_CCTVS) return 0;
  241.     format(CameraName[TotalCCTVS], 32, "%s", name);
  242.     CCTVCP[TotalCCTVS][0] = X;
  243.     CCTVCP[TotalCCTVS][1] = Y;
  244.     CCTVCP[TotalCCTVS][2] = Z;
  245.     CCTVCP[TotalCCTVS][3] = Angle;
  246.     CCTVLAO[TotalCCTVS][0] = X;
  247.     CCTVLAO[TotalCCTVS][1] = Y;
  248.     CCTVLAO[TotalCCTVS][2] = Z-10;
  249.     TotalCCTVS++;
  250.     return TotalCCTVS-1;
  251. }
  252.  
  253. SetPlayerToCCTVCamera(playerid, CCTV)
  254. {
  255.     if(CCTV >= TotalCCTVS)
  256.     {
  257.         SendClientMessage(playerid, 0xFF0000AA, "Invalid Camera");
  258.         return 1;
  259.     }
  260.     if(CurrentCCTV[playerid] == -1)
  261.     {
  262.         GetPlayerPos(playerid, LastPos[playerid][LX], LastPos[playerid][LY], LastPos[playerid][LZ]);
  263.         GetPlayerFacingAngle(playerid, LastPos[playerid][LA]);
  264.         LastPos[playerid][LInterior] = GetPlayerInterior(playerid);
  265.     }
  266.     else
  267.     {
  268.         KillTimer(KeyTimer[playerid]);
  269.     }
  270.     CurrentCCTV[playerid] = CCTV;
  271.     TogglePlayerControllable(playerid, 0);
  272.     SetPlayerPos(playerid, CCTVCP[CCTV][0], CCTVCP[CCTV][1], -100.0);
  273.     SetPlayerCameraPos(playerid, CCTVCP[CCTV][0], CCTVCP[CCTV][1], CCTVCP[CCTV][2]);
  274.     SetPlayerCameraLookAt(playerid, CCTVLAO[CCTV][0], (CCTVLAO[CCTV][1]+0.2), CCTVLAO[CCTV][2]);
  275.     CCTVLA[playerid][0] = CCTVLAO[CCTV][0];
  276.     CCTVLA[playerid][1] = CCTVLAO[CCTV][1]+0.2;
  277.     CCTVLA[playerid][2] = CCTVLAO[CCTV][2];
  278.     CCTVRadius[playerid] = 12.5;
  279.     CCTVDegree[playerid] = CCTVCP[CCTV][3];
  280.     MovePlayerCCTV(playerid);
  281.     KeyTimer[playerid] = SetTimerEx("CheckKeyPress", 75, 1, "i", playerid);
  282.     TextDrawShowForPlayer(playerid, TD);
  283.     return 1;
  284. }
  285.  
  286. public OnPlayerSelectedMenuRow(playerid, row)
  287. {
  288.     new Menu:Current = GetPlayerMenu(playerid);
  289.     for(new menu; menu<TotalMenus; menu++)
  290.     {
  291.        
  292.         if(Current == CCTVMenu[menu])
  293.         {
  294.             if(MenuType[PlayerMenu[playerid]] == 1)
  295.             {
  296.                 if(row == 11)
  297.                 {
  298.                     ShowMenuForPlayer(CCTVMenu[menu+1], playerid);
  299.                     TogglePlayerControllable(playerid, 0);
  300.                     PlayerMenu[playerid] = (menu+1);
  301.                 }
  302.                 else
  303.                 {
  304.                     if(PlayerMenu[playerid] == 0)
  305.                     {
  306.                         SetPlayerToCCTVCamera(playerid, row);
  307.                         PlayerMenu[playerid] = -1;
  308.                     }
  309.                     else
  310.                     {
  311.                         SetPlayerToCCTVCamera(playerid, ((PlayerMenu[playerid]*11)+row));
  312.                         PlayerMenu[playerid] = -1;
  313.                     }
  314.                 }
  315.             }
  316.             else
  317.             {
  318.                 if(PlayerMenu[playerid] == 0)
  319.                 {
  320.                     SetPlayerToCCTVCamera(playerid, row);
  321.                     PlayerMenu[playerid] = -1;
  322.                 }
  323.                 else
  324.                 {
  325.                     SetPlayerToCCTVCamera(playerid, ((PlayerMenu[playerid]*11)+row));
  326.                     PlayerMenu[playerid] = -1;
  327.                 }
  328.             }
  329.         }
  330.     }
  331.                    
  332.     return 1;
  333. }
  334.  
  335. public OnPlayerExitedMenu(playerid)
  336. {
  337.     TogglePlayerControllable(playerid, 1);
  338.     PlayerMenu[playerid] = -1;
  339.     return 1;
  340. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement