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 §rErstellt ein Ticket"); msg(player, "§2 - stop §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 §rBeendet ein Ticket"); msg(player, "§2 - free §rGibt ein Ticket für den nächsten Supporter frei"); msg(player, "§2 - report §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 "); } 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 "); } 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 "); } 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 "); } 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 "); } 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; }