Guest User

Untitled

a guest
Jul 28th, 2012
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.15 KB | None | 0 0
  1. #include <a_samp>
  2.  
  3. forward Timer();
  4. forward SetPlayerPosWithObjects(playerid,Float:x,Float:y,Float:z);
  5. /*
  6. SetPlayerPosWithObjects usage in your gamemode:
  7.  
  8. CallRemoteFunction("SetPlayerPosWithObjects","ifff",playerid,newx,newy,newz);
  9. */
  10.  
  11. //------------------------------------------------------------------------------
  12.  
  13. enum object_info
  14. {
  15. modelid,
  16. Float:ox,
  17. Float:oy,
  18. Float:oz,
  19. Float:orx,
  20. Float:ory,
  21. Float:orz,
  22. Float:viewdist
  23. }
  24.  
  25. new Objects[][object_info] = {
  26.  
  27. //{2634, 2144.2114, 1627.3164, 994.2532, 0.0000, 0.0000, 0.0000, 200.0},
  28.  
  29.  
  30. ///////////////////////////////////////////////////////
  31.  
  32. (980, 785.29998779297, -1152.3000488281, 25.299999237061, 0, 0, 270);
  33. (980, 756.09997558594, -1280.5, 15.300000190735, 0, 0, 359.99584960938);
  34. (987, 775.79998779297, -1310, 13.300000190735, 0, 0, 0);
  35. (987, 763.79998779297, -1309.6999511719, 13.300000190735, 0, 0, 0);
  36. (987, 767.5322265625, -1371.4453125, 9.2926416397095, 0, 0, 0);
  37. (987, 751.90002441406, -1309.4000244141, 13.300000190735, 0, 0, 0);
  38. (987, 739.79998779297, -1309.4000244141, 13.300000190735, 0, 0, 0);
  39. (987, 727.70001220703, -1309.5, 13.300000190735, 0, 0, 0);
  40. (987, 715.59997558594, -1309.5, 13.300000190735, 0, 0, 0);
  41. (987, 703.5, -1309.5, 13.300000190735, 0, 0, 0);
  42. (987, 691.5, -1309.5, 13.39999961853, 0, 0, 0);
  43. (987, 679.5, -1309.5, 13.39999961853, 0, 0, 0);
  44. (987, 647.90002441406, -1309.3000488281, 13.300000190735, 0, 0, 0);
  45. (987, 659.20001220703, -1309.5999755859, 12.60000038147, 0, 0, 0);
  46. (987, 674.79998779297, -1309.4000244141, 13.39999961853, 0, 0, 0);
  47. (987, 648, -1297.6999511719, 13.699999809265, 0, 0, 268);
  48. (987, 698, -1318.0999755859, -62.799999237061, 0, 0, 265.99584960938);
  49. (987, 648.20001220703, -1285.5999755859, 15, 0, 0, 268);
  50. (987, 648, -1274.1999511719, 15.699999809265, 0, 0, 272);
  51. (987, 646.79998779297, -1262.3000488281, 16, 0, 0, 276);
  52. (987, 645.29998779297, -1250.8000488281, 16.200000762939, 0, 0, 276);
  53. (987, 644, -1238.9000244141, 16.89999961853, 0, 0, 276);
  54. (987, 643.29998779297, -1232.6999511719, 17.39999961853, 0, 0, 276);
  55. (987, 653.40002441406, -1235.3000488281, 16.39999961853, 0, 0, 166);
  56. (987, 666.09997558594, -1219.4000244141, 14.89999961853, 0, 0, 4);
  57. (987, 666.20001220703, -1219.1999511719, 19.60000038147, 0, 0, 4);
  58. (987, 666.20001220703, -1219, 24.60000038147, 0, 0, 4);
  59. (987, 673.29998779297, -1218.6999511719, 25.299999237061, 0, 0, 37.996215820313);
  60. (987, 682.70001220703, -1211.4000244141, 25.299999237061, 0, 0, 38);
  61. (987, 686.29998779297, -1208.5999755859, 25.299999237061, 0, 0, 38);
  62. (987, 701.70001220703, -1206.9000244141, 27.200000762939, 0, 0, 138);
  63. (987, 701.70001220703, -1206.8000488281, 17.200000762939, 0, 0, 138);
  64. (987, 701.70001220703, -1206.8000488281, 22.200000762939, 0, 0, 138);
  65. (987, 708, -1196.8000488281, 19.700000762939, 0, 0, 240);
  66. (987, 720.29998779297, -1176.3000488281, 19.700000762939, 0, 0, 240);
  67. (987, 714.29998779297, -1186.5, 19.700000762939, 0, 0, 237.99609375);
  68. (987, 726.20001220703, -1165.9000244141, 19.700000762939, 0, 0, 240);
  69. (987, 731.79998779297, -1155.1999511719, 19.799999237061, 0, 0, 242);
  70. (987, 737.40002441406, -1144.5999755859, 19.799999237061, 0, 0, 242);
  71. (987, 782.90002441406, -1142.5, 25.799999237061, 0, 0, 179.99450683594);
  72. (987, 707.90002441406, -1196.6999511719, 24.700000762939, 0, 0, 240);
  73. (987, 714.29998779297, -1186.5, 24.700000762939, 0, 0, 238);
  74. (987, 720.29998779297, -1176.1999511719, 24.700000762939, 0, 0, 240);
  75. (987, 726.09997558594, -1165.9000244141, 24.700000762939, 0, 0, 240);
  76. (987, 731.70001220703, -1155.3000488281, 24.700000762939, 0, 0, 242);
  77. (987, 737.20001220703, -1144.5999755859, 24.799999237061, 0, 0, 242);
  78. (987, 771, -1142.5, 25.799999237061, 0, 0, 180);
  79. (987, 759.09997558594, -1142.3000488281, 25.299999237061, 0, 0, 180);
  80. (987, 752.09997558594, -1142.3000488281, 25, 0, 0, 180);
  81. (987, 746, -1142.0999755859, 19.89999961853, 0, 0, 206);
  82. (987, 754.615234375, -1158.43359375, 17.681871414185, 0, 0, 0);
  83. (987, 745.90002441406, -1142, 24.89999961853, 0, 0, 206);
  84. (987, 787.40002441406, -1310.0999755859, 13.300000190735, 0, 0, 90);
  85. (987, 787.40002441406, -1298.0999755859, 13.300000190735, 0, 0, 89.9990234375);
  86. (987, 787.5, -1250.3000488281, 13.39999961853, 0, 0, 90);
  87. (987, 787.40002441406, -1286.0999755859, 13.300000190735, 0, 0, 90);
  88. (987, 787.5, -1274.1999511719, 13.300000190735, 0, 0, 90);
  89. (987, 787.5, -1262.3000488281, 13.300000190735, 0, 0, 90);
  90. (987, 787.5, -1238.3000488281, 13.89999961853, 0, 0, 90);
  91. (987, 787.5, -1226.3000488281, 14.5, 0, 0, 90);
  92. (987, 787.29998779297, -1214.4000244141, 16.10000038147, 0, 0, 90);
  93. (987, 787.29998779297, -1202.4000244141, 18, 0, 0, 90);
  94. (987, 787.5, -1190.4000244141, 20, 0, 0, 90);
  95. (987, 787.5, -1178.4000244141, 21.60000038147, 0, 0, 90);
  96. (987, 787.29998779297, -1174.1999511719, 23.299999237061, 0, 0, 90);
  97. (17324, 756, -1292.4000244141, 12.60000038147, 0, 0, 179.99499511719);
  98. ///////////////////////////////////////////////////////
  99.  
  100.  
  101.  
  102. };
  103.  
  104.  
  105. enum player_info
  106. {
  107. objid[sizeof(Objects)],
  108. bool:view[sizeof(Objects)]
  109. }
  110. new Player[MAX_PLAYERS][player_info];
  111.  
  112. //------------------------------------------------------------------------------
  113.  
  114. bool:IsInReach(Float:x,Float:y,Float:z,Float:x2,Float:y2,Float:z2,Float:dist)
  115. {
  116. x = (x > x2) ? x - x2 : x2 - x;
  117. if(x > dist) return false;
  118. y = (y > y2) ? y - y2 : y2 - y;
  119. if(y > dist) return false;
  120. z = (z > z2) ? z - z2 : z2 - z;
  121. if(z > dist) return false;
  122. return true;
  123. }
  124.  
  125. //------------------------------------------------------------------------------
  126.  
  127. new timer;
  128.  
  129. public OnFilterScriptInit()
  130. {
  131. print(" Loaded successful.");
  132. timer = SetTimer("Timer",1000,1);
  133. return 1;
  134. }
  135.  
  136. public OnFilterScriptExit()
  137. {
  138. for(new i = 0; i < MAX_PLAYERS; i++)
  139. {
  140. for(new o = 0; o < sizeof(Objects); o++)
  141. {
  142. if(Player[i][view][o])
  143. {
  144. Player[i][view][o] = false;
  145. DestroyPlayerObject(i,Player[i][objid][o]);
  146. }
  147. }
  148. }
  149. KillTimer(timer);
  150. }
  151.  
  152. //------------------------------------------------------------------------------
  153.  
  154. public OnPlayerConnect(playerid)
  155. {
  156. for(new i = 0; i < sizeof(Objects); i++) Player[playerid][view][i] = false;
  157. }
  158.  
  159. public OnPlayerDisconnect(playerid)
  160. {
  161. for(new i = 0; i < sizeof(Objects); i++)
  162. {
  163. if(Player[playerid][view][i])
  164. {
  165. Player[playerid][view][i] = false;
  166. DestroyPlayerObject(playerid,Player[playerid][objid][i]);
  167. }
  168. }
  169. }
  170.  
  171. //------------------------------------------------------------------------------
  172.  
  173. public Timer()
  174. {
  175. for(new i = 0; i < MAX_PLAYERS; i++)
  176. if(IsPlayerConnected(i))
  177. PlayerObjectUpdate(i);
  178. }
  179.  
  180. PlayerObjectUpdate(playerid)
  181. {
  182. new Float:pos[3];
  183. GetPlayerPos(playerid,pos[0],pos[1],pos[2]);
  184. for(new i = 0; i < sizeof(Objects); i++)
  185. {
  186. if(!Player[playerid][view][i])
  187. {
  188. if(IsInReach(pos[0],pos[1],pos[2],Objects[i][ox],Objects[i][oy],Objects[i][oz],Objects[i][viewdist]))
  189. {
  190. Player[playerid][view][i] = true;
  191. Player[playerid][objid][i] = CreatePlayerObject(playerid,Objects[i][modelid],Objects[i][ox],Objects[i][oy],Objects[i][oz],Objects[i][orx],Objects[i][ory],Objects[i][orz]);
  192. }
  193. } else if(!IsInReach(pos[0],pos[1],pos[2],Objects[i][ox],Objects[i][oy],Objects[i][oz],Objects[i][viewdist]))
  194. {
  195. Player[playerid][view][i] = false;
  196. DestroyPlayerObject(playerid,Player[playerid][objid][i]);
  197. }
  198. }
  199. }
  200.  
  201. public SetPlayerPosWithObjects(playerid,Float:x,Float:y,Float:z)
  202. {
  203. for(new i = 0; i < sizeof(Objects); i++)
  204. {
  205. if(!Player[playerid][view][i])
  206. {
  207. if(IsInReach(x,y,z,Objects[i][ox],Objects[i][oy],Objects[i][oz],Objects[i][viewdist]))
  208. {
  209. Player[playerid][view][i] = true;
  210. Player[playerid][objid][i] = CreatePlayerObject(playerid,Objects[i][modelid],Objects[i][ox],Objects[i][oy],Objects[i][oz],Objects[i][orx],Objects[i][ory],Objects[i][orz]);
  211. }
  212. } else if(!IsInReach(x,y,z,Objects[i][ox],Objects[i][oy],Objects[i][oz],Objects[i][viewdist]))
  213. {
  214. Player[playerid][view][i] = false;
  215. DestroyPlayerObject(playerid,Player[playerid][objid][i]);
  216. }
  217. }
  218. SetPlayerPos(playerid,Float:x,Float:y,Float:z);
  219. }
  220.  
  221. public OnPlayerSpawn(playerid)
  222. PlayerObjectUpdate(playerid);
Advertisement
Add Comment
Please, Sign In to add comment