u_games.txt 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732
  1. @simplelobby
  2. ignoreGoto("checklobby");
  3. wait();
  4. if(event == "entity_damage") {
  5. if(!isPlayer(entity)) {
  6. goto("simplelobby");
  7. }
  8. player = entity;
  9. if(!player.hasMinigameId(player, script_id)) {
  10. goto("simplelobby");
  11. }
  12. cancel = true;
  13. if(minigame.hasSpecificLobbyHandling()) {
  14. gosub("specificLobbyHandling");
  15. }
  16. goto("simplelobby");
  17. }
  18. if(event == "entity_mount") {
  19. if(!isPlayer(entity)) {
  20. goto("simplelobby");
  21. }
  22. player = entity;
  23. }
  24. if(event == "custom_command") {
  25. if(!isPlayer(sender)) {
  26. goto("simplelobby");
  27. }
  28. player = sender;
  29. }
  30. if(!player.hasMinigameId(player, script_id)) {
  31. goto("simplelobby");
  32. }
  33. if(minigame.hasSpecificLobbyHandling()) {
  34. gosub("specificLobbyHandling");
  35. }
  36. if(event == "minigame_join") {
  37. gosub("lobbycore");
  38. }
  39. elseif(event == "block_break" || event == "block_place") {
  40. cancel = true;
  41. }
  42. elseif(event == "player_quit" || event == "player_giveup") {
  43. gosub("leavelobbycore");
  44. }
  45. elseif(event == "custom_command") {
  46. if(command == "startgame") {
  47. if(minigame.hasManualStart()) {
  48. if(minigame.isStarting()) {
  49. msg.prefix(player, gamename, "Already started.");
  50. goto("simplelobby");
  51. }
  52. goto("startcountdown");
  53. }
  54. //jumpstart
  55. if(!perm.has("startgame.jump", player)) {
  56. perm.no("startgame.jump", player);
  57. goto("simplelobby");
  58. }
  59. if(minigame.isStarting()) {
  60. if(noticetime > 5) {
  61. noticetime = 5;
  62. minigame.speakAll(gamename, "Left time reduced to §b5 §rseconds.");
  63. goto("simplelobby");
  64. }
  65. msg.prefix(player, gamename, "Left time can't be reduced.");
  66. goto("simplelobby");
  67. }
  68. msg.prefix(player, gamename, "Game is not starting.");
  69. }
  70. }
  71. goto("simplelobby");
  72. @startcountdown
  73. if(!minigame.canStart()) {
  74. minigame.waiting();
  75. goto("simplelobby");
  76. }
  77. minigame.setStarting(true);
  78. if(noticetime == 5) {
  79. minigame.titleAll(gamename, mapname, 20, 60, 20);
  80. }
  81. if(noticetime == 1) {
  82. minigame.speakAll(gamename, string.concat("The game starts in §b", string.number(noticetime), " §rsecond."));
  83. } else {
  84. minigame.speakAll(gamename, string.concat("The game starts in §b", string.number(noticetime), " §rseconds."));
  85. }
  86. if(noticetime == 0) {
  87. sign.started(gamesignloc);
  88. goto("finalstart");
  89. }
  90. if(noticetime > 30) {
  91. s_time = 200; //10s
  92. } elseif(noticetime > 5) {
  93. s_time = 100; //5s
  94. } else {
  95. s_time = 20; //1s
  96. }
  97. noticetime -= s_time / 20;
  98. sgoto(s_time, "startcountdown");
  99. player_list = minigame.getPlayers(script_id);
  100. p_amount = list.getSize(player_list);
  101. for(i = 0; i < p_amount; i++) {
  102. p = player.get(list.getIndex(player_list, i));
  103. sound.spawnForPlayer(p, join_sound, sound_category_ambient);
  104. }
  105. goto("simplelobby");
  106. @lobbycore
  107. minigame.speakAll(gamename, string.concat("§8", player.getNickName(player), "§r joined the game."));
  108. if(!minigame.hasNoLobbyTeleport()) {
  109. modTimer.entityTeleport(player, lobbyspawnloc);
  110. }
  111. if(minigame.doPlayerResetInCore()) {
  112. resetplayer(player);
  113. }
  114. title.send(player, text.new(gamename), text.new(mapname));
  115. if(minigame.hasManualStart()) {
  116. return;
  117. }
  118. if(!minigame.isStarting()) {
  119. if(minigame.canStart()) {
  120. goto("startcountdown");
  121. }
  122. minigame.waiting();
  123. }
  124. return;
  125. @leavelobbycore
  126. minigame.speakAll(gamename, string.concat("§8", player.getNickName(player), "§r left the game."));
  127. script = script.getFromId(script_id);
  128. if(player.isPartyLeader(player)) {
  129. leader_uuid = player.getUuid(player);
  130. player_list = minigame.getPlayers(script_id);
  131. list = party.getList(player.getPartyId(player));
  132. iter = iterator(list);
  133. while(hasNext(iter)) {
  134. p_uuid = next(iter);
  135. p = player.get(p_uuid);
  136. if(list.contains(player_list, p_uuid)) {
  137. minigame.kickPlayer(script, p);
  138. }
  139. }
  140. } else {
  141. minigame.kickPlayer(script, player);
  142. }
  143. p_amount = minigame.getPlayerAmount(script_id);
  144. if(p_amount == 0) {
  145. minigame.term(script, gamesignloc);
  146. }
  147. if(!minigame.canStart()) {
  148. minigame.waiting();
  149. goto("simplelobby");
  150. }
  151. return;
  152. //--------------------------------------------------
  153. //Minigame-Utils
  154. //--------------------------------------------------
  155. function minigame.setLobbyCounter(seconds) {
  156. $lobby_counter_init = seconds;
  157. $noticetime = seconds;
  158. }
  159. function minigame.getLobbyCounter() {
  160. if($lobby_counter_init == null) {
  161. $lobby_counter_init = 20;
  162. $noticetime = 20;
  163. }
  164. return $lobby_counter_init;
  165. }
  166. function minigame.setNoLobbyTeleport(bool) {
  167. $no_lobby_tp = bool;
  168. }
  169. function minigame.hasNoLobbyTeleport() {
  170. bool = $no_lobby_tp;
  171. if(bool == null) {
  172. bool = false;
  173. }
  174. return bool;
  175. }
  176. function minigame.setPlayerResetInCore(bool) {
  177. $no_core_reset = !bool;
  178. }
  179. function minigame.doPlayerResetInCore() {
  180. if($no_core_reset == null) {
  181. $no_core_reset = false;
  182. }
  183. return !$no_core_reset;
  184. }
  185. function minigame.setManualStart(bool) {
  186. $manual_start = bool;
  187. }
  188. function minigame.hasManualStart() {
  189. bool = $manual_start;
  190. if(bool == null) {
  191. bool = false;
  192. }
  193. return bool;
  194. }
  195. function minigame.setIndivStartCheck(bool) {
  196. $indiv_start_check = bool;
  197. }
  198. function minigame.hasIndivStartCheck() {
  199. bool = $indiv_start_check;
  200. if(bool == null) {
  201. bool = false;
  202. }
  203. return bool;
  204. }
  205. function minigame.setSpecificLobbyHandling(bool) {
  206. $specific_lobby_handling = bool;
  207. }
  208. function minigame.hasSpecificLobbyHandling() {
  209. bool = $specific_lobby_handling;
  210. if(bool == null) {
  211. bool = false;
  212. }
  213. return bool;
  214. }
  215. function minigame.setMinPlayers(amount) {
  216. $minplayers = amount;
  217. }
  218. function minigame.getMinPlayers() {
  219. return $minplayers;
  220. }
  221. function minigame.setMaxPlayers(amount) {
  222. $maxplayers = amount;
  223. }
  224. function minigame.getMaxPlayers() {
  225. return $maxplayers;
  226. }
  227. function minigame.isStarting() {
  228. return $starting;
  229. }
  230. function minigame.setStarting(bool) {
  231. $starting = bool;
  232. }
  233. function minigame.setSingleplayer() {
  234. $singleplayer = true;
  235. }
  236. function minigame.setMultiplayer() {
  237. $singleplayer = false;
  238. }
  239. function minigame.isSingleplayer() {
  240. return $singleplayer;
  241. }
  242. function minigame.isMultiplayer() {
  243. return !$singleplayer;
  244. }
  245. function minigame.waiting() {
  246. minigame.setStarting(false);
  247. $noticetime = minigame.getLobbyCounter();
  248. if(minigame.hasManualStart()) {
  249. minigame.speakAll($gamename, "Start process stopped.");
  250. return;
  251. }
  252. waitfor = minigame.getMinPlayers() - minigame.getPlayerAmount($script_id);
  253. if(waitfor == 1) {
  254. minigame.speakAll($gamename, string.concat("Waiting for §b", string.number(waitfor), " §rplayer."));
  255. return;
  256. }
  257. if(waitfor == 0) {
  258. minigame.speakAll($gamename, string.concat("Waiting for §b", string.number(waitfor), " §rplayers, but start conditions are not met."));
  259. return;
  260. }
  261. minigame.speakAll($gamename, string.concat("Waiting for §b", string.number(waitfor), " §rplayers."));
  262. }
  263. function minigame.canStart() {
  264. if(minigame.hasIndivStartCheck()) {
  265. return minigame.canStartIndiv();
  266. }
  267. player_list = minigame.getPlayers($script_id);
  268. p_amount = list.getSize(player_list);
  269. return p_amount >= minigame.getMinPlayers();
  270. }
  271. function minigame.initStart() {
  272. minigame.loadLobbyEvents();
  273. minigame.setupMultiplayer();
  274. }
  275. function minigame.clearItems(location, radius) {
  276. entity.removeAll("org.bukkit.entity.Item", location, radius);
  277. }
  278. function minigame.setTabName(player, game_tab, team_color) {
  279. if(team_color == null) {
  280. team_color = "§r";
  281. }
  282. player_name = player.getName(player);
  283. display_name = string.concat(game_tab, " §7| ", team_color, player_name);
  284. player.setDisplayName(player, text.new(display_name));
  285. }
  286. function minigame.loadLobbyEvents() {
  287. event.load("minigame_join");
  288. event.load("player_quit");
  289. event.load("player_giveup");
  290. event.load("block_break");
  291. event.load("block_place");
  292. event.load("block_click");
  293. event.load("entity_damage");
  294. event.load("custom_command");
  295. }
  296. function minigame.setupMultiplayer() {
  297. $noticetime = minigame.getLobbyCounter();
  298. minigame.setMultiplayer();
  299. minigame.setStarting(false);
  300. $sound_category_ambient = sound.getCategory("AMBIENT");
  301. $sound_category_player = sound.getCategory("PLAYERS");
  302. $join_sound = sound.get("BLOCK_NOTE_BLOCK_BASS");
  303. $pling_sound = sound.get("BLOCK_NOTE_BLOCK_PLING");
  304. }
  305. function minigame.setLastPos(player) {
  306. map.add(getScriptVar("lobbylastpos"), player.getUuid(player), entity.getLocation(player));
  307. }
  308. function minigame.getLastPos(player) {
  309. return map.getOrDefault(getScriptVar("lobbylastpos"), player.getUuid(player), world.getGamesSpawn());
  310. }
  311. function minigame.isStarted(sign_block) {
  312. return sign.getString(sign_block, "FRONT", 3) == "§bStarted";
  313. }
  314. function minigame.getSignLoc(sign_name) {
  315. return map.get(getScriptVar("gamesigns"), sign_name);
  316. }
  317. function minigame.term(script, gamesignloc) {
  318. setScriptVar("sign_loc", gamesignloc);
  319. script.callEvent("term_script");
  320. sign.ready(gamesignloc);
  321. script.term(script);
  322. }
  323. function minigame.speakAll(prefix, message) {
  324. iter = iterator(minigame.getPlayers($script_id));
  325. while(hasNext(iter)) {
  326. p_uuid = next(iter);
  327. p = player.get(p_uuid);
  328. msg.prefix(p, prefix, message);
  329. }
  330. }
  331. function minigame.msgAll(message) {
  332. iter = iterator(minigame.getPlayers($script_id));
  333. while(hasNext(iter)) {
  334. p_uuid = next(iter);
  335. p = player.get(p_uuid);
  336. if(p != null) {
  337. msg.string(p, message);
  338. }
  339. }
  340. }
  341. function minigame.displayAll(line, message) {
  342. iter = iterator(minigame.getPlayers($script_id));
  343. while(hasNext(iter)) {
  344. p_uuid = next(iter);
  345. p = player.get(p_uuid);
  346. sb.add(p, line, message);
  347. }
  348. }
  349. function minigame.titleAll(title, subtitle, fadeIn, show, fadeOut) {
  350. iter = iterator(minigame.getPlayers($script_id));
  351. while(hasNext(iter)) {
  352. p_uuid = next(iter);
  353. p = player.get(p_uuid);
  354. title.send(p, text.new(title), text.new(subtitle));
  355. }
  356. }
  357. function minigame.displayRemoveAll(line) {
  358. iter = iterator(minigame.getPlayers($script_id));
  359. while(hasNext(iter)) {
  360. p_uuid = next(iter);
  361. p = player.get(p_uuid);
  362. sb.remove(p, line);
  363. }
  364. }
  365. function minigame.displayClearAll() {
  366. iter = iterator(minigame.getPlayers($script_id));
  367. while(hasNext(iter)) {
  368. p_uuid = next(iter);
  369. p = player.get(p_uuid);
  370. sb.clearGame(p);
  371. }
  372. }
  373. function minigame.statsHeader(player, gamename, colorcode) {
  374. msg.string(player, string.concat("[", gamename, "§r] §r---= ", colorcode, "Statistic §r=---"));
  375. }
  376. function minigame.statsLine(player, colorcode, string, value) {
  377. msg.string(player, string.concat(colorcode, " -§r ", string, ": ", colorcode, value));
  378. }
  379. function getTeamWithLowestPeople(team_lists, numberofteams) {
  380. teamlist = map.get(team_lists, 0);
  381. lowest = list.getSize(teamlist);
  382. lowestteam = 0;
  383. for(i = 1; i < numberofteams; i++) {
  384. teamlist = map.get(team_lists, i);
  385. size = list.getSize(teamlist);
  386. if(size < lowest) {
  387. lowest = size;
  388. lowestteam = i;
  389. }
  390. }
  391. return lowestteam;
  392. }
  393. function minigame.getScriptId(script_or_id) {
  394. if(isDouble(script_or_id)) {
  395. return script_or_id;
  396. }
  397. return script.getId(script_or_id);
  398. }
  399. function minigame.kickPlayer(script_or_id, player) {
  400. script_id = minigame.getScriptId(script_or_id);
  401. resetplayer(player);
  402. player.tpGamesLobby(player);
  403. list = minigame.getPlayers(script_id);
  404. list.remove(list, player.getUuid(player));
  405. sign.players($gamesignloc, list.getSize(list), $maxplayers);
  406. set.remove(player.getMinigameIds(player), script_id);
  407. }
  408. function minigame.kickAllPlayers(script_or_id) {
  409. script_id = minigame.getScriptId(script_or_id);
  410. player_list = minigame.getPlayers(script_id);
  411. list = list.copy(player_list); //Copy list to preven concurrent modification
  412. iter = iterator(list);
  413. while(hasNext(iter)) {
  414. p = player.get(next(iter));
  415. if(p != null) {
  416. minigame.kickPlayer(script_id, p);
  417. }
  418. }
  419. }
  420. function minigame.getPlayerAmount(script_id) {
  421. list = minigame.getPlayers(script_id);
  422. return list.getSize(list);
  423. }
  424. function minigame.getPlayers(script_id) {
  425. map = getScriptVar("script_players");
  426. list = map.get(map, script_id);
  427. if(list == null) {
  428. list = list.new();
  429. map.add(map, script_id, list);
  430. }
  431. return list;
  432. }
  433. function minigame.setWon(player_or_id, game_short, amount) {
  434. config = playerdata.getGames(player_or_id);
  435. config.set(config, string.concat("won.", game_short), amount);
  436. config.saveAsync(config);
  437. }
  438. function minigame.getWon(player_or_id, game_short) {
  439. config = playerdata.getGames(player_or_id);
  440. return config.getDouble(config, string.concat("won.", game_short), 0);
  441. }
  442. function minigame.setPlayed(player_or_id, game_short, amount) {
  443. config = playerdata.getGames(player_or_id);
  444. config.set(config, string.concat("played.", game_short), amount);
  445. config.saveAsync(config);
  446. }
  447. function minigame.getPlayed(player_or_id, game_short) {
  448. config = playerdata.getGames(player_or_id);
  449. return config.getDouble(config, string.concat("played.", game_short), 0);
  450. }
  451. function minigame.addPlayed(player_or_id, game_short, amount) {
  452. config = playerdata.getGames(player_or_id);
  453. new_amount = config.getDouble(config, string.concat("played.", game_short), 0) + amount;
  454. config.set(config, string.concat("played.", game_short), new_amount);
  455. config.saveAsync(config);
  456. }
  457. //--------------------------------------------------
  458. //Player-Utils
  459. //--------------------------------------------------
  460. function player.tpGamesLobby(player) {
  461. modTimer.entityTeleport(player, minigame.getLastPos(player));
  462. inv = player.getInv(player);
  463. inv.setItem(inv, 0, item.create("COMPASS", 1, null, null));
  464. }
  465. function player.hasMinigameId(player, script_id) {
  466. if(player == null) {
  467. return false;
  468. }
  469. if(script_id == null) {
  470. return false;
  471. }
  472. set = player.getMinigameIds(player);
  473. return set.contains(set, script_id);
  474. }
  475. function resetplayer(player) {
  476. living.cleareffects(player);
  477. living.setHealth(player, 20);
  478. player.setHunger(player, 20);
  479. player.setSaturation(player, 5);
  480. player.clearInventory(player);
  481. player.setSpeed(player, 1);
  482. entity.setGravity(player, true);
  483. inv.close(player);
  484. money.display(player, money.get(player));
  485. player.setTabName(player);
  486. sb.clearGame(player);
  487. }
  488. //--------------------------------------------------
  489. //Ranking-Utils
  490. //--------------------------------------------------
  491. //Tabelle in Datenbank registrieren
  492. function ranking.register(rankingtable) {
  493. databank.workerExecute(databank.prepare(string.concat("CREATE TABLE IF NOT EXISTS ", rankingtable, " (player_id INT NOT NULL PRIMARY KEY, points INT NOT NULL, sec_points INT);")));
  494. }
  495. //Setzt die Rekord-Punkte eines Spielers
  496. function ranking.setPoints(rankingtable, player_or_id, points) {
  497. stmt = databank.prepare(string.concat("INSERT INTO ", rankingtable, " (points, player_id) VALUES (?,?) ON DUPLICATE KEY UPDATE points = ?;"), false);
  498. databank.setInt(stmt, 1, points);
  499. databank.setInt(stmt, 2, player.getValidId(player_or_id));
  500. databank.setInt(stmt, 3, points);
  501. databank.workerExecute(stmt);
  502. }
  503. //Setzt die primären und sekundären Rekord-Punkte eines Spielers
  504. function ranking.setSecPoints(rankingtable, player_or_id, points, sec_points) {
  505. stmt = databank.prepare(string.concat("INSERT INTO ", rankingtable, " (points, sec_points, player_id) VALUES (?,?,?) ON DUPLICATE KEY UPDATE points = ?, sec_points = ?;"), false);
  506. databank.setInt(stmt, 1, points);
  507. databank.setInt(stmt, 2, sec_points);
  508. databank.setInt(stmt, 3, player.getValidId(player_or_id));
  509. databank.setInt(stmt, 4, points);
  510. databank.setInt(stmt, 5, sec_points);
  511. databank.workerExecute(stmt);
  512. }
  513. //Gibt die gesamte Rangtabelle zurück. Liste mit Arrays
  514. function ranking.getArray(rankingtable, order, order2) {
  515. ranking_list = list.new();
  516. if(order2 == null) {
  517. stmt = databank.prepare(string.concat("SELECT player_id, points,sec_points FROM ", rankingtable, " ORDER BY points ", order, ";"));
  518. } else {
  519. stmt = databank.prepare(string.concat("SELECT player_id, points,sec_points FROM ", rankingtable, " ORDER BY points ", order, ", sec_points ", order2, ";"));
  520. }
  521. result = databank.execute(stmt);
  522. while(databank.next(result)) {
  523. a = array.new(3);
  524. a[0] = databank.getInt(result, 1); //player_id
  525. a[1] = databank.getInt(result, 2); //points
  526. a[2] = databank.getInt(result, 3); //sec_points
  527. list.add(ranking_list, a);
  528. }
  529. databank.close(result);
  530. databank.close(stmt);
  531. return ranking_list;
  532. }
  533. //Gibt Daten des Spieler von Platz n als Array zurück
  534. function ranking.getArrayFromRank(rankingtable, rank, order, order2) {
  535. ranking_list = ranking.getArray(rankingtable, order, order2);
  536. list_size = list.getSize(ranking_list);
  537. index = rank - 1;
  538. if(index >= list_size || index < 0) {
  539. return null;
  540. }
  541. a = list.getIndex(ranking_list, index);
  542. return a;
  543. }
  544. //Gibt den Spieler von Platz n zurück
  545. function ranking.getPlayerIdFromRank(rankingtable, rank, order, order2) {
  546. a = ranking.getArrayFromRank(rankingtable, rank, order, order2);
  547. if(a == null) {
  548. return -1;
  549. }
  550. return a[0];
  551. }
  552. //Gibt die Punkte von Platz n zurück
  553. function ranking.getPointsFromRank(rankingtable, rank, order, order2) {
  554. a = ranking.getArrayFromRank(rankingtable, rank, order, order2);
  555. if(a == null) {
  556. return -1;
  557. }
  558. return a[1];
  559. }
  560. //Gibt die Top 10 Spieler eines Spiels zurück
  561. function ranking.getTopTenList(rankingtable, order, order2) {
  562. toptenlist = list.new();
  563. ranking_list = ranking.getArray(rankingtable, order, order2);
  564. list_size = list.getSize(ranking_list);
  565. for(i = 0; i < list_size; i++) {
  566. list.add(toptenlist, list.getIndex(ranking_list, i));
  567. }
  568. return toptenlist;
  569. }
  570. //Gibt die Statistik eines Spiels zurück
  571. function ranking.getPlayerStats(player_id, rankingtable, order, order2) {
  572. ranking_list = ranking.getArray(rankingtable, order, order2);
  573. list_size = list.getSize(ranking_list);
  574. for(i = 0; i < list_size; i++) {
  575. a = list.getIndex(ranking_list, i);
  576. if(a[0] == player_id) {
  577. return a;
  578. }
  579. }
  580. return null;
  581. }
  582. //Gibt den Rang eines Spielers zurück
  583. function ranking.getPlayerRank(player_id, rankingtable, order, order2) {
  584. ranking_list = ranking.getArray(rankingtable, order, order2);
  585. list_size = list.getSize(ranking_list);
  586. for(i = 0; i < list_size; i++) {
  587. a = list.getIndex(ranking_list, i);
  588. if(a[0] == player_id) {
  589. return i + 1;
  590. }
  591. }
  592. return -1;
  593. }
  594. //Entfernt einen Spieler aus der Statistik
  595. function ranking.removePlayer(player_id, rankingtable, game_short) {
  596. stmt = databank.prepare(string.concat("DELETE FROM ", rankingtable, " WHERE player_id = ?;"));
  597. databank.setInt(stmt, 1, player_id);
  598. databank.workerExecute(stmt);
  599. if(game_short != null) {
  600. if(minigame.getWon(player_id, game_short) != 0) {
  601. minigame.setWon(player_id, game_short, 0);
  602. }
  603. if(minigame.getPlayed(player_id, game_short) != 0) {
  604. minigame.setPlayed(player_id, game_short, 0);
  605. }
  606. }
  607. }
  608. //--------------------------------------------------
  609. //Sign-Utils
  610. //--------------------------------------------------
  611. function sign.players(sign_block, amount, max) {
  612. if(!isBlock(sign_block)) {
  613. sign_block = block.get(sign_block);
  614. }
  615. sign.setString(sign_block, "FRONT", 2, string.concat(string.number(amount), "/", string.number(max)));
  616. }
  617. function sign.ready(sign_block) {
  618. if(!isBlock(sign_block)) {
  619. sign_block = block.get(sign_block);
  620. }
  621. sign.setString(sign_block, "FRONT", 3, "§2Ready");
  622. }
  623. function sign.started(sign_block) {
  624. if(!isBlock(sign_block)) {
  625. sign_block = block.get(sign_block);
  626. }
  627. sign.setString(sign_block, "FRONT", 3, "§bStarted");
  628. }
  629. function sign.closed(sign_block) {
  630. if(!isBlock(sign_block)) {
  631. sign_block = block.get(sign_block);
  632. }
  633. sign.setString(sign_block, "FRONT", 3, "§cClosed");
  634. }
  635. //--------------------------------------------------
  636. //SB-Utils
  637. //--------------------------------------------------
  638. function sb.clearGame(player) {
  639. for(i = 79; i < 100; i++) {
  640. sb.remove(player, i);
  641. }
  642. }
  643. function sb.clearGameAll() {
  644. iter = iterator(minigame.getPlayers($script_id));
  645. while(hasNext(iter)) {
  646. p_uuid = next(iter);
  647. p = player.get(p_uuid);
  648. sb.clearGame(p);
  649. }
  650. }