Advertisement
Guest User

Untitled

a guest
Feb 20th, 2011
389
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.88 KB | None | 0 0
  1. #include <a_samp>
  2.  
  3. #define SHIP_OBJECTS 14
  4.  
  5. new object[SHIP_OBJECTS];
  6. new boat, player_in_boat = -1;
  7. new refresh_cam;
  8. new camera;
  9. new Float:PI = 3.1415926535897932384626433832795;
  10.  
  11. forward RefreshCam();
  12.  
  13. public OnFilterScriptInit()
  14. {
  15. print("\n--------------------------------------");
  16. print(" Big ship v2 by Ponchik");
  17. print("--------------------------------------\n");
  18.  
  19. boat = CreateVehicle(484, 813.601318, -2084.696777, 0.0, 270.0, 1, 1, 60*10); //change boat/position here/time to respawn
  20.  
  21. //objects of ship
  22. object[0] = CreateObject(10771, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); //ship
  23. object[1] = CreateObject(10772, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); //white thing on floor (oh my english...)
  24. object[2] = CreateObject(11146, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); //ship interior
  25. object[3] = CreateObject(11145, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); //ship interior part 2
  26. object[4] = CreateObject(11148, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); //some pipes
  27. object[5] = CreateObject(11147, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); //again some pipes
  28. object[6] = CreateObject(11149, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); //ship interior part 3
  29. object[7] = CreateObject(11237, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); //antenas
  30. object[8] = CreateObject(10770, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); //base for antenas
  31. object[9] = CreateObject(3885, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); //base for rockets
  32. object[10] = CreateObject(3884, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); //rockets
  33. object[11] = CreateObject(3885, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); //base for rockets 2
  34. object[12] = CreateObject(3884, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); //rockets 2
  35. object[13] = CreateObject(11374,0.0, 0.0, 0.0, 0.0, 0.0, 0.0); //bended pipes
  36.  
  37. //attach objects to boat
  38. AttachObjectToVehicle(object[0], boat, -0, 11.373538, 5.45, 0.0, 0.0, 90.0);
  39. AttachObjectToVehicle(object[1], boat, 0.18, 12.723538, 17.27, 0.0, 0.0, 90.0);
  40. AttachObjectToVehicle(object[2], boat, -0.55, 2.383538, 12.29, 0.0, 0.0, 90.0);
  41. AttachObjectToVehicle(object[3], boat, 0, -51.506462, 4.26, 0.0, 0.0, 90.0);
  42. AttachObjectToVehicle(object[4], boat, -0, 2.383538, 12.88, 0.0, 0.0, 90.0);
  43. AttachObjectToVehicle(object[5], boat, 0, -49.336462, 5.08, 0.0, 0.0, 90.0);
  44. AttachObjectToVehicle(object[6], boat, 5.21, 5.303538, 11.98, 0.0, 0.0, 90.0);
  45. AttachObjectToVehicle(object[7], boat, 7.55, 14.653538, 38.68, 0.0, 0.0, 90.0);
  46. AttachObjectToVehicle(object[8], boat, 7.55, 14.603538, 38.68, 0.0, 0.0, 90.0);
  47. AttachObjectToVehicle(object[9], boat, 7.49, 44.743538, 21.02, 0.0, 0.0, 90.0);
  48. AttachObjectToVehicle(object[10], boat, 7.49, 44.743538, 21.05, 0.0, 0.0, 90.0);
  49. AttachObjectToVehicle(object[11], boat, 7.9, -25.726462, 18.01, 0.0, 0.0, 90.0);
  50. AttachObjectToVehicle(object[12], boat, 7.9, -25.726462, 18.05, 0.0, 0.0, 90.0);
  51. AttachObjectToVehicle(object[13], boat, 5.21, 5.303538, 11.98, 0.0, 0.0, 90.0);
  52.  
  53. return 1;
  54. }
  55.  
  56. public OnFilterScriptExit()
  57. {
  58. for(new a; a<SHIP_OBJECTS; a++) {
  59. DestroyObject(object[a]);
  60. }
  61.  
  62. DestroyVehicle(boat);
  63. KillTimer(refresh_cam);
  64. if(player_in_boat != -1) {
  65. SpawnPlayer(player_in_boat);
  66. SetCameraBehindPlayer(player_in_boat);
  67. }
  68.  
  69. return 1;
  70. }
  71.  
  72. public OnPlayerCommandText(playerid, cmdtext[])
  73. {
  74. if(strcmp(cmdtext, "/shiphelp", true, 9) == 0)
  75. {
  76. SendClientMessage(playerid, 0x00FF00FF, "Big ship v2 by {F57E2F}Ponchik {00FF00}(btw hello to {13A61E}antichat {00FF00}team)");
  77. SendClientMessage(playerid, 0x00FF00FF, "Use {FFCC00}/goinship {00FF00}to control ship");
  78. SendClientMessage(playerid, 0x00FF00FF, "Use {FFCC00}CRTL button{00FF00} to change camera");
  79. SendClientMessage(playerid, 0x00FF00FF, "Press {FFCC00}F{00FF00} to exit from ship");
  80. return 1;
  81. }
  82.  
  83. if(strcmp(cmdtext, "/goinship", true, 9) == 0)
  84. {
  85. if(player_in_boat != -1) {
  86. SendClientMessage(playerid, 0xFF0000FF, "Other player controling ship");
  87. return 1;
  88. }
  89.  
  90. new Float:vehx, Float:vehy, Float:vehz;
  91. GetVehiclePos(boat, vehx, vehy, vehz);
  92.  
  93. if(!IsPlayerInRangeOfPoint(playerid, 60.0, vehx, vehy, vehz)) { //you can delete this check to allow players to teleport to ship
  94. SendClientMessage(playerid,0xFF0000FF,"Get closer to ship");
  95. return 1;
  96. }
  97. SetVehiclePos(boat, vehx, vehy, 0); //some times boat sinking
  98. PutPlayerInVehicle(playerid, boat, 0);
  99. player_in_boat = playerid;
  100. refresh_cam = SetTimer("RefreshCam", 100, true); //here you can change refresh time to smoother camera move
  101.  
  102. camera = 1;
  103. return 1;
  104. }
  105.  
  106. return 0;
  107. }
  108.  
  109. public OnPlayerExitVehicle(playerid, vehicleid)
  110. {
  111. if(vehicleid == boat) {
  112. player_in_boat = -1;
  113. KillTimer(refresh_cam);
  114. new Float:x, Float:y, Float:z;
  115. GetPlayerPos(playerid, x, y, z);
  116. SetPlayerPos(playerid,x, y, z+20);
  117. SetCameraBehindPlayer(playerid);
  118. }
  119. return 1;
  120. }
  121.  
  122. public OnPlayerDeath(playerid, killerid, reason)
  123. {
  124. if(player_in_boat == playerid) {
  125. player_in_boat = -1;
  126. KillTimer(refresh_cam);
  127. SetCameraBehindPlayer(playerid);
  128. }
  129. return 1;
  130. }
  131.  
  132. public OnPlayerDisconnect(playerid, reason)
  133. {
  134. if(player_in_boat == playerid) {
  135. player_in_boat = -1;
  136. KillTimer(refresh_cam);
  137. }
  138. return 1;
  139. }
  140.  
  141. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  142. {
  143. if (player_in_boat == playerid && (newkeys & KEY_ACTION) && !(oldkeys & KEY_ACTION))
  144. {
  145. camera++;
  146. if(camera > 6) {
  147. camera = 0;
  148. SetCameraBehindPlayer(playerid);
  149. SendClientMessage(playerid,0x00FF00FF,"Camera changed to default");
  150. }else{
  151. new msg[32];
  152. format(msg,sizeof(msg),"Camera changed to ¹%i", camera);
  153. SendClientMessage(playerid,0x00FF00FF,msg);
  154. }
  155. }
  156. return 1;
  157. }
  158.  
  159. public RefreshCam() {
  160. //change camera position here
  161. new Float:AX, Float:AY, Float:AZ;
  162. new Float:BX, Float:BY, Float:BZ;
  163. new Float:ugol, Float:new_BX, Float:new_BY, Float:aradian, Float:x1, Float:y1, Float:x_v_staroi, Float:y_v_staroi;
  164.  
  165. GetVehiclePos(boat, AX, AY, AZ);
  166. GetVehicleZAngle(boat, ugol);
  167.  
  168. if(camera == 1) {
  169. BX = AX+140;
  170. BY = AY;
  171. BZ = 70;
  172. }else if(camera == 2) {
  173. BX = AX+70;
  174. BY = AY;
  175. BZ = 35;
  176. }else if(camera == 3) {
  177. BX = AX;
  178. BY = AY+50;
  179. BZ = 120;
  180. }else if(camera == 4) {
  181. BX = AX;
  182. BY = AY-50;
  183. BZ = 120;
  184. }else if(camera == 5) {
  185. BX = AX-70;
  186. BY = AY;
  187. BZ = 40;
  188. }else if(camera == 6) {
  189. BX = AX;
  190. BY = AY+10;
  191. BZ = 120;
  192. }else{
  193. return 1;
  194. }
  195.  
  196. new_BX = BX-AX;
  197. new_BY = BY-AY;
  198.  
  199. aradian = ((-ugol)+90)*(PI/180);
  200. x1 = new_BX*floatcos(aradian)+new_BY*floatsin(aradian);
  201. y1 = -new_BX*floatsin(aradian)+new_BY*floatcos(aradian);
  202.  
  203. x_v_staroi = x1+AX;
  204. y_v_staroi = y1+AY;
  205.  
  206. SetPlayerCameraPos(player_in_boat, x_v_staroi, y_v_staroi, BZ);
  207. SetPlayerCameraLookAt(player_in_boat, AX, AY, AZ);
  208. return 1;
  209. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement