Portal.txt 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. games = world.getGames();
  2. speed1 = event.addMoveData(loc.new(games, 1999,53, -997), loc.new(games, 2001,54,-995), 5, -1);
  3. speed2 = event.addMoveData(loc.new(games, 2016,64, -997), loc.new(games, 2018,65,-995), 5, -1);
  4. jump1 = event.addMoveData(loc.new(games, 1999,53, -995), loc.new(games, 2001,54,-990), 5, -1);
  5. jump2 = event.addMoveData(loc.new(games, 2011,60, -1001), loc.new(games, 2013,61,-999), 5, -1);
  6. jump3 = event.addMoveData(loc.new(games, 2014,59, -984), loc.new(games, 2016,60,-982), 5, -1);
  7. Portal1 = event.addMoveData(loc.new(games, 2005,59, -983), loc.new(games, 2006,61, -982), 5, -1);
  8. Portal2 = event.addMoveData(loc.new(games, 2007,60,-1001), loc.new(games, 2008,61,-1000), 5, -1);
  9. Portal3 = event.addMoveData(loc.new(games, 2017,62, -989), loc.new(games, 2018,63, -988), 5, -1);
  10. Portal4 = event.addMoveData(loc.new(games, 1999,65, -995), loc.new(games, 2000,67, -994), 5, -1);
  11. Portal5 = event.addMoveData(loc.new(games, 2009,53,-1001), loc.new(games, 2010,55,-1000), 5, -1);
  12. Portal6 = event.addMoveData(loc.new(games, 2017,53, -993), loc.new(games, 2018,55, -992), 5, -1);
  13. end = event.addMoveData(loc.new(games, 2010, 65, -990), loc.new(games, 2009, 67, -992), 5, -1);
  14. portals = map.new();
  15. map.add(portals, Portal1, portal.create(loc.new(games, 2007.5,60,-1000.5), loc.new(games, 2005.5,59, -982.5), "east", "east"));
  16. map.add(portals, Portal2, portal.create(loc.new(games, 2005.5,59, -982.5), loc.new(games, 2007.5,60,-1000.5), "east", "east"));
  17. map.add(portals, Portal3, portal.create(loc.new(games, 1999.5,65, -994.5), loc.new(games, 2017.5,62, -988.5), "south", "north"));
  18. map.add(portals, Portal4, portal.create(loc.new(games, 2017.5,62, -988.5), loc.new(games, 1999.5,65, -994.5), "south", "north"));
  19. map.add(portals, Portal5, portal.create(loc.new(games, 2017.5,53, -992.5), loc.new(games, 2009.5,53,-1000.5), "east", "south"));
  20. map.add(portals, Portal6, portal.create(loc.new(games, 2009.5,53,-1000.5), loc.new(games, 2017.5,53, -992.5), "south", "east"));
  21. id_effects = map.new();
  22. map.add(id_effects, speed1, "speed_gel");
  23. map.add(id_effects, speed2, "speed_gel");
  24. map.add(id_effects, jump1, "jump_gel");
  25. map.add(id_effects, jump2, "jump_gel");
  26. map.add(id_effects, jump3, "jump_gel");
  27. map.add(id_effects, Portal1, "portal");
  28. map.add(id_effects, Portal2, "portal");
  29. map.add(id_effects, Portal3, "portal");
  30. map.add(id_effects, Portal4, "portal");
  31. map.add(id_effects, Portal5, "portal");
  32. map.add(id_effects, Portal6, "portal");
  33. map.add(id_effects, end, "end");
  34. //----------------------------------------------------
  35. sign.started(gamesignloc);
  36. event.load("player_move");
  37. event.load("entity_damage");
  38. event.load("player_move");
  39. event.load("player_quit");
  40. event.load("player_giveup");
  41. event.load("minigame_join");
  42. event.load("block_break");
  43. gamename = "§aPortal";
  44. maxplayers = 1;
  45. //----------------------------------------------------
  46. @wait
  47. wait();
  48. if(event == "entity_damage") {
  49. if(!isPlayer(entity)) {
  50. goto("wait");
  51. }
  52. player = entity;
  53. }
  54. if(!player.hasMinigameId(player, script_id)) {
  55. goto("wait");
  56. }
  57. if(event == "player_move"){
  58. move_type = map.getOrDefault(id_effects, id, "none");
  59. if(move_type == "speed_gel"){
  60. gel.speed(player);
  61. }
  62. elseif(move_type == "jump_gel"){
  63. gel.jump(player);
  64. }
  65. elseif(move_type == "portal"){
  66. portal.enter(player, id);
  67. }
  68. elsif(move_type == "end"){
  69. game_stop("You did it!");
  70. }
  71. }
  72. if(event == "block_break"){
  73. cancel = true;
  74. goto("wait");
  75. }
  76. if(event == "entity_damage") {
  77. cancel = true;
  78. goto("wait");
  79. }
  80. if(event == "player_quit"){
  81. game_stop(null);
  82. }
  83. if(event == "player_giveup"){
  84. game_stop("You have left the game");
  85. }
  86. goto("wait");
  87. //----------------------------------------------------
  88. function gel.speed(player){
  89. living.addEffect(player,"SPEED",5,3,true);
  90. }
  91. function gel.jump(player){
  92. if(!player.isSneaking(player)){
  93. motion = entity.getMotion(player);
  94. look = entity.getLook(player);
  95. x = motion[0]+look[0]/3;
  96. y = 1.01;
  97. z = motion[2]+look[2]/3;
  98. entity.setMotion(player, x, y, z);
  99. }
  100. }
  101. function portal.create(to_loc, mid_loc, Direction_in, Direction_out){
  102. array = array.new(4);
  103. array[0] = Direction_in;//east // south
  104. array[1] = Direction_out;//east -> +X, west -> -X, south -> +Z, north -> -Z
  105. array[2] = to_loc;
  106. array[3] = mid_loc;
  107. return array;
  108. }
  109. function portal.enter(player, id){
  110. array = map.get($portals, id);
  111. Direction_in = array[0];
  112. Direction_out = array[1];
  113. to_loc = array[2];
  114. mid_loc = array[3];
  115. player_loc = entity.getLocation(player);
  116. player_yaw = loc.getYaw(player_loc);
  117. if(Direction_in == "east"){
  118. player_X = loc.getX(player_loc);
  119. mid_X = loc.getX(mid_loc);
  120. dif = mid_X - player_X;
  121. rel_yaw = player_yaw+90;
  122. }
  123. elseif(Direction_in == "south"){
  124. player_Z = loc.getZ(player_loc);
  125. mid_Z = loc.getZ(mid_loc);
  126. dif = mid_Z - player_Z;
  127. rel_yaw = player_yaw;
  128. }
  129. if(Direction_out == "east"){
  130. tp_loc = loc.mod(to_loc, 2*dif, 0, 0);
  131. rel_yaw += -90;
  132. }
  133. elseif(Direction_out == "south"){
  134. tp_loc = loc.mod(to_loc, 0, 0, 2*dif);
  135. }
  136. elseif(Direction_out == "west"){
  137. tp_loc = loc.mod(to_loc, -2*dif, 0, 0);
  138. rel_yaw += 90;
  139. }
  140. elseif(Direction_out == "north"){
  141. tp_loc = loc.mod(to_loc, 0, 0, -2*dif);
  142. rel_yaw += 180;
  143. }
  144. if(rel_yaw > 180){
  145. rel_yaw -= 360;
  146. }elseif(rel_yaw <= -180){
  147. rel_yaw += 360;
  148. }
  149. loc.setYaw(tp_loc, rel_yaw);
  150. loc.setPitch(tp_loc, loc.getPitch(player_loc));
  151. entity.teleport(player, tp_loc);
  152. }