Advertisement
Abnormal202

Untitled

May 19th, 2017
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.91 KB | None | 0 0
  1. // ZombieKid164's buyable elevator
  2. #using scripts\zm\_zm_score;
  3. #using scripts\shared\flag_shared;
  4.  
  5. function init()
  6. {
  7.  
  8. //Things you can edit below \/
  9. level.elevator_cost = 10; // Change this to change the cost of the elevator. Leave it undefined to make it free.
  10. level.elevate_height = 250; //This is how far the elevator will travel up.
  11. level.elevator_transition_time = 5; //How long it will take for the elevator travel.
  12. level.elevator_cooldown_time = 30; // Cooldown time of the elevator.
  13. level.zk_debug = true; //Enable or disable this to show action text in game. (Ex: "Debug: Elevator Moving" will be shown on the screen)
  14. level.change_door_direction = false; //Change this to true if your doors slide backwards or forwards instead of side to side.
  15. //Things you can edit above /\
  16.  
  17. level.elevator_trigger = GetEnt( "elevator_trigger", "targetname" );
  18. level.elevator_trigger_top = GetEnt( "elevator_trigger_top", "targetname" );
  19. level.elevator_trigger_outside_bottom = GetEnt( "elevator_trigger_outside_bottom", "targetname");
  20. level.elevator_trigger_outside_top = GetEnt( "elevator_trigger_outside_top", "targetname");
  21.  
  22. level.elevator_parts = GetEntArray("elevator", "targetname" ); //defining the array. Everything with this KVP will be part of it.
  23.  
  24. level.elevator_top_door = GetEnt("top_door", "targetname" );
  25. level.elevator_bottom_door = GetEnt("bottom_door", "targetname" );
  26. level.elevator_called = false;
  27. main();
  28. }
  29.  
  30. function main()
  31. {
  32. level endon( "intermission" );
  33. wait_for_power();
  34. thread bottom_door_open();
  35. level.elevator_trigger_top SetHintString( "" );
  36.  
  37. while(1)
  38. {
  39. thread wait_for_buy_bottom();
  40. thread wait_for_call_top();
  41. thread zk_print("Waiting for Buy or Call");
  42. level waittill("Elevator_Used");
  43. level notify("elevator_moving");
  44. thread zk_print("Elevator Moving");
  45. thread clear_trigger_text();
  46.  
  47. thread bottom_door_close();
  48. wait(1);
  49. thread elevator_rise( level.elevate_height, level.elevator_transition_time );
  50. wait( level.elevator_transition_time );
  51. thread top_door_open();
  52. level.elevator_trigger_top SetHintString( "Elevator is cooling down." );
  53. level.elevator_trigger_outside_bottom SetHintString( "Elevator is cooling down." );
  54. wait( level.elevator_cooldown_time );
  55.  
  56. thread wait_for_buy_top();
  57. thread wait_for_call_bottom();
  58. thread zk_print("Waiting for Buy or Call");
  59. level waittill("Elevator_Used");
  60. level notify("elevator_moving");
  61. thread zk_print("Elevator Moving");
  62. thread clear_trigger_text();
  63.  
  64. level.elevator_trigger_top SetHintString( "" );
  65. thread top_door_close();
  66. wait(1);
  67. thread elevator_fall( level.elevate_height, level.elevator_transition_time );
  68. wait( level.elevator_transition_time );
  69. thread bottom_door_open();
  70. level.elevator_trigger SetHintString( "Elevator is cooling down." );
  71. level.elevator_trigger_outside_top SetHintString( "Elevator is cooling down." );
  72. wait( level.elevator_cooldown_time );
  73. }
  74. }
  75.  
  76. function elevator_rise( height, speed )
  77. {
  78. for(i=0;i<level.elevator_parts.size;i++) //using a For loop. These are kinda complicated but basically for each part of the array it will execute the following
  79. {
  80. level.elevator_parts[i] MoveZ(height, speed); //must put an [i] at the end of the ent to specify it is that part of the array.
  81. }
  82.  
  83. }
  84.  
  85. function elevator_fall( height, speed )
  86. {
  87. for(i=0;i<level.elevator_parts.size;i++)
  88. {
  89. level.elevator_parts[i] movez (height - (height * 2), speed);
  90. }
  91. }
  92.  
  93. function bottom_door_open()
  94. {
  95. if(!level.change_door_direction == true)
  96. {
  97. level.elevator_bottom_door movex (130, 1);
  98. }
  99. else
  100. {
  101. level.elevator_bottom_door movey (130, 1);
  102. }
  103. }
  104.  
  105. function bottom_door_close()
  106. {
  107. if(!level.change_door_direction == true)
  108. {
  109. level.elevator_bottom_door movex ((-130), 1);
  110. }
  111. else
  112. {
  113. level.elevator_bottom_door movey ((-130), 1);
  114. }
  115. }
  116.  
  117. function top_door_open()
  118. {
  119. if(!level.change_door_direction == true)
  120. {
  121. level.elevator_top_door movex (130, 1);
  122. }
  123. else
  124. {
  125. level.elevator_top_door movey (130, 1);
  126. }
  127. }
  128.  
  129. function top_door_close()
  130. {
  131. if(!level.change_door_direction == true)
  132. {
  133. level.elevator_top_door movex ((-130), 1);
  134. }
  135. else
  136. {
  137. level.elevator_top_door movey ((-130), 1);
  138. }
  139. }
  140.  
  141. function wait_for_power()
  142. {
  143. level.elevator_trigger_outside_bottom SetHintString( &"ZOMBIE_NEED_POWER" );
  144. level.elevator_trigger_outside_top SetHintString( &"ZOMBIE_NEED_POWER" );
  145. level flag::wait_till( "power_on" );
  146. level.elevator_trigger_outside_bottom SetHintString( "" );
  147. level.elevator_trigger_outside_top SetHintString( "" );
  148. thread zk_print("Starting Elevator");
  149. }
  150.  
  151. function wait_for_buy_bottom()
  152. {
  153. level endon("elevator_moving");
  154. if( isDefined(level.elevator_cost) )
  155. {
  156. while(1)
  157. {
  158. level.elevator_trigger SetHintString( "Hold ^3&&1^7 to Use Elevator [Cost: "+level.elevator_cost+"]" );
  159. level.elevator_trigger waittill( "trigger", player );
  160. if( isDefined(level.elevator_cost) && player.score >= level.elevator_cost )
  161. {
  162. player zm_score::minus_to_player_score( level.elevator_cost );
  163. level notify("Elevator_Used");
  164. thread zk_print("Elevator Bought");
  165. break;
  166. }
  167. else if( isDefined( level.elevator_cost ) && player.score < level.elevator_cost )
  168. {
  169. level.elevator_trigger SetHintString( "You do not have enough money." );
  170. wait(4);
  171. level.elevator_trigger SetHintString( "Hold ^3&&1^7 to Use Elevator [Cost: "+level.elevator_cost+"]" );
  172. continue;
  173. }
  174. }
  175. }
  176. else
  177. {
  178. level.elevator_trigger SetHintString( "Hold ^3&&1^7 to Use Elevator" );
  179. level.elevator_trigger waittill( "trigger", player );
  180. level.elevator_trigger SetHintString( "" );
  181. level notify("Elevator_Used");
  182. thread zk_print("Elevator Bought [Free]");
  183. }
  184. }
  185.  
  186. function wait_for_buy_top()
  187. {
  188. level endon("elevator_moving");
  189. if( isDefined(level.elevator_cost) )
  190. {
  191. while(1)
  192. {
  193. level.elevator_trigger_top SetHintString( "Hold ^3&&1^7 to Use Elevator [Cost: "+level.elevator_cost+"]" );
  194. level.elevator_trigger_top waittill( "trigger", player );
  195. if( isDefined(level.elevator_cost) && player.score >= level.elevator_cost )
  196. {
  197. player zm_score::minus_to_player_score( level.elevator_cost );
  198. level notify("Elevator_Used");
  199. thread zk_print("Elevator Bought");
  200. break;
  201. }
  202. else if( isDefined( level.elevator_cost ) && player.score < level.elevator_cost )
  203. {
  204. level.elevator_trigger_top SetHintString( "You do not have enough money." );
  205. wait(4);
  206. level.elevator_trigger_top SetHintString( "Hold ^3&&1^7 to Use Elevator [Cost: "+level.elevator_cost+"]" );
  207. continue;
  208. }
  209. }
  210. }
  211. else
  212. {
  213. level.elevator_trigger SetHintString( "Hold ^3&&1^7 to Use Elevator" );
  214. level.elevator_trigger waittill( "trigger", player );
  215. level.elevator_trigger SetHintString( "" );
  216. level notify("Elevator_Used");
  217. thread zk_print("Elevator Bought [Free]");
  218. }
  219. }
  220.  
  221. function wait_for_call_bottom()
  222. {
  223. self endon("elevator_moving");
  224. level.elevator_trigger_outside_bottom SetHintString( "Hold ^3&&1^7 to Call Elevator" );
  225. level.elevator_trigger_outside_bottom waittill( "trigger", player );
  226. level.elevator_trigger_outside_bottom SetHintString( "" );
  227. level notify("Elevator_Used");
  228. thread zk_print("Elevator Called");
  229. }
  230.  
  231. function wait_for_call_top()
  232. {
  233. self endon("elevator_moving");
  234. level.elevator_trigger_outside_top SetHintString( "Hold ^3&&1^7 to Call Elevator" );
  235. level.elevator_trigger_outside_top waittill( "trigger", player );
  236. level.elevator_trigger_outside_top SetHintString( "" );
  237. level notify("Elevator_Used");
  238. thread zk_print("Elevator Called");
  239. }
  240.  
  241. function zk_print( string )
  242. {
  243. if( level.zk_debug == true )
  244. {
  245. iprintlnbold( "Debug: "+string );
  246. }
  247. }
  248.  
  249. function clear_trigger_text()
  250. {
  251. level.elevator_trigger_outside_top SetHintString( "" );
  252. level.elevator_trigger_outside_bottom SetHintString( "" );
  253. level.elevator_trigger SetHintString( "" );
  254. level.elevator_trigger_top SetHintString( "" );
  255. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement