123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392 |
- event.load("custom_command");
- event.load("player_logout");
- präfix = "§2Ticket";
- pling_sound = sound.get("minecraft:block.note_block.pling");
- sound_category_ambient = sound.getCategory("ambient");
- //Ticket-Array: ticket[helpneeder][message][solver][ticketid]
- list.new(freetickets); //Liste mit allen offenen Tickets (Arrays)
- list.new(solvingtickets); //Liste mit Tickets in Bearbeitung (Arrays)
- ticketcounter = 0;
- msg("dev", "§bTicketsystem §rwurde geladen");
- @wait
- wait();
- igoto(event);
- goto("wait");
- @custom_command
- if(command == "ticket") {
- size = list.getSize(args);
- if(size == 0) {
- @tickethelp
- msg(player, "§2Ticket §r/ticket...");
- msg(player, "§2 - new <nachricht> §rErstellt ein Ticket");
- msg(player, "§2 - stop <ticketid> §rZieht das Ticket zurück");
- if(issupporter(player)) {
- msg(player, "§2 - list §rZeigt alle offenen Tickets an");
- msg(player, "§2 - get [ticketid] §rGibt dir das nächste bzw. ein bestimmtes Ticket");
- msg(player, "§2 - end <ticketid> §rBeendet ein Ticket");
- msg(player, "§2 - free <ticketid> §rGibt ein Ticket für den nächsten Supporter frei");
- msg(player, "§2 - report <ticketid> §rSendet eine Mail an marvinius mit dem Ticketinhalt");
- }
- goto("wait");
- }
- arg0 = list.getIndex(args, 0);
- if(arg0 == "list") {
- if(size != 1) {
- player.speak(player, präfix, "§a/ticket list");
- } else {
- if(!issupporter(player)) {
- player.speak(player, präfix, "Du bist kein Supporter");
- goto("wait");
- }
- sizefreetickets = list.getSize(freetickets);
- sizesolvingtickets = list.getSize(solvingtickets);
- if(sizefreetickets == 0 && sizesolvingtickets == 0) {
- player.speak(player, präfix, "§rAktuell gibt es keine Tickets");
- goto("wait");
- }
- player.speak(player, präfix, "§rTickets: ", text.number(sizefreetickets + sizesolvingtickets), " davon offen: ", text.number(sizefreetickets));
- //player.speak(player, präfix, "§rTickets in Bearbeitung: ", list.getSize(solvingtickets));
- //player.speak(player, präfix, "§rOffene Tickets: ", sizefreetickets);
- for(i = 0; i <= sizefreetickets - 1; i++) {
- ticket = list.getIndex(freetickets, i);
- msg(player, "ID ", text.number(getTicketID(ticket)), " / ", player.getNameFromId(getHelpneeder(ticket)), " / ", getMessage(ticket));
- }
- msg(player, "---------");
- for(i = 0; i <= sizesolvingtickets - 1; i++) {
- ticket = list.getIndex(solvingtickets, i);
- msg(player, "ID ", text.number(getTicketID(ticket)), " / ", player.getNameFromId(getHelpneeder(ticket)), " --> ", player.getNameFromId(getSolver(ticket)), " / ", getMessage(ticket));
- }
- }
- goto("wait");
- }
- if(arg0 == "get") {
- if(size < 1 || size > 2) {
- player.speak(player, präfix, "§a/ticket get [ticketid]");
- } else {
- if(!issupporter(player)) {
- player.speak(player, präfix, "Du bist kein Supporter");
- goto("wait");
- }
- team_player_id = player.getId(player);
- if(size == 1) {
- if(list.getSize(freetickets) == 0) {
- player.speak(player, präfix, "§rAktuell gibt es keine offenen Tickets");
- goto("wait");
- }
- ticket = list.getIndex(freetickets, 0);
- } else {
- ticketid = list.getIndex(args, 1);
- if(!isDouble(ticketid)) {
- player.speak(player, präfix, "Zahl erwartet");
- goto("wait");
- }
- ticket = getTicketFromID(ticketid);
- if(ticket == null || !list.contains(freetickets, ticket)) {
- player.speak(player, präfix, "Dieses Ticket ist nicht aktiv");
- goto("wait");
- }
- }
- player_id = getHelpneeder(ticket);
- pname = player.getNameFromId(player_id);
- p = read.player(pname);
- nachricht = getMessage(ticket);
- list.remove(freetickets, ticket);
- list.add(solvingtickets, ticket);
- team_player_id = player.getId(player);
- setSolver(ticket, team_player_id);
- player.speak(p, präfix, concat("§r", player_name, " kümmert sich um dein Ticket: §a", nachricht));
- player.speak(player, präfix, concat("§rDu kümmerst dich um das Ticket von ", pname, ": §a", nachricht));
- }
- goto("wait");
- }
- if(arg0 == "end") {
- if(size != 2) {
- player.speak(player, präfix, "§a/ticket end <ticketid>");
- } else {
- if(!issupporter(player)) {
- player.speak(player, präfix, "Du bist kein Supporter");
- goto("wait");
- }
- ticketid = list.getIndex(args, 1);
- if(!isDouble(ticketid)) {
- player.speak(player, präfix, "Zahl erwartet");
- goto("wait");
- }
- team_player_id = player.getId(player);
- ticket = getTicketFromID(ticketid);
- if(ticket == null) {
- player.speak(player, präfix, "Dieses Ticket ist nicht aktiv");
- goto("wait");
- }
- if(getSolver(ticket) != team_player_id) {
- player.speak(player, präfix, "Du löst dieses Ticket nicht");
- goto("wait");
- }
- player_id = getHelpneeder(ticket);
- list.remove(solvingtickets, ticket);
- player.speak(player.getNameFromId(player_id), präfix, "§rDein Ticket wurde fertig bearbeitet");
- player.speak(player, präfix, "§rDu hast das Ticket fertig bearbeitet");
- }
- goto("wait");
- }
- if(arg0 == "free") {
- if(size != 2) {
- player.speak(player, präfix, "§a/ticket free <ticketid>");
- } else {
- if(!issupporter(player)) {
- player.speak(player, präfix, "Du bist kein Supporter");
- goto("wait");
- }
- ticketid = list.getIndex(args, 1);
- if(!isDouble(ticketid)) {
- player.speak(player, präfix, "Zahl erwartet");
- goto("wait");
- }
- team_player_id = player.getId(player);
- ticket = getTicketFromID(ticketid);
- if(ticket == null) {
- player.speak(player, präfix, "Dieses Ticket ist nicht aktiv");
- goto("wait");
- }
- if(getSolver(ticket) != team_player_id) {
- player.speak(player, präfix, "Du löst dieses Ticket nicht");
- goto("wait");
- }
- freeticket(ticket);
- }
- goto("wait");
- }
- if(arg0 == "report") {
- if(size != 2) {
- player.speak(player, präfix, "§a/ticket report <ticketid>");
- } else {
- if(!issupporter(player)) {
- player.speak(player, präfix, "Du bist kein Supporter");
- goto("wait");
- }
- ticketid = list.getIndex(args, 1);
- if(!isDouble(ticketid)) {
- player.speak(player, präfix, "Zahl erwartet");
- goto("wait");
- }
- team_player_id = player.getId(player);
- ticket = getTicketFromID(ticketid);
- if(ticket == null) {
- player.speak(player, präfix, "Dieses Ticket ist nicht aktiv");
- goto("wait");
- }
- if(getSolver(ticket) != team_player_id) {
- player.speak(player, präfix, "Du löst dieses Ticket nicht");
- goto("wait");
- }
- team_player_id = player.getId(player);
- player_id = getHelpneeder(ticket);
- name = player.getNameFromId(player_id);
- nachricht = getMessage(ticket);
- player.speak(name, präfix, "§rDein Ticket wurde reportet");
- player.speak(player, präfix, "§rDu hast das Ticket reportet");
- list.remove(solvingtickets, ticket);
- mail.send(player.getName(player), "marvinius", concat("Ticket Report: ", name, " / ", nachricht));
- }
- goto("wait");
- }
- if(arg0 == "stop") {
- if(size != 2) {
- player.speak(player, präfix, "§a/ticket stop <ticketid>");
- } else {
- ticketid = list.getIndex(args, 1);
- if(!isDouble(ticketid)) {
- player.speak(player, präfix, "Zahl erwartet");
- goto("wait");
- }
- ticket = getTicketFromID(ticketid);
- if(ticket == null) {
- player.speak(player, präfix, "§rDu hast das Ticket nicht erstellt");
- goto("wait");
- }
- if(!hasticketcreated(player_id, ticket)) {
- player.speak(player, präfix, "§rDu hast das Ticket nicht erstellt");
- goto("wait");
- }
- if(stopticket(ticket)) {
- player.speak(player, präfix, "§rDein Ticket wurde aufgelöst");
- team_player_id = getSolver(ticket);
- if(team_player_id != null) {
- player.speak(player.getNameFromId(team_player_id), präfix, "§rDas Ticket von ", player_name, " wurde aufgelöst");
- }
- } else {
- player.speak(player, präfix, "§rDas Ticket existiert nicht");
- }
- }
- goto("wait");
- }
- if(arg0 == "new") {
- if(size < 2) {
- player.speak(player, präfix, "§a/ticket new <nachricht>");
- } else {
- //checkforteamler
- online = players.toList();
- list.new(teamlers);
- for(i = 0; i <= list.getSize(online) - 1; i++) {
- p = list.getIndex(online, i);
- if(issupporter(p)) {
- list.add(teamlers, p);
- }
- }
- if(list.getSize(teamlers) == 0) {
- player.speak(player, präfix, "§rIm Moment steht kein Teamler zur Verfügung");
- goto("wait");
- }
- nachricht = concatList(args, " ", 1, size - 1);
- player_id = player.getId(player);
- createticket(player_id, nachricht);
- player.speak(player, präfix, "§rDas Ticket wurde eingereicht #ID:", text.number(ticketcounter));
- for(i = 0; i <= list.getSize(teamlers) - 1; i++) {
- p = list.getIndex(teamlers, i);
- player.speak(p, präfix, "§r", player_name, " hat ein Ticket eingereicht: §a", nachricht);
- player.speak(p, präfix, "§rOffene Tickets: ", text.number(list.getSize(freetickets)));
- sound.spawnForPlayer(p, pling_sound, sound_category_ambient);
- }
- }
- goto("wait");
- }
- goto("tickethelp");
- }
- goto("wait");
- @player_logout
- player_id = player.getId(player);
- if(issupporter(player)) {
- //Liste mit Tickets in Bearbeitung durchlaufen und jeden Array auf den Solver checken
- for(i = 0; i <= list.getSize($solvingtickets) - 1; i++) {
- ticket = list.getIndex($solvingtickets, i);
- if(getSolver(ticket) == player_id) {
- freeticket(ticket);
- }
- }
- } else {
- //Beide Ticket-Listen durchlaufen und jeden Array auf den Helpneeder checken
- for(i = 0; i <= list.getSize($freetickets) - 1; i++) {
- ticket = list.getIndex($freetickets, i);
- if(getHelpneeder(ticket) == player_id) {
- stopticket(ticket);
- }
- }
- for(i = 0; i <= list.getSize($solvingtickets) - 1; i++) {
- ticket = list.getIndex($solvingtickets, 0);
- if(getHelpneeder(ticket) == player_id) {
- stopticket(ticket);
- }
- }
- }
- goto("wait");
- function issupporter(player) {
- if(perm.has(player, "isSupporter")) {
- return true;
- }
- return false;
- }
- function createticket(player_id, nachricht) {
- //Ticket erstellen
- $ticketcounter += 1;
- ticket = array.new(4);
- ticket[0] = player_id;
- ticket[1] = nachricht;
- ticket[3] = $ticketcounter;
- list.add($freetickets, ticket);
- return;
- }
- function freeticket(ticket) {
- player_id = getHelpneeder(ticket);
- name = player.getNameFromId(player_id);
- team_player_id = player.getId($player);
- player.speak(name, $präfix, "§rDein Ticket wurde wieder freigegeben. Ein anderer Teamler wird sich darum kümmern");
- player.speak($player, $präfix, "§rDu hast das Ticket freigegeben");
- list.remove($solvingtickets, ticket);
- list.add($freetickets, ticket);
- setSolver(ticket, null);
- //checkforteamler
- online = players.toList();
- list.new(teamlers);
- for(i = 0; i <= list.getSize(online) - 1; i++) {
- p = list.getIndex(online, i);
- if(issupporter(p)) {
- list.add(teamlers, p);
- }
- }
- for(i = 0; i <= list.getSize(teamlers) - 1; i++) {
- p = list.getIndex(teamlers, i);
- player.speak(p, $präfix, "§r", $player_name, " hat das Ticket von ", name, " wieder freigegeben: §a", getMessage(ticket));
- player.speak(p, $präfix, "§rOffene Tickets: ", text.number(list.getSize($freetickets)));
- sound.spawnForPlayer(p, pling_sound, sound_category_ambient);
- }
- return;
- }
- function stopticket(ticket) {
- //Check ob Ticket existiert
- if(!(list.contains($freetickets, ticket) || list.contains($solvingtickets, ticket))) {
- return false;
- }
- //Ticket löschen
- player_id = getHelpneeder(ticket);
- list.remove($freetickets, ticket);
- list.remove($solvingtickets, ticket);
- return true;
- }
- function getHelpneeder(ticket) {
- player_id = ticket[0];
- return player_id;
- }
- function getMessage(ticket) {
- message = ticket[1];
- return message;
- }
- function getSolver(ticket) {
- solver = ticket[2];
- return solver;
- }
- function getTicketID(ticket) {
- ticketid = ticket[3];
- return ticketid;
- }
- function setSolver(ticket, player_id) {
- ticket[2] = player_id;
- return;
- }
- function hasticketcreated(player_id, ticket) {
- if(player_id == getHelpneeder(ticket)) {
- return true;
- }
- return false;
- }
- function getTicketFromID(ticketid) {
- //Beide Ticket-Listen durchlaufen und jeden Array auf die ID checken
- for(i = 0; i <= list.getSize($freetickets) - 1; i++) {
- tempticket = list.getIndex($freetickets, i);
- if(getTicketID(tempticket) == ticketid) {
- return tempticket;
- }
- }
- for(i = 0; i <= list.getSize($solvingtickets) - 1; i++) {
- tempticket = list.getIndex($solvingtickets, i);
- if(getTicketID(tempticket) == ticketid) {
- return tempticket;
- }
- }
- return null;
- }
|