Advertisement
Guest User

NtCat

a guest
Apr 13th, 2009
654
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.07 KB | None | 0 0
  1. // Los Santos to Las Vegas Underground by NtCat. All rights reserved.
  2. #include <a_samp>
  3. #define FILTERSCRIPT
  4.  
  5. #define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
  6.  
  7. #define TICKET_COST 100 // change if needed
  8.  
  9. #define FloorS 0
  10. #define FloorMID 1
  11. #define FloorN 2
  12. #define WallS 3
  13. #define WallN 4
  14. #define WallNE 5
  15. #define WallSE 6
  16. #define WallSW 7
  17. #define WallNW 8
  18. #define RoofS 9
  19. #define RoofMID 10
  20. #define RoofN 11
  21.  
  22. #define UP 0
  23. #define DOWN 1
  24.  
  25. #define Moving 0
  26. #define LV 1
  27. #define LS 2
  28.  
  29. new Metro[12];
  30.  
  31. new LVElevPickup[2];
  32. new LSElevPickup[2];
  33.  
  34. new MetroPos;
  35.  
  36. new Ticket[MAX_PLAYERS];
  37. new InMetro[MAX_PLAYERS];
  38. new MetroUpdateTime;
  39.  
  40. forward MetroDepart();
  41. forward MetroUpdate();
  42.  
  43. stock IsPlayerInSphere(Float: playerX, Float: playerY, Float: playerZ, Float: oblastX, Float: oblastY, Float: oblastZ, radius)
  44. {
  45. if (floatsqroot(floatpower(floatabs(floatsub(oblastX, playerX)), 2)+floatpower(floatabs(floatsub(oblastY, playerY)), 2)+floatpower(floatabs(floatsub(oblastZ, playerZ)), 2)) < radius) return true;
  46. return false;
  47. }
  48.  
  49. public OnFilterScriptInit()
  50. {
  51. print("\n--------------------------------------");
  52. print(" LS to LV Metro by NtCat v0.2 ");
  53. print("--------------------------------------\n");
  54.  
  55. Metro[FloorS] = CreateObject(974,1598.363,1052.322,-60.243,90.241,0.0,0.0); // Metro-FloorS-LV
  56. Metro[FloorMID] = CreateObject(974,1598.363,1057.890,-60.243,90.241,0.0,0.0); // Metro-FloorMID-LV
  57. Metro[FloorN] = CreateObject(974,1598.361,1063.373,-60.224,90.241,0.0,0.0); // Metro-FloorN-LV
  58. Metro[WallS] = CreateObject(974,1598.360,1049.746,-57.543,0.0,0.0,0.0); // Metro-WallS-LV
  59. Metro[WallN] = CreateObject(974,1598.350,1066.085,-57.515,0.0,0.0,0.0); // Metro-WallN-LV
  60. Metro[WallNE] = CreateObject(974,1601.697,1062.839,-57.543,0.0,0.0,90.000); // Metro-WallNE-LV
  61. Metro[WallSE] = CreateObject(974,1601.705,1053.088,-57.559,0.0,0.0,90.000); // Metro-WallSE-LV
  62. Metro[WallSW] = CreateObject(974,1595.026,1053.040,-57.556,0.0,0.0,270.000); // Metro-WallSW-LV
  63. Metro[WallNW] = CreateObject(974,1595.020,1062.747,-57.515,0.0,0.0,270.000); // Metro-WallNW-LV
  64. Metro[RoofS] = CreateObject(974,1598.355,1052.497,-54.795,90.241,0.0,0.0); // Metro-RoofS-LV
  65. Metro[RoofMID] = CreateObject(974,1598.350,1057.898,-54.782,90.241,0.0,0.0); // Metro-RoofMID-LV
  66. Metro[RoofN] = CreateObject(974,1598.346,1063.358,-54.787,90.241,0.0,0.0); // Metro-RoofN-LV
  67. CreateObject(3997,1592.113,1129.908,-60.271,0.0,0.0,-90.000); // LV-Station-Floor
  68. CreateObject(3458,1604.516,1070.038,-58.749,0.0,0.0,90.000); // object (1)
  69. CreateObject(3458,1592.357,1069.932,-58.774,0.0,0.0,270.000); // object (3)
  70. CreateObject(10832,1615.292,1159.527,15.019,0.0,0.0,-90.000); // object (16)
  71. CreateObject(10832,1615.334,1159.506,-58.531,0.0,0.0,90.000); // object (17)
  72. CreateObject(3997,1580.929,-1076.063,-60.311,0.0,0.0,-90.000); // object (23)
  73. CreateObject(10832,1615.675,-1043.398,-58.552,0.0,0.0,-360.000); // object (35)
  74. CreateObject(10832,1615.654,-1043.380,24.663,0.0,0.0,-720.000); // object (36)
  75.  
  76. LVElevPickup[UP] = CreatePickup(1318, 23, 1614.143, 1164.305, 14.367); // LV-Elev-Up-Pickup
  77. LVElevPickup[DOWN] = CreatePickup(1318, 23, 1616.587, 1154.803, -59.248); // LV-Elev-Down-Pickup
  78. LSElevPickup[UP] = CreatePickup(1318, 23, 1611.136, -1044.631, 24.080); // LS-Elev-Up-Pickup
  79. LSElevPickup[DOWN] = CreatePickup(1318, 23, 1610.748,-1044.592,-59.013); // LS-Elev-Down-Pickup
  80.  
  81. SetTimer("MetroDepart",600000,1);
  82. MetroPos = LV;
  83. return 1;
  84. }
  85.  
  86. public OnPlayerPickUpPickup(playerid, pickupid)
  87. {
  88. if(IsPlayerConnected(playerid))
  89. {
  90. if(pickupid == LVElevPickup[UP]) SetPlayerPos(playerid, 1616.606, 1153.107, -59.306);
  91. else if(pickupid == LVElevPickup[DOWN]) SetPlayerPos(playerid, 1614.222, 1166.552, 14.633);
  92. else if(pickupid == LSElevPickup[UP]) SetPlayerPos(playerid,1609.054,-1044.561,-58.697);
  93. else if(pickupid == LSElevPickup[DOWN]) SetPlayerPos(playerid,1609.459,-1044.604,24.371);
  94. }
  95. return 1;
  96. }
  97.  
  98. public OnPlayerSpawn(playerid)
  99. {
  100. GivePlayerMoney(playerid,10000);
  101. return 1;
  102. }
  103.  
  104. public MetroDepart()
  105. {
  106. if(MetroPos == LV)
  107. {
  108. MoveObject(Metro[FloorS],1598.367,-1011.050,-60.258,10);
  109. MoveObject(Metro[FloorMID],1598.359,-1005.546,-60.231,10);
  110. MoveObject(Metro[FloorN],1598.367,-1000.058,-60.243,10);
  111. MoveObject(Metro[WallS],1598.357,-1013.808,-57.514,10);
  112. MoveObject(Metro[WallN],1598.418,-997.317,-57.498,10);
  113. MoveObject(Metro[WallNE],1601.678,-1000.632,-57.509,10);
  114. MoveObject(Metro[WallSE],1601.698,-1010.498,-57.509,10);
  115. MoveObject(Metro[WallSW],1595.014,-1010.471,-57.504,10);
  116. MoveObject(Metro[WallNW],1595.079,-1000.607,-57.538,10);
  117. MoveObject(Metro[RoofS],1598.349,-1011.032,-54.769,10);
  118. MoveObject(Metro[RoofMID],1598.341,-1005.539,-54.754,10);
  119. MoveObject(Metro[RoofN],1598.350,-1000.048,-54.733,10);
  120. }
  121. else
  122. {
  123. MoveObject(Metro[FloorS],1598.363,1052.322,-60.243,10);
  124. MoveObject(Metro[FloorMID],1598.363,1057.890,-60.243,10);
  125. MoveObject(Metro[FloorN],1598.361,1063.373,-60.224,10);
  126. MoveObject(Metro[WallS],1598.360,1049.746,-57.543,10);
  127. MoveObject(Metro[WallN],1598.350,1066.085,-57.515,10);
  128. MoveObject(Metro[WallNE],1601.697,1062.839,-57.543,10);
  129. MoveObject(Metro[WallSE],1601.705,1053.088,-57.559,10);
  130. MoveObject(Metro[WallSW],1595.026,1053.040,-57.556,10);
  131. MoveObject(Metro[WallNW],1595.020,1062.747,-57.515,10);
  132. MoveObject(Metro[RoofS],1598.355,1052.497,-54.795,10);
  133. MoveObject(Metro[RoofMID],1598.350,1057.898,-54.782,10);
  134. MoveObject(Metro[RoofN],1598.346,1063.358,-54.787,10);
  135. }
  136. MetroPos = Moving;
  137. MetroUpdateTime = SetTimer("MetroUpdate",500,1);
  138. }
  139.  
  140. public MetroUpdate()
  141. {
  142. for(new i = 0; i < MAX_PLAYERS; i++)
  143. {
  144. if(IsPlayerConnected(i))
  145. {
  146. if(InMetro[i])
  147. {
  148. TogglePlayerControllable(i,0);
  149. new floor;
  150. new floorpart = random(3);
  151. switch(floorpart)
  152. {
  153. case 0: floor = Metro[FloorS];
  154. case 1: floor = Metro[FloorMID];
  155. case 2: floor = Metro[FloorN];
  156. }
  157. new Float:X,Float:Y,Float:Z;
  158. GetObjectPos(floor,X,Y,Z);
  159. SetObjectPos(i,X,Y,Z+0.3);
  160. }
  161. }
  162. }
  163. return 1;
  164. }
  165.  
  166.  
  167. public OnPlayerConnect(playerid)
  168. {
  169. Ticket[playerid] = 0;
  170. InMetro[playerid] = false;
  171. return 1;
  172. }
  173.  
  174. public OnObjectMoved(objectid)
  175. {
  176. if(objectid == Metro[FloorMID])
  177. {
  178. new Float:X,Float:Y,Float:Z;
  179. GetObjectPos(Metro[FloorMID],X,Y,Z);
  180. if(Y < 0)
  181. {
  182. MetroPos = LS;
  183. SendClientMessageToAll(0xFF0000FF, "The train has arrived to station Los Santos.");
  184. }
  185. else
  186. {
  187. MetroPos = LV;
  188. SendClientMessageToAll(0xFF0000FF, "The train has arrived to station Las Vegas.");
  189. }
  190. for(new i = 0; i < MAX_PLAYERS; i++) InMetro[i] = false;
  191. KillTimer(MetroUpdateTime);
  192. }
  193. return 1;
  194. }
  195.  
  196. public OnPlayerCommandText(playerid, cmdtext[])
  197. {
  198. if(strcmp("/buyticket", cmdtext, true) == 0)
  199. {
  200. if(IsPlayerConnected(playerid))
  201. {
  202. if(GetPlayerMoney(playerid) < TICKET_COST) return SendClientMessage(playerid, 0xFFFFFFFF, "You do not have enough money! ($100)");
  203. else
  204. {
  205. Ticket[playerid]++;
  206. GivePlayerMoney(playerid,-100);
  207. SendClientMessage(playerid, 0xFFFFFFFF, "You have bought a ticket for metro for $100.");
  208. }
  209. }
  210. return 1;
  211. }
  212.  
  213. if(strcmp("/enter", cmdtext, true) == 0)
  214. {
  215. if(IsPlayerConnected(playerid))
  216. {
  217. if(Ticket[playerid] == 0) return SendClientMessage(playerid, 0xFFFFFFFF, "You do not have a valid ticket, use /buyticket");
  218. else
  219. {
  220. if(MetroPos == LV)
  221. {
  222. SetPlayerPos(playerid, 1598.363, 1057.890, -60.600);
  223. TogglePlayerControllable(playerid,0);
  224. InMetro[playerid] = true;
  225. }
  226. else if(MetroPos == LS)
  227. {
  228. SetPlayerPos(playerid, 1598.359,-1005.546,-60.600);
  229. TogglePlayerControllable(playerid,0);
  230. InMetro[playerid] = true;
  231. }
  232. }
  233. }
  234. return 1;
  235. }
  236. return 0;
  237. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement