123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402 |
- event.load("custom_command");
- event.load("player_logout");
- setScriptVar("party_ids", map.new()); //Player, partyid
- setScriptVar("party_lists", map.new()); //partyid, Liste mit Players aller Partymitglieder
- setScriptVar("party_ranks", map.new()); //Player, "leader"/"mod"/"player"
- delkeytime = list.new(); //Alle Zeitpunkte zum Löschen der Einladungen (Vergleichsliste)
- delkeytimes = map.new(); //Player, Liste mit Zeitpunkten zum Löschen der Einladungen
- deluuid = list.new(); //Alle Player zum Löschen der Einladungen
- invitations = map.new(); //Player, Liste mit Player aller Einlader
- invite_ids = map.new(); //Player, partyid
- partycounter = 0;
- party_prefix = "§5Party";
- msg("dev", "§bPartysystem §rwurde geladen");
- @wait
- wait();
- ignoreGoto(event);
- goto("wait");
- @player_logout
- if(player.isInParty(player)) {
- party.kickPlayer(player, "logout");
- }
- goto("wait");
- @custom_command
- if(command == "party") {
- size = list.getSize(args);
- if(size == 0) {
- @partyhelp
- msg.prefix(player, party_prefix, "§r/party ...");
- msg(player, "§5 - invite <player> §rInvite a player");
- msg(player, "§5 - accept <player> §rAccept an invitation");
- msg(player, "§5 - deny <player> §rDeny an invitation");
- msg(player, "§5 - kick <player> §rKick a player");
- msg(player, "§5 - leave §rLeave the party");
- msg(player, "§5 - promote <player> §rPromote a player");
- msg(player, "§5 - demote <player> §rDemote a player");
- msg(player, "§5 - disband §rDisband a party");
- msg(player, "§5 - list §rParty information");
- msg(player, "§5 - <nachricht> §rSends a party message");
- goto("wait");
- }
- arg0 = list.getIndex(args, 0);
- if(arg0 == "list") {
- if(size != 1) {
- msg.prefix(player, party_prefix, "§5/party list");
- } else {
- if(!player.isInParty(player)) {
- msg.prefix(player, party_prefix, "You are not in a party.");
- goto("wait");
- }
- list = party.getList(player.getPartyId(player));
- table = table.new("§5", 13, 7);
- msg(player, table.getStart(table));
- msg(player, table.get(table, "§lName", "§lRole"));
- msg(player, table.getMiddle(table));
- iter = list.iterator(list);
- while(hasNext(iter)) {
- p = player.get(next(iter));
- msg(player, table.get(table, player.getName(p), player.getPartyRank(p)));
- }
- msg(player, table.getEnd(table));
- }
- goto("wait");
- }
- if(arg0 == "leave") {
- if(size != 1) {
- msg.prefix(player, party_prefix, "§5/party leave");
- } else {
- if(!player.isInParty(player)) {
- msg.prefix(player, party_prefix, "You are not in a party.");
- goto("wait");
- }
- party.kickPlayer(player, "leave");
- }
- goto("wait");
- }
- if(arg0 == "disband") {
- if(size != 1) {
- msg.prefix(player, party_prefix, "§5/party disband");
- } else {
- if(!player.isInParty(player)) {
- msg.prefix(player, party_prefix, "You are not in a party.");
- goto("wait");
- }
- if(!player.isPartyLeader(player)) {
- msg.prefix(player, party_prefix, "You are not the party leader.");
- goto("wait");
- }
- party.delete(player.getPartyId(player));
- }
- goto("wait");
- }
- if(arg0 == "kick") {
- if(size != 2) {
- msg.prefix(player, party_prefix, "§5/party kick <player>");
- } else {
- if(!player.isInParty(player)) {
- msg.prefix(player, party_prefix, "You are not in a party.");
- goto("wait");
- }
- if(!player.isPartyLeaderOrMod(player)) {
- msg.prefix(player, party_prefix, "You are not leader or moderator of the party.");
- goto("wait");
- }
- pname = list.getIndex(args, 1);
- if(!checkIfEverOnline(pname)) {
- msg.prefix(player, party_prefix, "This player has never been online.");
- goto("wait");
- }
- p = read.player(pname);
- if(p == null) {
- msg.prefix(player, party_prefix, "This player is not online.");
- goto("wait");
- }
- if(player == p) {
- msg.prefix(player, party_prefix, "You can´t apply that to yourself.");
- goto("wait");
- }
- if(!party.same(p, player)) {
- msg.prefix(player, party_prefix, "This player is not in your party.");
- goto("wait");
- }
- ownrank = player.getPartyRank(player);
- if(ownrank == "Moderator") {
- if(player.isPartyLeaderOrMod(p)) {
- msg.prefix(player, party_prefix, "§rDu darfst diesen Spieler nicht kicken");
- goto("wait");
- }
- }
- party.kickPlayer(p, "kick");
- }
- goto("wait");
- }
- if(arg0 == "promote" || arg0 == "demote") {
- if(size != 2) {
- msg.prefix(player, party_prefix, concat("§5/party ", arg0, " <player>"));
- } else {
- pname = list.getIndex(args, 1);
- if(!player.isInParty(player)) {
- msg.prefix(player, party_prefix, "You are not in a party.");
- goto("wait");
- }
- if(!player.isPartyLeader(player)) {
- msg.prefix(player, party_prefix, "You are not the party leader.");
- goto("wait");
- }
- if(!checkIfEverOnline(pname)) {
- msg.prefix(player, party_prefix, "This player has never been online.");
- goto("wait");
- }
- p = read.player(pname);
- if(p == null) {
- msg.prefix(player, party_prefix, "This player is not online.");
- goto("wait");
- }
- if(player == p) {
- msg.prefix(player, party_prefix, "You can´t apply that to yourself.");
- goto("wait");
- }
- if(!party.same(p, player)) {
- msg.prefix(player, party_prefix, "This player is not in your party.");
- goto("wait");
- }
- partyid = player.getPartyId(player);
- rank = player.getPartyRank(p);
- if(arg0 == "promote") {
- if(rank == "Player") {
- player.setPartyRank(p, "Moderator");
- party.sendMessage(partyid, concat("§r", pname, " is now Moderator."));
- } elseif(rank == "Moderator") {
- player.setPartyRank(p, "Leader");
- player.setPartyRank(player, "Moderator"); //Ex-Leader degradieren
- party.sendMessage(partyid, concat("§r", pname, " is now Leader."));
- }
- } elseif(arg0 == "demote") {
- if(rank == "Moderator") {
- player.setPartyRank(p, "Player");
- party.sendMessage(partyid, concat("§r", pname, " is no longer Moderator."));
- } else {
- msg.prefix(player, party_prefix, "This player cannot be demoted.");
- }
- }
- }
- goto("wait");
- }
- if(arg0 == "invite") {
- if(size != 2) {
- msg.prefix(player, party_prefix, "§5/party invite <player>");
- } else {
- if(!player.isInParty(player)) { //wenn nicht in party
- if(map.contains(invite_ids, player)) { //wenn id noch nicht zugewiesen
- partycounter++;
- }
- }
- pname = list.getIndex(args, 1);
- if(!checkIfEverOnline(pname)) {
- msg.prefix(player, party_prefix, "This player has never been online.");
- goto("wait");
- }
- p = read.player(pname);
- if(p == null) {
- msg.prefix(player, party_prefix, "This player is not online.");
- goto("wait");
- }
- if(player == p) {
- msg.prefix(player, party_prefix, "You can´t apply that to yourself.");
- goto("wait");
- }
- if(player.isInParty(player)) {
- if(!player.isPartyLeaderOrMod(player)) {
- msg.prefix(player, party_prefix, "You are not leader or moderator of the party.");
- goto("wait");
- }
- }
- if(player.isInParty(p)) {
- msg.prefix(player, party_prefix, "This player is already in your party.");
- goto("wait");
- }
- list = map.get(invitations, p);
- if(list == null) {
- list = list.new();
- map.add(invitations, p, list);
- }
- if(list.contains(list, player)) {
- msg.prefix(player, party_prefix, "This player already has an invitation from you.");
- goto("wait");
- }
- list.add(list, player);
- list.add(deluuid, player);
- list.add(delkeytime, time.getMillis());
- map.add(delkeytimes, p, list.new());
- list = map.get(delkeytimes, p);
- list.add(list, time.getMillis());
- map.add(invite_ids, player, partycounter);
- msg.prefix(player, party_prefix, "Invitation sent.");
- msg.prefix(p, party_prefix, concat(player_name, " invites you to a party."));
- msg(p, " §5=> §rAccept ? ", text.click("[§aYes§r] ", concat("/party accept ", player_name)), text.click("[§cNo§r]", concat("/party deny ", player_name)));
- sgoto(1200, "deletePartyInvitation"); //Einladung bleibt 1 Minute lang erhalten
- }
- goto("wait");
- }
- if(arg0 == "accept") {
- if(size != 2) {
- msg.prefix(player, party_prefix, "§5/party accept <player>");
- } else {
- if(player.isInParty(player)) {
- msg.prefix(player, party_prefix, "You are already in a party.");
- goto("wait");
- }
- pname = list.getIndex(args, 1);
- if(!checkIfEverOnline(pname)) {
- msg.prefix(player, party_prefix, "This player has never been online.");
- goto("wait");
- }
- p = read.player(pname);
- if(p == null) {
- msg.prefix(player, party_prefix, "This player is no longer online.");
- goto("wait");
- }
- list = map.get(invitations, player);
- if(list == null || !list.contains(list, p)) {
- msg.prefix(player, party_prefix, "This invitation is invalid.");
- goto("wait");
- }
- if(player.isInParty(p)) { //wenn einlader bereits in party
- partyid = player.getPartyId(p);
- if(map.get(invite_ids, p) == partyid) { //wenn partyid noch die gleiche ist wie bei einladung
- party.addPlayer(partyid, player);
- player.setPartyRank(player, "Player");
- } else {
- msg.prefix(player, party_prefix, "This player is already in another party.");
- goto("wait");
- }
- } else {
- partyid = map.get(invite_ids, p);
- party.setList(partyid, list.new());
- party.addPlayer(partyid, p);
- party.addPlayer(partyid, player);
- player.setPartyRank(p, "Leader");
- player.setPartyRank(player, "Player");
- msg.prefix(p, party_prefix, "The party was created.");
- }
- list.clear(list); //Einladungs-Liste von oben
- party.sendMessage(partyid, concat("§r", player_name, " joined the party."));
- }
- goto("wait");
- }
- if(arg0 == "deny") {
- if(size != 2) {
- msg.prefix(player, party_prefix, "§5/party deny <player>");
- } else {
- list = map.get(invitations, player);
- if(list != null) {
- pname = list.getIndex(args, 1);
- p = read.player(pname);
- if(p == null) {
- msg.prefix(player, party_prefix, "This player is no longer online.");
- goto("wait");
- }
- if(list == null || !list.contains(list, p)) {
- msg.prefix(player, party_prefix, "This invitation is invalid.");
- goto("wait");
- }
-
- index = list.getIndexOf(list, p);
- list.remove(list, p);
- list2 = map.get(delkeytimes, player);
- list.removeIndex(list2, index);
- p = read.player(pname);
- if(p != null) {
- msg.prefix(p, party_prefix, concat("§r", player_name, " has denied your invitation."));
- }
- msg.prefix(player, party_prefix, concat("Invitation from ", pname, " denied."));
- }
- }
- goto("wait");
- }
- if(player.isInParty(player)) {
- message = concat(pname, " §1| §r", text.concatList(args, " ", 0, list.getSize(args) - 1));
- party.sendMessage(player.getPartyId(player), message);
- goto("wait");
- }
- goto("partyhelp");
- }
- goto("wait");
- @deletePartyInvitation
- player = list.getIndex(deluuid, 0);
- list = map.get(invitations, player);
- list2 = map.get(delkeytimes, player);
- if(list != null) {
- if(list.getSize(list) != 0) {
- keytime = list.getIndex(delkeytime, 0);
- keytime2 = list.getIndex(list2, 0);
- list.remove(delkeytime, keytime);
- if(keytime == keytime2) {
- index = list.getIndexOf(list2, keytime2);
- list.remove(list2, keytime2);
- list.removeIndex(list, index);
- }
- }
- }
- goto("wait");
- function party.kickPlayer(player, reason) {
- party_id = player.getPartyId(player);
- //Nachrichten
- p_name = player.getName(player);
- if(reason == "kick") {
- message = concat("§r", p_name, " has been kicked out of the party.");
- } else {
- message = concat("§r", p_name, " has left the party.");
- }
- party.sendMessage(party_id, message);
-
- //aus Partyliste entfernen
- list = party.getList(party_id);
- list.remove(list, player.getUuid(player));
-
- //ID und Rang entfernen
- rank = player.getPartyRank(player);
- player.delPartyRank(player);
- player.delPartyId(player);
-
- //Einladungen löschen
- map.remove($invitations, player);
- map.remove($delkeytimes, player);
-
- //Wenn Party keine zwei Spieler mehr hat, dann Party auflösen
- if(list.getSize(list) < 2) {
- party.delete(party_id);
- return;
- }
-
- //Wenn Spieler Partyleiter war, neuen Partyleiter ernennen
- if(rank == "Leader") {
- new_player = player.get(list.getIndex(list, 0));
- player.setPartyRank(new_player, "Leader");
- party.sendMessage(party_id, concat("§r", player.getName(new_player), " is now Leader."));
- }
- }
- function party.sendMessage(party_id, message) {
- iter = list.iterator(party.getList(party_id));
- while(hasNext(iter)) {
- msg.prefix(player.get(next(iter)), $party_prefix, message);
- }
- }
- function party.delete(party_id) {
- party.sendMessage(party_id, "Party disbanded.");
- iter = list.iterator(party.getList(party_id));
- while(hasNext(iter)) {
- player = player.get(next(iter));
- player.delPartyRank(player);
- player.delPartyId(player);
- }
- }
|