Aerotactics

Script

Aug 27th, 2014
419
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 22.89 KB | None | 0 0
  1. //
  2. //
  3. // Aero's FreeCam Filterscript
  4. //
  5. //
  6. #define FILTERSCRIPT
  7.  
  8. #include <a_samp>
  9. #include <zcmd>
  10. #include <sscanf2>
  11.  
  12. #if defined FILTERSCRIPT
  13.  
  14. public OnFilterScriptInit()
  15. {
  16. print("\n--------------------------------------");
  17. print(" Aero's FreeCam");
  18. print("--------------------------------------\n");
  19. return 1;
  20. }
  21.  
  22. public OnFilterScriptExit()
  23. {
  24. return 1;
  25. }
  26.  
  27. #else
  28.  
  29. main()
  30. {
  31. print("\n----------------------------------");
  32. print(" Blank Gamemode by your name here");
  33. print("----------------------------------\n");
  34. }
  35.  
  36. #endif
  37.  
  38. #define COLOR_ORANGE 0xDCB700FF
  39. #define COLOR_GREEN 0x00AA00AA
  40. #define COLOR_GREY 0xAAAAAAAA
  41.  
  42. #define DIALOG_PlayerLock 250
  43. #define DIALOG_Credits 251
  44.  
  45. new CamSet[MAX_PLAYERS];
  46. new bool:CamEnabled[MAX_PLAYERS];
  47. new bool:Isometric[MAX_PLAYERS];
  48. new bool:Widescreen[MAX_PLAYERS];
  49. new PlayerLock[MAX_PLAYERS];
  50. new CamSpeed[MAX_PLAYERS];
  51. new PlayerCatch[MAX_PLAYERS][6];
  52. new FlyTimer[MAX_PLAYERS];
  53. new IsoTimer[MAX_PLAYERS];
  54. new BoxCount[MAX_PLAYERS];
  55.  
  56. new PlayerText:Textdraw0A[MAX_PLAYERS]; //Background
  57. new PlayerText:Textdraw0[MAX_PLAYERS]; //Aero's FC
  58. new PlayerText:Textdraw1[MAX_PLAYERS]; //Angle
  59. new PlayerText:Textdraw2[MAX_PLAYERS]; //Direction
  60. new PlayerText:Textdraw3[MAX_PLAYERS]; //Player Lock
  61. new PlayerText:Textdraw4[MAX_PLAYERS]; //Isometric Cam
  62. new PlayerText:Textdraw5[MAX_PLAYERS]; //Widescreen
  63. new PlayerText:TextdrawW0[MAX_PLAYERS]; //Wide Part1
  64. new PlayerText:TextdrawW1[MAX_PLAYERS]; //Wide Part2
  65. new bool:FCHUD[MAX_PLAYERS] = false;
  66.  
  67. CMD:fccred(playerid, params[])
  68. {
  69. return ShowPlayerDialog(playerid, DIALOG_Credits, DIALOG_STYLE_MSGBOX, "{DCB700}[FreeCam] Credits and Notes", "{FFFFFF}Thanks for using this filterscript.\nI hope you enjoy it as much as I did\nscripting it.\n\nSincerely,\n{DCB700}Aerotactics\n\n{FFFFFF}Testing and Help:\n{DCB700}Rangerxxll", "Awesome", "");
  70. }
  71.  
  72. CMD:fc(playerid,params[])
  73. {
  74. return cmd_freecam(playerid, params);
  75. }
  76.  
  77. CMD:freecam(playerid,params[])
  78. {
  79. if(CamEnabled[playerid] == false)
  80. {
  81. new Float:x, Float:y, Float:z, Float:a;
  82. GetPlayerPos(playerid, x,y,z);
  83. GetPlayerFacingAngle(playerid, a);
  84. CamSet[playerid]=CreateObject(19300,x,y,z+2,0,0,a);
  85. AttachCameraToObject(playerid, CamSet[playerid]);
  86. CamEnabled[playerid] = true;
  87. PlayerCatch[playerid][0] = CreateObject(3095,x,y,z-32,0,0,0);
  88. PlayerCatch[playerid][1] = CreateObject(3095,x,y+3,z-30,90,0,0);
  89. PlayerCatch[playerid][2] = CreateObject(3095,x,y-3,z-30,90,0,0);
  90. PlayerCatch[playerid][3] = CreateObject(3095,x+3,y,z-30,0,90,0);
  91. PlayerCatch[playerid][4] = CreateObject(3095,x-3,y,z-30,0,90,0);
  92. PlayerCatch[playerid][5] = CreateObject(3095,x,y,z-27,0,0,0);
  93. SetPlayerPos(playerid, x,y,z-30);
  94. FlyTimer[playerid] = SetTimerEx("FreeCam",25,true,"i",playerid);
  95. PlayerTextDrawShow(playerid, Textdraw0A[playerid]);
  96. PlayerTextDrawShow(playerid, Textdraw0[playerid]);
  97. PlayerTextDrawShow(playerid, Textdraw1[playerid]);
  98. PlayerTextDrawShow(playerid, Textdraw2[playerid]);
  99. PlayerTextDrawShow(playerid, Textdraw3[playerid]);
  100. PlayerTextDrawShow(playerid, Textdraw4[playerid]);
  101. PlayerTextDrawShow(playerid, Textdraw5[playerid]);
  102. FCHUD[playerid] = true;
  103. }
  104. else
  105. {
  106. new Float:x, Float:y, Float:z, Float:a;
  107. GetObjectPos(CamSet[playerid], x, y, z);
  108. GetObjectRot(CamSet[playerid], a, a, a);
  109. SetPlayerPos(playerid,x,y,z);
  110. SetPlayerFacingAngle(playerid, a);
  111. DestroyObject(CamSet[playerid]);
  112. SetCameraBehindPlayer(playerid);
  113. CamEnabled[playerid] = false;
  114. KillTimer(FlyTimer[playerid]);
  115. for(new i=0; i<6; i++)
  116. {
  117. if (IsValidObject(PlayerCatch[playerid][i]))
  118. {
  119. DestroyObject(PlayerCatch[playerid][i]);
  120. }
  121. }
  122. BoxCount[playerid] = 0;
  123. PlayerTextDrawHide(playerid, Textdraw0A[playerid]);
  124. PlayerTextDrawHide(playerid, Textdraw0[playerid]);
  125. PlayerTextDrawHide(playerid, Textdraw1[playerid]);
  126. PlayerTextDrawHide(playerid, Textdraw2[playerid]);
  127. PlayerTextDrawHide(playerid, Textdraw3[playerid]);
  128. PlayerTextDrawHide(playerid, Textdraw4[playerid]);
  129. PlayerTextDrawHide(playerid, Textdraw5[playerid]);
  130. FCHUD[playerid] = false;
  131. PlayerLock[playerid] = -1;
  132. }
  133. return 1;
  134. }
  135.  
  136. CMD:fcspeed(playerid,params[])
  137. {
  138. new speed;
  139. if(sscanf(params,"i",speed)) return SendClientMessage(playerid,COLOR_ORANGE,"[FreeCam] Usage: /fcspeed [1-5] (1 = slow, 2 = half slow, 3 = medium (default), 4 = half fast, 5 = fast)");
  140. if(speed < 1 || speed > 5) return SendClientMessage(playerid,COLOR_ORANGE,"[FreeCam] Usage: /fcspeed [1-5] (1 = slow, 2 = half slow, 3 = medium (default), 4 = half fast, 5 = fast)");
  141. if(CamEnabled[playerid] == true)
  142. {
  143. CamSpeed[playerid] = speed;
  144. }
  145. return 1;
  146. }
  147.  
  148. CMD:fchelp(playerid,params[])
  149. {
  150. SendClientMessage(playerid,COLOR_ORANGE,"[FreeCam] Commands: /freecam (/fc), /fcspeed, /fchelp, /fchud, /fcsel, /fccred, /savecampos [comment (optional)]");
  151. SendClientMessage(playerid,COLOR_ORANGE,"[FreeCam] Controls: Aim with mouse, W/S is Forward/Backward, A/D is Rotation Left/Right.");
  152. SendClientMessage(playerid,COLOR_ORANGE,"[FreeCam] Controls: Press Shift for upward movement, and SpaceBar for downward monement.");
  153. return 1;
  154. }
  155.  
  156. CMD:savecampos(playerid, params[])
  157. {
  158. new comment[128];
  159. if(sscanf(params,"s",comment)){comment = "";}
  160. new Float:x, Float:y, Float:z;
  161. GetPlayerCameraPos(playerid,x,y,z);
  162. new string[256];
  163. if(!fexist("/SavedCamPositions.txt")){format(string,sizeof(string),"FreeCam Saved Positions\r\n=============================\r\n[FreeCam] Position: %f, %f, %f //%s\r\n",x,y,z,comment);}
  164. else format(string,sizeof(string),"[FreeCam] Position: %f, %f, %f //%s\r\n",x,y,z,comment);
  165. new File:savepos = fopen("/SavedCamPositions.txt", io_append);
  166. if(savepos)
  167. {
  168. fwrite(savepos, string);
  169. fclose(savepos);
  170. }
  171. new string2[256];
  172. format(string2, sizeof(string2),"[FreeCam] Position: %f, %f, %f //%s",x,y,z,comment);
  173. SendClientMessage(playerid,COLOR_ORANGE,string2);
  174. SendClientMessage(playerid,COLOR_ORANGE,"Saved to /SavedCamPositions.txt");
  175. return 1;
  176. }
  177.  
  178. CMD:fchud(playerid, params[])
  179. {
  180. if(CamEnabled[playerid] == false) return SendClientMessage(playerid, COLOR_ORANGE, "[FreeCam] Usage: /fchud (toggles the hud while in camera mode)");
  181. if(FCHUD[playerid] == true)
  182. {
  183. PlayerTextDrawHide(playerid, Textdraw0A[playerid]);
  184. PlayerTextDrawHide(playerid, Textdraw0[playerid]);
  185. PlayerTextDrawHide(playerid, Textdraw1[playerid]);
  186. PlayerTextDrawHide(playerid, Textdraw2[playerid]);
  187. PlayerTextDrawHide(playerid, Textdraw3[playerid]);
  188. PlayerTextDrawHide(playerid, Textdraw4[playerid]);
  189. PlayerTextDrawHide(playerid, Textdraw5[playerid]);
  190. FCHUD[playerid] = false;
  191. }
  192. else
  193. {
  194. PlayerTextDrawShow(playerid, Textdraw0A[playerid]);
  195. PlayerTextDrawShow(playerid, Textdraw0[playerid]);
  196. PlayerTextDrawShow(playerid, Textdraw1[playerid]);
  197. PlayerTextDrawShow(playerid, Textdraw2[playerid]);
  198. PlayerTextDrawShow(playerid, Textdraw3[playerid]);
  199. PlayerTextDrawShow(playerid, Textdraw4[playerid]);
  200. PlayerTextDrawShow(playerid, Textdraw5[playerid]);
  201. FCHUD[playerid] = true;
  202. }
  203. return 1;
  204. }
  205.  
  206. CMD:fcsel(playerid, params[])
  207. {
  208. if(CamEnabled[playerid] == false) return SendClientMessage(playerid, COLOR_ORANGE, "[FreeCam] Usage: /fcsel (allows selection of FreeCam textdraws)");
  209. if(FCHUD[playerid] == false) return SendClientMessage(playerid, COLOR_ORANGE, "[FreeCam] Use /fchud to bring up the HUD in order to choose a textdraw.");
  210. SelectTextDraw(playerid, COLOR_GREEN);
  211. SendClientMessage(playerid, COLOR_ORANGE, "[FreeCam] Press ESC to cancel Textdraw select.");
  212. return 1;
  213. }
  214.  
  215. public OnPlayerConnect(playerid)
  216. {
  217. SendClientMessage(playerid,COLOR_ORANGE,"[FreeCam] Aero's FreeCam Beta: /fchelp");
  218.  
  219. CamEnabled[playerid] = false;
  220. Isometric[playerid] = false;
  221. Widescreen[playerid] = false;
  222. PlayerLock[playerid] = -1;
  223. CamSpeed[playerid] = 3;
  224. BoxCount[playerid] = 0;
  225.  
  226. TextdrawW0[playerid] = CreatePlayerTextDraw(playerid, 641.599975, 1.500000, "usebox");
  227. PlayerTextDrawLetterSize(playerid, TextdrawW0[playerid], 0.000000, 7.039381);
  228. PlayerTextDrawTextSize(playerid, TextdrawW0[playerid], -2.000000, 0.000000);
  229. PlayerTextDrawAlignment(playerid, TextdrawW0[playerid], 1);
  230. PlayerTextDrawColor(playerid, TextdrawW0[playerid], 0);
  231. PlayerTextDrawUseBox(playerid, TextdrawW0[playerid], true);
  232. PlayerTextDrawBoxColor(playerid, TextdrawW0[playerid], 255);
  233. PlayerTextDrawSetShadow(playerid, TextdrawW0[playerid], 0);
  234. PlayerTextDrawSetOutline(playerid, TextdrawW0[playerid], 0);
  235. PlayerTextDrawFont(playerid, TextdrawW0[playerid], 0);
  236.  
  237. TextdrawW1[playerid] = CreatePlayerTextDraw(playerid, 642.000000, 449.500000, "usebox");
  238. PlayerTextDrawLetterSize(playerid, TextdrawW1[playerid], 0.000000, -7.863334);
  239. PlayerTextDrawTextSize(playerid, TextdrawW1[playerid], -1.600000, 0.000000);
  240. PlayerTextDrawAlignment(playerid, TextdrawW1[playerid], 1);
  241. PlayerTextDrawColor(playerid, TextdrawW1[playerid], 0);
  242. PlayerTextDrawUseBox(playerid, TextdrawW1[playerid], true);
  243. PlayerTextDrawBoxColor(playerid, TextdrawW1[playerid], 255);
  244. PlayerTextDrawSetShadow(playerid, TextdrawW1[playerid], 0);
  245. PlayerTextDrawSetOutline(playerid, TextdrawW1[playerid], 0);
  246. PlayerTextDrawFont(playerid, TextdrawW1[playerid], 0);
  247.  
  248. Textdraw0A[playerid] = CreatePlayerTextDraw(playerid, 477.599792, 408.193481, "usebox");
  249. PlayerTextDrawLetterSize(playerid, Textdraw0A[playerid], 0.000000, 3.787039);
  250. PlayerTextDrawTextSize(playerid, Textdraw0A[playerid], 153.200088, 0.000000);
  251. PlayerTextDrawAlignment(playerid, Textdraw0A[playerid], 1);
  252. PlayerTextDrawColor(playerid, Textdraw0A[playerid], 0);
  253. PlayerTextDrawUseBox(playerid, Textdraw0A[playerid], true);
  254. PlayerTextDrawBoxColor(playerid, Textdraw0A[playerid], 0xDCB70033);
  255. PlayerTextDrawSetShadow(playerid, Textdraw0A[playerid], 0);
  256. PlayerTextDrawSetOutline(playerid, Textdraw0A[playerid], 0);
  257. PlayerTextDrawFont(playerid, Textdraw0A[playerid], 2);
  258.  
  259. Textdraw0[playerid] = CreatePlayerTextDraw(playerid, 315.600036, 411.661895, "Aero's FreeCam");
  260. PlayerTextDrawLetterSize(playerid, Textdraw0[playerid], 0.230000, 1.299999);
  261. PlayerTextDrawTextSize(playerid, Textdraw0[playerid], 462.000000, 313.600128);
  262. PlayerTextDrawAlignment(playerid, Textdraw0[playerid], 2);
  263. PlayerTextDrawColor(playerid, Textdraw0[playerid], -5963521);
  264. PlayerTextDrawUseBox(playerid, Textdraw0[playerid], true);
  265. PlayerTextDrawBoxColor(playerid, Textdraw0[playerid], 170);
  266. PlayerTextDrawSetShadow(playerid, Textdraw0[playerid], 0);
  267. PlayerTextDrawSetOutline(playerid, Textdraw0[playerid], 1);
  268. PlayerTextDrawBackgroundColor(playerid, Textdraw0[playerid], 170);
  269. PlayerTextDrawFont(playerid, Textdraw0[playerid], 2);
  270. PlayerTextDrawSetProportional(playerid, Textdraw0[playerid], 1);
  271.  
  272. Textdraw1[playerid] = CreatePlayerTextDraw(playerid, 205.999786, 412.657653, "");
  273. PlayerTextDrawLetterSize(playerid, Textdraw1[playerid], 0.230000, 1.299999);
  274. PlayerTextDrawTextSize(playerid, Textdraw1[playerid], 0.399999, 93.582229);
  275. PlayerTextDrawAlignment(playerid, Textdraw1[playerid], 2);
  276. PlayerTextDrawColor(playerid, Textdraw1[playerid], -5963521);
  277. PlayerTextDrawUseBox(playerid, Textdraw1[playerid], true);
  278. PlayerTextDrawBoxColor(playerid, Textdraw1[playerid], -1431655834);
  279. PlayerTextDrawSetShadow(playerid, Textdraw1[playerid], 0);
  280. PlayerTextDrawSetOutline(playerid, Textdraw1[playerid], 1);
  281. PlayerTextDrawBackgroundColor(playerid, Textdraw1[playerid], 170);
  282. PlayerTextDrawFont(playerid, Textdraw1[playerid], 2);
  283. PlayerTextDrawSetProportional(playerid, Textdraw1[playerid], 1);
  284.  
  285. Textdraw2[playerid] = CreatePlayerTextDraw(playerid, 424.799774, 412.657531, "");
  286. PlayerTextDrawLetterSize(playerid, Textdraw2[playerid], 0.230000, 1.299999);
  287. PlayerTextDrawTextSize(playerid, Textdraw2[playerid], 46.800003, 93.582237);
  288. PlayerTextDrawAlignment(playerid, Textdraw2[playerid], 2);
  289. PlayerTextDrawColor(playerid, Textdraw2[playerid], -5963521);
  290. PlayerTextDrawUseBox(playerid, Textdraw2[playerid], true);
  291. PlayerTextDrawBoxColor(playerid, Textdraw2[playerid], -1431655834);
  292. PlayerTextDrawSetShadow(playerid, Textdraw2[playerid], 0);
  293. PlayerTextDrawSetOutline(playerid, Textdraw2[playerid], 1);
  294. PlayerTextDrawBackgroundColor(playerid, Textdraw2[playerid], 170);
  295. PlayerTextDrawFont(playerid, Textdraw2[playerid], 2);
  296. PlayerTextDrawSetProportional(playerid, Textdraw2[playerid], 1);
  297.  
  298. Textdraw3[playerid] = CreatePlayerTextDraw(playerid, 205.599990, 428.088867, "Player Lock");
  299. PlayerTextDrawLetterSize(playerid, Textdraw3[playerid], 0.230000, 1.299999);
  300. PlayerTextDrawTextSize(playerid, Textdraw3[playerid], 30, 94);
  301. PlayerTextDrawAlignment(playerid, Textdraw3[playerid], 2);
  302. PlayerTextDrawColor(playerid, Textdraw3[playerid], -5963521);
  303. PlayerTextDrawUseBox(playerid, Textdraw3[playerid], true);
  304. PlayerTextDrawBoxColor(playerid, Textdraw3[playerid], COLOR_GREY);
  305. PlayerTextDrawSetShadow(playerid, Textdraw3[playerid], 0);
  306. PlayerTextDrawSetOutline(playerid, Textdraw3[playerid], 1);
  307. PlayerTextDrawBackgroundColor(playerid, Textdraw3[playerid], 255);
  308. PlayerTextDrawFont(playerid, Textdraw3[playerid], 2);
  309. PlayerTextDrawSetProportional(playerid, Textdraw3[playerid], 1);
  310. PlayerTextDrawSetSelectable(playerid, Textdraw3[playerid], true);
  311.  
  312. Textdraw4[playerid] = CreatePlayerTextDraw(playerid, 315.199859, 428.088623, "Isometric Cam");
  313. PlayerTextDrawLetterSize(playerid, Textdraw4[playerid], 0.230000, 1.299999);
  314. PlayerTextDrawTextSize(playerid, Textdraw4[playerid], 30, 94);
  315. PlayerTextDrawAlignment(playerid, Textdraw4[playerid], 2);
  316. PlayerTextDrawColor(playerid, Textdraw4[playerid], -5963521);
  317. PlayerTextDrawUseBox(playerid, Textdraw4[playerid], true);
  318. PlayerTextDrawBoxColor(playerid, Textdraw4[playerid], COLOR_GREY);
  319. PlayerTextDrawSetShadow(playerid, Textdraw4[playerid], 0);
  320. PlayerTextDrawSetOutline(playerid, Textdraw4[playerid], 1);
  321. PlayerTextDrawBackgroundColor(playerid, Textdraw4[playerid], 255);
  322. PlayerTextDrawFont(playerid, Textdraw4[playerid], 2);
  323. PlayerTextDrawSetProportional(playerid, Textdraw4[playerid], 1);
  324. PlayerTextDrawSetSelectable(playerid, Textdraw4[playerid], true);
  325.  
  326. Textdraw5[playerid] = CreatePlayerTextDraw(playerid, 425.199859, 428.088989, "Widescreen");
  327. PlayerTextDrawLetterSize(playerid, Textdraw5[playerid], 0.230000, 1.299999);
  328. PlayerTextDrawTextSize(playerid, Textdraw5[playerid], 30, 94);
  329. PlayerTextDrawAlignment(playerid, Textdraw5[playerid], 2);
  330. PlayerTextDrawColor(playerid, Textdraw5[playerid], -5963521);
  331. PlayerTextDrawUseBox(playerid, Textdraw5[playerid], true);
  332. PlayerTextDrawBoxColor(playerid, Textdraw5[playerid], COLOR_GREY);
  333. PlayerTextDrawSetShadow(playerid, Textdraw5[playerid], 0);
  334. PlayerTextDrawSetOutline(playerid, Textdraw5[playerid], 1);
  335. PlayerTextDrawBackgroundColor(playerid, Textdraw5[playerid], 255);
  336. PlayerTextDrawFont(playerid, Textdraw5[playerid], 2);
  337. PlayerTextDrawSetProportional(playerid, Textdraw5[playerid], 1);
  338. PlayerTextDrawSetSelectable(playerid, Textdraw5[playerid], true);
  339. return 1;
  340. }
  341.  
  342. public OnPlayerDisconnect(playerid, reason)
  343. {
  344. if(CamEnabled[playerid] == true)
  345. {
  346. DestroyObject(CamSet[playerid]);
  347. KillTimer(FlyTimer[playerid]);
  348. for(new i=0; i<6; i++)
  349. {
  350. if (IsValidObject(PlayerCatch[playerid][i])){DestroyObject(PlayerCatch[playerid][i]);}
  351. }
  352. BoxCount[playerid] = 0;
  353. }
  354. for(new i=0; i<MAX_PLAYERS; i++)
  355. {
  356. if(!IsPlayerConnected(i)){continue;}
  357. if(PlayerLock[i] == playerid)
  358. {
  359. SendClientMessage(playerid,COLOR_ORANGE,"[FreeCam] The Player Locked player disconnected.");
  360. PlayerLock[i] = -1;
  361. PlayerTextDrawHide(i, Textdraw3[i]);
  362. PlayerTextDrawBoxColor(i, Textdraw3[i], COLOR_GREY);
  363. PlayerTextDrawShow(i, Textdraw3[i]);
  364. if(Isometric[i] == true)
  365. {
  366. Isometric[i] = false;
  367. PlayerTextDrawHide(i, Textdraw4[i]);
  368. PlayerTextDrawBoxColor(i, Textdraw4[i], COLOR_GREY);
  369. PlayerTextDrawShow(i, Textdraw4[i]);
  370. }
  371. }
  372.  
  373. }
  374. PlayerTextDrawHide(playerid, Textdraw0A[playerid]);
  375. PlayerTextDrawHide(playerid, Textdraw0[playerid]);
  376. PlayerTextDrawHide(playerid, Textdraw1[playerid]);
  377. PlayerTextDrawHide(playerid, Textdraw2[playerid]);
  378. PlayerTextDrawHide(playerid, Textdraw3[playerid]);
  379. PlayerTextDrawHide(playerid, Textdraw4[playerid]);
  380. PlayerTextDrawHide(playerid, Textdraw5[playerid]);
  381. return 1;
  382. }
  383.  
  384. public OnPlayerClickPlayerTextDraw(playerid, PlayerText:playertextid)
  385. {
  386. if(playertextid == Textdraw3[playerid])
  387. {
  388. if(PlayerLock[playerid] == -1)
  389. {
  390. ShowPlayerDialog(playerid, DIALOG_PlayerLock, DIALOG_STYLE_INPUT, "{DCB700}[FreeCam] Player Lock", "Input the ID of the player you would\nlike to lock your camera towards.", "Enter", "Cancel");
  391. CancelSelectTextDraw(playerid);
  392. }
  393. else
  394. {
  395. PlayerTextDrawHide(playerid, Textdraw3[playerid]);
  396. PlayerTextDrawBoxColor(playerid, Textdraw3[playerid], COLOR_GREY);
  397. PlayerTextDrawShow(playerid, Textdraw3[playerid]);
  398. PlayerLock[playerid] = -1;
  399. CancelSelectTextDraw(playerid);
  400. }
  401. return 1;
  402. }
  403. if(playertextid == Textdraw4[playerid])
  404. {
  405. if(PlayerLock[playerid] == -1)
  406. {
  407. SendClientMessage(playerid,COLOR_ORANGE,"[FreeCam] The Isometric Cam requires a Player Lock.");
  408. CancelSelectTextDraw(playerid);
  409. return 1;
  410. }
  411. if(Isometric[playerid] == false)
  412. {
  413. PlayerTextDrawHide(playerid, Textdraw4[playerid]);
  414. PlayerTextDrawBoxColor(playerid, Textdraw4[playerid], COLOR_GREEN);
  415. PlayerTextDrawShow(playerid, Textdraw4[playerid]);
  416. IsoTimer[playerid] = SetTimerEx("IsoCam", 25, true, "i", playerid);
  417. CancelSelectTextDraw(playerid);
  418. Isometric[playerid] = true;
  419. }
  420. else
  421. {
  422. PlayerTextDrawHide(playerid, Textdraw4[playerid]);
  423. PlayerTextDrawBoxColor(playerid, Textdraw4[playerid], COLOR_GREY);
  424. PlayerTextDrawShow(playerid, Textdraw4[playerid]);
  425. KillTimer(IsoTimer[playerid]);
  426. CancelSelectTextDraw(playerid);
  427. Isometric[playerid] = false;
  428. }
  429. return 1;
  430. }
  431. if(playertextid == Textdraw5[playerid])
  432. {
  433. if(Widescreen[playerid] == false)
  434. {
  435. PlayerTextDrawHide(playerid, Textdraw5[playerid]);
  436. PlayerTextDrawBoxColor(playerid, Textdraw5[playerid], COLOR_GREEN);
  437. PlayerTextDrawShow(playerid, Textdraw5[playerid]);
  438. PlayerTextDrawShow(playerid, TextdrawW0[playerid]);
  439. PlayerTextDrawShow(playerid, TextdrawW1[playerid]);
  440. CancelSelectTextDraw(playerid);
  441. Widescreen[playerid] = true;
  442. }
  443. else
  444. {
  445. PlayerTextDrawHide(playerid, Textdraw5[playerid]);
  446. PlayerTextDrawBoxColor(playerid, Textdraw5[playerid], COLOR_GREY);
  447. PlayerTextDrawShow(playerid, Textdraw5[playerid]);
  448. PlayerTextDrawHide(playerid, TextdrawW0[playerid]);
  449. PlayerTextDrawHide(playerid, TextdrawW1[playerid]);
  450. CancelSelectTextDraw(playerid);
  451. Widescreen[playerid] = false;
  452. }
  453. return 1;
  454. }
  455. return 1;
  456. }
  457.  
  458. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  459. {
  460. if(dialogid == DIALOG_PlayerLock)
  461. {
  462. if(response)
  463. {
  464. new string[5];
  465. strins(string, inputtext, 0);
  466. new target = strval(string);
  467. if(target < 0 || target > 500) return SendClientMessage(playerid,COLOR_ORANGE,"[FreeCam] Player IDs range from 0 to 500 in a standard server.");
  468. if(!IsPlayerConnected(target)) return SendClientMessage(playerid,COLOR_ORANGE,"[FreeCam] Invalid Player ID. Player is not connected.");
  469. if(CamEnabled[target] == true) return SendClientMessage(playerid,COLOR_ORANGE,"[FreeCam] Player is using a FreeCam. Player Lock not available.");
  470. PlayerLock[playerid] = target;
  471. PlayerTextDrawHide(playerid, Textdraw3[playerid]);
  472. PlayerTextDrawBoxColor(playerid, Textdraw3[playerid], COLOR_GREEN);
  473. PlayerTextDrawShow(playerid, Textdraw3[playerid]);
  474. return 1;
  475. }
  476. }
  477. return 0;
  478. }
  479.  
  480. forward IsoCam(playerid);
  481. public IsoCam(playerid)
  482. {
  483. new Float:x, Float:y, Float:z;
  484. GetPlayerPos(PlayerLock[playerid], x, y ,z);
  485. SetPlayerCameraLookAt(playerid, x, y, z+1);
  486. MoveObject(CamSet[playerid],x+5,y+5,z+5,10);
  487. return 1;
  488. }
  489.  
  490. forward FreeCam(playerid);
  491. public FreeCam(playerid)
  492. {
  493. new Keys,ud,lr;
  494. new Float:fb,Float:ss,Float:ud2;
  495. new Float:cx, Float:cy, Float:cz, Float:ca;
  496. GetPlayerKeys(playerid,Keys,ud,lr);
  497. if(CamEnabled[playerid] == true)
  498. {
  499. if(ud == KEY_UP){fb=1.2;}
  500. if(ud == KEY_DOWN){fb=-1.2;}
  501. if(lr == KEY_LEFT){ss=1.75;}
  502. if(lr == KEY_RIGHT){ss=-1.75;}
  503. if(Keys == KEY_SPRINT){ud2=-0.2;}
  504. if(Keys == KEY_JUMP){ud2=0.2;}
  505. GetXYInFrontOfObject(CamSet[playerid], cx, cy, cz, fb);
  506. GetObjectRot(CamSet[playerid], ca, ca, ca);
  507. MoveObject(CamSet[playerid],cx,cy,cz+(ud2),CamSpeed[playerid]*3,0,0,ca+ss);
  508. if(PlayerLock[playerid] != -1)
  509. {
  510. new Float:x2,Float:y2,Float:z2;
  511. GetPlayerPos(PlayerLock[playerid],x2,y2,z2);
  512. SetPlayerCameraLookAt(playerid,x2,y2,z2+1);
  513. }
  514. }
  515. if(BoxCount[playerid] == 100)
  516. {
  517. for(new i=0; i<6; i++)
  518. {
  519. if (IsValidObject(PlayerCatch[playerid][i]))
  520. {
  521. DestroyObject(PlayerCatch[playerid][i]);
  522. }
  523. }
  524. PlayerCatch[playerid][0] = CreateObject(3095,cx,cy,-32,0,0,0);
  525. PlayerCatch[playerid][1] = CreateObject(3095,cx,cy+3,-30,90,0,0);
  526. PlayerCatch[playerid][2] = CreateObject(3095,cx,cy-3,-30,90,0,0);
  527. PlayerCatch[playerid][3] = CreateObject(3095,cx+3,cy,-30,0,90,0);
  528. PlayerCatch[playerid][4] = CreateObject(3095,cx-3,cy,-30,0,90,0);
  529. PlayerCatch[playerid][5] = CreateObject(3095,cx,cy,-27,0,0,0);
  530. SetPlayerPos(playerid, cx,cy,-30);
  531. BoxCount[playerid] = 0;
  532. }
  533. BoxCount[playerid]++;
  534. UpdateTDs(playerid);
  535. return 1;
  536. }
  537.  
  538. stock UpdateTDs(playerid)
  539. {
  540. new TD1[24];
  541. new TD2[24];
  542. new Float:Rot;
  543. GetObjectRot(CamSet[playerid], Rot, Rot, Rot);
  544. new Dir = floatround(Rot,floatround_round);
  545. while(Dir > 360){Dir -= 360;}
  546. while(Dir < 0){Dir += 360;}
  547. format(TD1, sizeof(TD1), "Angle: %i", Dir);
  548. new Str[3];
  549. switch(Dir)
  550. {
  551. case 0..22: Str = "N";
  552. case 23..67: Str = "NW";
  553. case 68..112: Str = "W";
  554. case 113..157: Str = "SW";
  555. case 158..202: Str = "S";
  556. case 203..247: Str = "SE";
  557. case 248..292: Str = "E";
  558. case 293..337: Str = "NE";
  559. case 338..360: Str = "N";
  560. }
  561. format(TD2, sizeof(TD2), "Direction: %s", Str);
  562. PlayerTextDrawSetString(playerid, Textdraw1[playerid], TD1);
  563. PlayerTextDrawSetString(playerid, Textdraw2[playerid], TD2);
  564. }
  565.  
  566. GetXYInFrontOfObject(objectid, &Float:x2, &Float:y2, &Float:z2, Float:distance)
  567. { //modified from GetXYInFrontOfPlayer
  568. new Float:a2;
  569. GetObjectPos(objectid, x2, y2, z2);
  570. GetObjectRot(objectid, a2, a2, a2);
  571. x2 += (distance * floatsin(-a2, degrees));
  572. y2 += (distance * floatcos(-a2, degrees));
  573. }
Advertisement
Add Comment
Please, Sign In to add comment