ragemode.txt 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641
  1. //TODO
  2. /*
  3. Axt trift Spieler. Axt despawnt. Spieler wird nicht gekilllt.
  4. */
  5. event.load("snuvi_click");
  6. event.load("inv_close");
  7. event.load("player_drop");
  8. event.load("projectile_hit");
  9. rankingtable = "rmranks";
  10. game_short = "rm";
  11. minigame.setSpecificLobbyHandling(true);
  12. minigame.setPlayerResetInCore(false);
  13. axes_list = list.new();
  14. gamename = "§cRageMode";
  15. no_emerald = false;
  16. minigame.initStart();
  17. times = map.new();
  18. time = time.getMillis();
  19. for(i = 0; i < list.getSize(spawns); i++) {
  20. map.add(times, list.getIndex(spawns, i), time);
  21. }
  22. bow = read.item("{id:\"minecraft:bow\",Count:1b,tag:{Enchantments:[{lvl:1s,id:\"minecraft:infinity\"}],display:{Name:'{\"text\":\"§eRageBow\"}'}}}");
  23. sword = item.create("iron_sword", 1, "§cRageKnife", null);
  24. axe = item.create("iron_axe", 1, "§bCombatAxe", null);
  25. chest = item.create("chest", 1, "§7Inventory organisation", null);
  26. shop_chest = item.create("chest", 1, "§7Shop", null);
  27. arrow = item.new(material.get("arrow"));
  28. speed = read.item("{id:\"minecraft:potion\",Count:1b,tag:{Potion:\"minecraft:swiftness\"}}");
  29. item.addFlag(speed, "HIDE_POTION_EFFECTS");
  30. item.setName(speed, text.new("§eSpeed"));
  31. lore_list = list.new();
  32. list.add(lore_list, text.new("§7Doubles your speed"));
  33. list.add(lore_list, text.new("§rPrice: §a15 Emeralds"));
  34. item.setLore(speed, lore_list);
  35. lightning = item.new(material.get("blaze_rod"));
  36. item.setName(lightning, text.new("§eThors Hand"));
  37. lore_list = list.new();
  38. list.add(lore_list, text.new("§7Kill your enimies with the help of Thor."));
  39. list.add(lore_list, text.new("§rPrice: §a30 Emeralds"));
  40. item.setLore(lightning, lore_list);
  41. glowing = item.new(material.get("glow_berries"));
  42. item.setName(glowing, text.new("§eGlowing"));
  43. lore_list = list.new();
  44. list.add(lore_list, text.new("§7Give your opponents a glowing effect for 10 seconds."));
  45. list.add(lore_list, text.new("§rPrice: §a4 Emeralds"));
  46. item.setLore(glowing, lore_list);
  47. shopmenu = inv.new("222000000", text.new("§8Shop"));
  48. inv.setItem(shopmenu, 0, speed);
  49. inv.setItem(shopmenu, 1, lightning);
  50. inv.setItem(shopmenu, 2, glowing);
  51. goto("simplelobby");
  52. @specificLobbyHandling
  53. if(event == "minigame_join") {
  54. resetplayer(player);
  55. player.setSaturation(player, 1000000);
  56. sb.add(player, 99, gamename);
  57. sb.add(player, 98, "§cTeams are forbidden");
  58. sb.add(player, 97, string.concat("§eMap: ", mapname));
  59. sb.add(player, 96, sb.getSpacer());
  60. return;
  61. }
  62. if(event == "player_drop") {
  63. cancel = true;
  64. return;
  65. }
  66. if(event == "inv_close") {
  67. counter = 0;
  68. for(i = 0; i < 9; i++) {
  69. if(item.isAir(inv.getItem(inv, i))) {
  70. counter++;
  71. }
  72. }
  73. if(counter == 5) {
  74. msg.prefix(player, gamename, "§eChanges saved.");
  75. } else {
  76. saveDefaultInventory(player);
  77. msg.prefix(player, gamename, "§eInvalid change. Set to default.");
  78. }
  79. return;
  80. }
  81. if(event == "block_click") {
  82. item = living.getHand(player);
  83. if(item == chest && action == "RIGHT_CLICK_AIR") {
  84. showRmInventory(player);
  85. }
  86. return;
  87. }
  88. return;
  89. @finalstart
  90. player_list = minigame.getPlayers(script_id);
  91. starttime = time.getMillis();
  92. kills = map.new();
  93. theoretickills = list.new();
  94. deaths = map.new();
  95. killstreak = map.new();
  96. maxkillstreak = map.new();
  97. messerkills = map.new();
  98. axekills = map.new();
  99. emeralds = map.new();
  100. lastposition = map.new();
  101. nemesis = map.new();
  102. sound_pling = sound.get("BLOCK_NOTE_BLOCK_PLING");
  103. wither_sound = sound.get("ENTITY_WITHER_SPAWN");
  104. sound_harp = sound.get("BLOCK_NOTE_BLOCK_HARP");
  105. ambient_sound_category = sound.getCategory("AMBIENT");
  106. p_amount = list.getSize(player_list);
  107. goal_points = p_amount * 5;
  108. if(goal_points > 25) {
  109. goal_points = 25;
  110. }
  111. if(p_amount == 2) {
  112. max_play_time = 10; //minutes
  113. } else {
  114. max_play_time = 15;
  115. }
  116. minigame.displayAll(99, gamename);
  117. minigame.displayAll(98, string.concat("§aGoal: §r", string.number(goal_points)));
  118. id = 97;
  119. for(i = 0; i < p_amount; i++) {
  120. for_p = player.get(list.getIndex(player_list, i));
  121. for_pname = player.getName(for_p);
  122. msg.prefix(for_p, gamename, "The game has started.");
  123. minigame.displayAll(id, string.concat("0 §8", for_pname));
  124. sb.add(for_p, id, string.concat("0 §e", for_pname));
  125. id--;
  126. @position
  127. position = list.getIndex(spawns, math.random(0, list.getSize(spawns) - 1));
  128. if(time.getMillis() - map.get(times, position) < 5000) {
  129. goto("position");
  130. }
  131. if(map.get(lastposition, for_pname) == position) {
  132. goto("position");
  133. }
  134. map.add(lastposition, for_pname, position);
  135. entity.teleport(for_p, position);
  136. map.add(times, position, time.getMillis());
  137. sound.spawnForPlayer(for_p, sound_harp, ambient_sound_category);
  138. player.setGamemode(for_p, "SURVIVAL");
  139. player.setFly(for_p, false);
  140. player.clearInventory(for_p);
  141. giveRmInventory(for_p);
  142. inv.close(for_p);
  143. map.add(kills, for_pname, 0);
  144. array = array.new(2);
  145. array[0] = for_pname;
  146. array[1] = 0;
  147. list.add(theoretickills, array);
  148. map.add(deaths, for_pname, 0);
  149. map.add(killstreak, for_pname, 0);
  150. map.add(maxkillstreak, for_pname, 0);
  151. map.add(messerkills, for_pname, 0);
  152. map.add(axekills, for_pname, 0);
  153. map.add(emeralds, for_pname, 0);
  154. }
  155. minigame.displayAll(id, "Emeralds: §a0");
  156. ticks_to_end = max_play_time * 1200;
  157. ticks_to_last_min = ticks_to_end - 1200;
  158. sgoto(ticks_to_last_min, "lastminute");
  159. sgoto(ticks_to_end, "endgame");
  160. minigame.clearItems(middleloc, radius);
  161. @wait
  162. wait();
  163. if(event == "entity_damage") {
  164. if(!isPlayer(entity)) {
  165. goto("wait");
  166. }
  167. player = entity;
  168. } elseif(event == "projectile_hit") {
  169. if(!isPlayer(shooter)) {
  170. goto("wait");
  171. }
  172. player = shooter;
  173. }
  174. if(player.hasMinigameId(player, script_id)) {
  175. player_name = player.getName(player);
  176. ignoreGoto(event);
  177. }
  178. goto("wait");
  179. @projectile_hit
  180. if(block_hit != null) {
  181. if(entity.getType(projectile) == "snowball") {
  182. ent = item.drop(axe, entity.getLocation(projectile));
  183. list.add(axes_list, ent);
  184. sgoto(600, "removeAxes");
  185. }
  186. goto("wait");
  187. }
  188. if(entity_hit != null) {
  189. attacker = shooter;
  190. entity.remove(projectile);
  191. attacker_name = player.getName(attacker);
  192. attacker_uuid = player.getUuid(attacker);
  193. if(!list.contains(player_list, attacker_uuid)) {
  194. msg.dev("Ragemode: Illegaler Spieler");
  195. goto("wait");
  196. }
  197. defender = entity_hit;
  198. defender_uuid = player.getUuid(defender);
  199. if(!list.contains(player_list, defender_uuid)) {
  200. msg.dev("Ragemode: Kein PlayerEntity oder illegaler Spieler");
  201. goto("wait");
  202. }
  203. defender_name = player.getName(defender);
  204. if(defender_uuid == attacker_uuid) {
  205. goto("wait");
  206. }
  207. if(entity.getType(projectile) == "snowball") {
  208. goto("axeCore");
  209. }
  210. goto("wait");
  211. }
  212. goto("wait");
  213. @block_click
  214. player_item = living.getHand(player);
  215. if(player_item == axe) {
  216. ent = living.shootProjectile(player, "org.bukkit.entity.Snowball");
  217. item.entity.set(ent, axe);
  218. player.removeItem(player, living.getHand(player));
  219. goto("wait");
  220. }
  221. if(player_item == shop_chest) {
  222. cancel = true;
  223. inv.open(shopmenu, player);
  224. }
  225. goto("wait");
  226. @entity_damage
  227. cancel = true;
  228. defender = player;
  229. defender_name = player.getName(defender);
  230. defender_uuid = player.getUuid(defender);
  231. if(!list.contains(player_list, defender_uuid)) {
  232. msg.prefix(player, gamename, "§eIllegal player in game.");
  233. goto("wait");
  234. }
  235. attacker = player.getFromDamageSource(damage_source);
  236. if(attacker == null) {
  237. goto("wait");
  238. }
  239. attacker_uuid = player.getUuid(attacker);
  240. if(!player.hasMinigameId(attacker, script_id)) {
  241. goto("wait");
  242. }
  243. attacker_name = player.getName(attacker);
  244. if(defender_uuid == attacker_uuid) {
  245. goto("wait");
  246. }
  247. if(!list.contains(player_list, attacker_uuid)) {
  248. msg.prefix(player, gamename, "§eIllegal player in game.");
  249. goto("wait");
  250. }
  251. attacker_item = living.getHand(attacker);
  252. if(attacker_item == axe) {
  253. player.removeItem(attacker, attacker_item);
  254. goto("axeCore");
  255. } elseif(attacker_item == iron_sword) {
  256. map.add(messerkills, attacker_name, map.get(messerkills, attacker_name) + 1);
  257. } elseif(item.isAir(attacker_item)) {
  258. goto("wait");
  259. }
  260. msg.prefix(attacker, gamename, string.concat("§eYou killed §8", defender_name, "."));
  261. msg.prefix(defender, gamename, string.concat("§8", attacker_name, " §ekilled you."));
  262. sound.spawnForPlayer(attacker, sound_pling, ambient_sound_category);
  263. gosub("core");
  264. goto("wait");
  265. @snuvi_click
  266. cancel = true;
  267. if(item != null) {
  268. emeraldid = 97 - list.getSize(player_list);
  269. if(inv_slot == 0) {
  270. if(map.get(emeralds, player_name) >= 15) {
  271. living.addEffect(player, "SPEED", 1200, 4);
  272. map.add(emeralds, player_name, map.get(emeralds, player_name) - 15);
  273. sb.add(player, emeraldid, "Emeralds: §a", string.number(map.get(emeralds, player_name)));
  274. minigame.speakAll(gamename, string.concat("§8", player_name, "§e used Speed."));
  275. inv.close(player);
  276. }
  277. goto("wait");
  278. }
  279. if(inv_slot == 1) {
  280. if(map.get(emeralds, player_name) >= 30) {
  281. minigame.speakAll(gamename, string.concat("§8", player_name, "§e used Thors Hand."));
  282. inv.close(player);
  283. map.add(emeralds, player_name, map.get(emeralds, player_name) - 30);
  284. no_emerald = true;
  285. attacker = player;
  286. attacker_name = player_name;
  287. sb.add(player, emeraldid, "Emeralds: §a", string.number(map.get(emeralds, player_name)));
  288. for(i = 0; i < list.getSize(player_list); i++) {
  289. defender = player.get(list.getIndex(player_list, i));
  290. defender_name = player.getName(defender);
  291. if(defender != attacker) {
  292. gosub("core");
  293. msg.prefix(attacker, gamename, string.concat("§eYou killed §8", defender_name, "."));
  294. msg.prefix(defender, gamename, string.concat("§8", attacker_name, " §ekilled you."));
  295. }
  296. }
  297. no_emerald = false;
  298. }
  299. goto("wait");
  300. }
  301. if(inv_slot == 2) {
  302. if(map.get(emeralds, player_name) >= 4) {
  303. for(i = 0; i < list.getSize(player_list); i++) {
  304. puuid = list.getIndex(player_list, i);
  305. if(puuid == player.getUuid(player)) {
  306. continue;
  307. }
  308. p = player.get(puuid);
  309. living.addEffect(p, "GLOWING", 200, 0);
  310. }
  311. map.add(emeralds, player_name, map.get(emeralds, player_name) - 4);
  312. sb.add(player, emeraldid, "Emeralds: §a", string.number(map.get(emeralds, player_name)));
  313. minigame.speakAll(gamename, string.concat("§8", player_name, "§e used Glowing."));
  314. inv.close(player);
  315. }
  316. goto("wait");
  317. }
  318. }
  319. goto("wait");
  320. @block_place
  321. @block_break
  322. cancel = true;
  323. goto("wait");
  324. @player_drop
  325. cancel = true;
  326. goto("wait");
  327. @removeAxes
  328. temp = list.getIndex(axes_list, 0);
  329. entity.remove(temp);
  330. list.removeIndex(axes_list, 0);
  331. goto("wait");
  332. @axeCore
  333. action = "axeHit";
  334. sound.spawnForPlayer(defender, wither_sound, ambient_sound_category);
  335. msg.prefix(attacker, gamename, string.concat("§eYou killed §8", defender_name, " §ewith your axe."));
  336. msg.prefix(defender, gamename, string.concat("§8", attacker_name, " §ekilled you with his axe."));
  337. msg.prefix(defender, gamename, "Your Kills: §c-25§r%");
  338. map.add(axekills, attacker_name, map.get(axekills, attacker_name) + 1);
  339. setTheoreticKills(defender_name, math.rounddown(getTheoreticKills(defender_name) * 0.75));
  340. gosub("core");
  341. goto("wait");
  342. @core
  343. emeraldid = 97 - list.getSize(player_list);
  344. if(!no_emerald) {
  345. msg.prefix(attacker, gamename, "§e+§r1 §aEmerald");
  346. map.add(emeralds, attacker_name, map.get(emeralds, attacker_name) + 1);
  347. sb.add(attacker, emeraldid, "Emeralds: §a", string.number(map.get(emeralds, attacker_name)));
  348. }
  349. if(defender_name == map.get(nemesis, attacker_name)) {
  350. msg.prefix(attacker, gamename, "§eYou killed your §cNemesis enemy.");
  351. msg.prefix(attacker, gamename, "§e+§r1 §aEmerald");
  352. map.add(emeralds, attacker_name, map.get(emeralds, attacker_name) + 1);
  353. sb.add(attacker, emeraldid, "Emeralds: §a", string.number(map.get(emeralds, attacker_name)));
  354. }
  355. sb.add(attacker, --emeraldid, sb.getSpacer());
  356. map.add(deaths, defender_name, map.get(deaths, defender_name) + 1);
  357. map.add(kills, attacker_name, map.get(kills, attacker_name) + 1);
  358. incTheoreticKills(attacker_name);
  359. player.clearInventory(defender);
  360. player.setSaturation(defender, 1000000);
  361. player.setSaturation(attacker, 1000000);
  362. map.add(nemesis, defender_name, attacker_name);
  363. map.add(nemesis, attacker_name, null);
  364. map.add(killstreak, defender_name, 0);
  365. map.add(killstreak, attacker_name, map.get(killstreak, attacker_name) + 1);
  366. if(map.get(killstreak, attacker_name) > map.get(maxkillstreak, attacker_name)) {
  367. map.add(maxkillstreak, attacker_name, map.get(maxkillstreak, attacker_name) + 1);
  368. }
  369. giveRmInventory(defender);
  370. sortTheoreticKills();
  371. printTheoreticKills();
  372. @newposition
  373. position = list.getIndex(spawns, math.random(0, list.getSize(spawns) - 1));
  374. if(time.getMillis() - map.get(times, position) < 5000) {
  375. goto("newposition");
  376. }
  377. if(map.get(lastposition, defender_name) == position) {
  378. goto("newposition");
  379. }
  380. map.add(lastposition, defender_name, position);
  381. entity.teleport(defender, position);
  382. if(action == "axeHit") {
  383. sound.spawnForPlayer(defender, wither_sound, ambient_sound_category);
  384. }
  385. action = null;
  386. map.add(times, position, time.getMillis());
  387. if(getTheoreticKills(attacker_name) >= goal_points) {
  388. winner_name = attacker_name;
  389. goto("wincore");
  390. }
  391. return;
  392. @endgame
  393. sortTheoreticKills();
  394. array = list.getIndex(theoretickills, 0);
  395. winner_name = array[0];
  396. goto("wincore");
  397. @player_quit
  398. @player_giveup
  399. removeFromTheoreticKills(player_name);
  400. script = script.getFromId(script_id);
  401. minigame.kickPlayer(script, player);
  402. player_id = player.getId(player);
  403. minigame.setPlayed(player_id, game_short, minigame.getPlayed(player_id, game_short) + 1);
  404. sb.clearGame(player);
  405. sortTheoreticKills();
  406. printTheoreticKills();
  407. if(list.getSize(player_list) <= 1) {
  408. winner_name = player.getName(player.get(list.getIndex(player_list, 0)));
  409. goto("wincore");
  410. }
  411. goto("wait");
  412. @lastminute
  413. minigame.speakAll(gamename, "60 seconds left.");
  414. goto("wait");
  415. @wincore
  416. endtime = time.getMillis();
  417. time = math.round((endtime - starttime) / 1000);
  418. for(i = 0; i < list.getSize(player_list); i++) {
  419. puuid = list.getIndex(player_list, i);
  420. p = player.get(puuid);
  421. pname = player.getName(p);
  422. p_id = player.getId(p);
  423. last_record = ranking.getPoints(rankingtable, p_id);
  424. record = last_record + map.get(kills, pname);
  425. playedgames = minigame.getPlayed(p_id, game_short) + 1;
  426. minigame.setPlayed(p_id, game_short, playedgames);
  427. ranking.setPoints(rankingtable, p_id, record);
  428. wongames = minigame.getWon(p, "rm");
  429. if(pname == winner_name) {
  430. winningtext = "Yes";
  431. wongames++;
  432. minigame.setWon(p, "rm", wongames);
  433. money.addBoost(p, 128);
  434. } else {
  435. winningtext = "No";
  436. money.addBoost(p, 32);
  437. }
  438. msg.prefix(p, gamename, string.concat("§8", winner_name, " §ehas won §cRageMode."));
  439. minigame.statsHeader(p, gamename, "§e");
  440. minigame.statsLine(p, "§e", "Time", string.concat(string.number(math.round(time / 60)), " Minuten ", string.number(time % 60), " Sekunden"));
  441. minigame.statsLine(p, "§e", "Kills", string.number(map.get(kills, pname)));
  442. minigame.statsLine(p, "§e", "Killstreak", string.number(map.get(maxkillstreak, pname)));
  443. minigame.statsLine(p, "§e", "Sword-Kills", string.number(map.get(messerkills, pname)));
  444. minigame.statsLine(p, "§e", "Axe-Kills", string.number(map.get(axekills, pname)));
  445. minigame.statsLine(p, "§e", "Deaths", string.number(map.get(deaths, pname)));
  446. minigame.statsLine(p, "§e", "Won games", string.number(wongames));
  447. minigame.statsLine(p, "§e", "Played games", string.number(playedgames));
  448. if(playedgames != 0) {
  449. minigame.statsLine(p, "§e", "Win ratio", string.concat(string.number(math.roundComma((wongames / playedgames) * 100, 2)), "%"));
  450. }
  451. minigame.statsLine(p, "§e", "Won", winningtext);
  452. }
  453. minigame.clearItems(middleloc, radius);
  454. script = script.getFromId(script_id);
  455. minigame.kickAllPlayers(script);
  456. minigame.term(script, gamesignloc);
  457. term();
  458. function setTheoreticKills(player_name, points) {
  459. for(i = 0; i < list.getSize($theoretickills); i++) {
  460. array = list.getIndex($theoretickills, i);
  461. if(array[0] == player_name) {
  462. array[1] = points;
  463. break;
  464. }
  465. }
  466. }
  467. function getTheoreticKills(player_name) {
  468. for(i = 0; i < list.getSize($theoretickills); i++) {
  469. array = list.getIndex($theoretickills, i);
  470. if(array[0] == player_name) {
  471. points = array[1];
  472. break;
  473. }
  474. }
  475. return points;
  476. }
  477. function incTheoreticKills(player_name) {
  478. setTheoreticKills(player_name, getTheoreticKills(player_name) + 1);
  479. }
  480. function removeFromTheoreticKills(player_name) {
  481. for(i = 0; i < list.getSize($theoretickills); i++) {
  482. array = list.getIndex($theoretickills, i);
  483. if(array[0] == player_name) {
  484. list.removeIndex($theoretickills, i);
  485. break;
  486. }
  487. }
  488. }
  489. function getIndexFromPlayer(player_name) {
  490. for(i = 0; i < list.getSize($theoretickills); i++) {
  491. array = list.getIndex($theoretickills, i);
  492. if(array[0] == player_name) {
  493. return i;
  494. }
  495. }
  496. return null; //Nemesisgegner ist geleavt
  497. }
  498. function sortTheoreticKills() {
  499. size = list.getSize($theoretickills);
  500. swapped = true;
  501. while(swapped) {
  502. swapped = false;
  503. for(i = 0; i < size - 1; i++) {
  504. array = list.getIndex($theoretickills, i);
  505. array2 = list.getIndex($theoretickills, i + 1);
  506. zahl1 = array[1];
  507. zahl2 = array2[1];
  508. if(zahl1 < zahl2) {
  509. list.setIndex($theoretickills, i, array2);
  510. list.setIndex($theoretickills, i + 1, array);
  511. swapped = true;
  512. }
  513. }
  514. }
  515. }
  516. function printTheoreticKills() {
  517. id = 97;
  518. for(i = 0; i < list.getSize($theoretickills); i++) {
  519. array = list.getIndex($theoretickills, i);
  520. disp_pname = array[0];
  521. disp_p = read.player(disp_pname);
  522. points = string.number(array[1]);
  523. minigame.displayAll(id, string.concat(points, " §8", disp_pname));
  524. sb.add(disp_p, id, string.concat(points, " §e", disp_pname));
  525. id--;
  526. }
  527. for(i = 0; i < list.getSize($player_list); i++) {
  528. disp_p = player.get(list.getIndex($player_list, i));
  529. disp_pname = player.getName(disp_p);
  530. nemesis_name = map.get($nemesis, disp_pname);
  531. if(nemesis_name != null) {
  532. index = getIndexFromPlayer(nemesis_name);
  533. if(index != null) {
  534. sb.add(disp_p, 97 - index, string.concat(string.number(getTheoreticKills(nemesis_name)), " §c", nemesis_name));
  535. }
  536. }
  537. }
  538. }
  539. function giveRmInventory(player) {
  540. inv = getRmInventory(player);
  541. @tryagain
  542. counter = 0;
  543. player_inv = player.getInv(player);
  544. for(i = 0; i <= 8; i++) {
  545. item = inv.getItem(inv, i);
  546. if(item.isAir(item)) {
  547. counter++;
  548. }
  549. inv.setItem(player_inv, i, item);
  550. }
  551. if(counter != 5) {
  552. inv = saveDefaultInventory(player);
  553. msg.prefix(player, $gamename, "§eUnknown inventory. Used d efault inventory.");
  554. goto("tryagain");
  555. }
  556. inv.setItem(player_inv, 9, $arrow);
  557. }
  558. function showRmInventory(player) {
  559. rm_inv = getRmInventory(player);
  560. inv.open(rm_inv, player);
  561. }
  562. function getRmInventory(player) {
  563. map = getScriptVar("rmInventories");
  564. inv = map.get(map, player.getUuid(player));
  565. if(inv == null) {
  566. inv = saveDefaultInventory(player);
  567. }
  568. return inv;
  569. }
  570. function saveDefaultInventory(player) {
  571. rm_inv = inv.new("111111111", text.new("§8Inventory"));
  572. inv.setItem(rm_inv, 0, $bow);
  573. inv.setItem(rm_inv, 1, $sword);
  574. inv.setItem(rm_inv, 2, $axe);
  575. inv.setItem(rm_inv, 8, $shop_chest);
  576. saveRmInventory(player, rm_inv);
  577. return rm_inv;
  578. }
  579. function saveRmInventory(player, inv) {
  580. map = getScriptVar("rmInventories");
  581. map.add(map, player.getUuid(player), inv);
  582. setScriptVar("rmInventories", map);
  583. }