Paylaşım [ÜCRETSİZ] Gelişmiş Parti Sistemi

  • Konuyu Başlatan Konuyu Başlatan Senpai
  • Başlangıç tarihi Başlangıç tarihi
  • Görüntüleme 599
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

Senpai

Züm... Zümrü... Zümrüt...
Yasaklandı
Katılım
24 Kasım 2014
Mesajlar
816
Elmaslar
341
Puan
14.845
Yaş
27
Konum
Istanbul
Minecraft
NaN2
Kendi projem için yaptığım parti sistemini eklenti haline getirdiğim için eski sürümünü paylaşma kararı aldım. Bilinen herhangi bir hatası yok ancak kullanan olursa geri bildirim verebilir.


1737798248456.webp


1737798319744.webp

1737798381607.webp

1737798394160.webp

1737798404479.webp

1737798412753.webp

1737798424174.webp
 

Ekli dosyalar

  • 1737798299620.webp
    1737798299620.webp
    12,3 KB · Görüntüleme: 79
skript-reflect, skript-gui, ve SkBee - Skript 2.10 versiyonunu kullanın.

Kod:
import:
    java.util.HashMap
    java.util.ArrayList
    java.util.UUID
    java.lang.reflect.Field
    java.util.regex.Pattern

    net.md_5.bungee.api.chat.ComponentBuilder
    net.md_5.bungee.api.chat.HoverEvent
    net.md_5.bungee.api.chat.TextComponent
    net.md_5.bungee.api.ChatColor

    org.bukkit.Bukkit
    org.bukkit.inventory.ItemStack
    org.bukkit.Material
    org.bukkit.inventory.meta.SkullMeta
    org.bukkit.event.inventory.ClickType
    
    com.mojang.authlib.GameProfile
    com.mojang.authlib.properties.Property

    org.bukkit.event.player.PlayerJoinEvent
    org.bukkit.event.player.PlayerQuitEvent

on load:
    set {_parties} to new HashMap()
    set {_members} to new HashMap()
    set {_partyRanks} to new HashMap()
    set {_partyLores} to new HashMap()
    set {_playerParties} to new HashMap()
    set {_partyMinLevel} to new HashMap() # on java version, do FactoryManager.getFactory(FactoryManagerDistribution.PlayerFactory).getPlayerData(player.getUniqueId()).getGlobalLevel()
    set {_partyNote} to new HashMap()
    set {party::levelInput::*} to false
    delete {party::bannedWords::*}
    delete {party::bannedPatterns::*}
    
    # regex banned word patterns - not very efficient but it works?
    set {party::bannedPatterns::1} to "[o0öÖ][çcÇC]"
    set {party::bannedPatterns::2} to "*"
    set {party::bannedPatterns::3} to "[aA4@][qQkK]"
    set {party::bannedPatterns::4} to "s[iı1]k"
    set {party::bannedPatterns::5} to "y[a4@]rr?[a4@]k"
    set {party::bannedPatterns::6} to "[o0öÖ]r[o0öÖ]sp[uüÜ]"
    set {party::bannedPatterns::7} to "p[iı1][çc]"
    set {party::bannedPatterns::8} to "[aA4@]m[iı1İ][nN][aA4@]"
    set {party::bannedPatterns::9} to "g[oöÖ0]t"
    set {party::bannedPatterns::10} to "s[iı1]kt[iı1]r"
    set {party::bannedPatterns::11} to "s[iı1]k[iı1]k"
    set {party::bannedPatterns::12} to "[iı1]bn[eE3]"
    set {party::bannedPatterns::13} to "[aA4@]m"
    # regex banned word patterns end

    set {parties} to {_parties}
    set {party::members} to {_members}
    set {party::ranks} to {_partyRanks}
    set {party::lores} to {_partyLores}
    set {party::playerParties} to {_playerParties}
    set {party::minLevel} to {_partyMinLevel}
    set {party::note} to {_partyNote}
    set {party::filter::*} to "ÜYE_AZALAN"
    set {_partyInvites} to new HashMap()
    set {party::invites} to {_partyInvites}
    set {party::inviteTimeout} to 30
    set {party::chat::*} to false
    set {party::hidden::*} to false
    set {_partyPolls} to new HashMap()
    set {party::polls} to {_partyPolls}
    set {party::poll::votes::*} to 0
    set {party::muted::*} to false

function turkceEk(text: text) :: text:
    set {_lc} to last character of {_text}
    set {_lv} to ""
    set {_karakterler::*} to {_text} split at ""
    loop {_karakterler::*}:
        if loop-value matches "[aeıioöuü]":
            set {_lv} to loop-value
    
    if {_lc} matches "[aıou]":
        if {_lv} is "i" or "e":
            return "nin"
        else if {_lv} is "ı" or "a":
            return "nın"
        else if {_lv} is "o" or "u":
            return "nun"
        else if {_lv} is "ö" or "ü":
            return "nün"
    return "in"

function getPartyRankName(rank: number) :: text:
    if {_rank} is 3:
        return "Parti Kurucusu"
    else if {_rank} is 2:
        return "Parti Görevlisi"
    return "Parti Üyesi"   

function getPartyRankDisplay(rank: number) :: text:
    set {_rankName} to getPartyRankName({_rank})
    if {_rank} is 3:
        return "&6✪✪✪"
    else if {_rank} is 2:
        return "&e✪✪"
    return "&7✪"

function getPlayerParty(p: player) :: text:
    set {_uuid} to {_p}'s uuid
    return {party::playerParties}.get({_uuid})

function isInParty(p: player) :: boolean:
    set {_uuid} to {_p}'s uuid
    set {_result} to {party::playerParties}.containsKey({_uuid})
    if {_result} is true:
        return true
    return false

function getPartyRank(p: player) :: number:
    set {_uuid} to {_p}'s uuid
    set {_partyOwner} to getPlayerParty({_p})
    if {_partyOwner} is set:
        return {party::ranks}.get({_partyOwner}).get({_uuid})
    return 0

function formatList(list: strings) :: text:
    set {_size} to size of {_list::*}
    if {_size} is 0:
        return ""
    if {_size} is 1:
        return {_list::1}
    
    set {_result} to ""
    loop {_size} times:
        if loop-number is {_size}:
            set {_result} to "%{_result}% ve %{_list::%loop-number%}%"
        else if loop-number is 1:
            set {_result} to {_list::1}
        else:
            set {_result} to "%{_result}%, %{_list::%loop-number%}%"
    return {_result}

function findNextPartyOwner(members: object, ranks: object) :: text:
    set {_highestRank} to 0
    set {_uyeler::*} to ""
    set {_index} to 1
    
    loop ...{_members}.toArray():
        set {_memberUUID} to loop-value
        set {_member} to {_memberUUID}.toString() parsed as offline player
        if {_member} is online:
            set {_rank} to {_ranks}.get({_memberUUID})
            if {_rank} > {_highestRank}:
                set {_highestRank} to {_rank}
                set {_uyeler::*} to ""
                set {_uyeler::%{_index}%} to {_memberUUID}
            else if {_rank} is {_highestRank}:
                set {_uyeler::%{_index}%} to {_memberUUID}
        add 1 to {_index}
    
    if size of {_uyeler::*} is 0:
        loop ...{_members}.toArray():
            set {_memberUUID} to loop-value
            set {_member} to {_memberUUID}.toString() parsed as offline player
            if {_member} is online:
                set {_uyeler::%{_index}%} to {_memberUUID}
            add 1 to {_index}
    
    if size of {_uyeler::*} > 0:
        set {_randomIndex} to random integer between 1 and size of {_uyeler::*}
        return {_uyeler::%{_randomIndex}%}
    return ""

function createCustomSkull(texture: text) :: item:
    set {_item} to new ItemStack(Material.PLAYER_HEAD, 1)
    set {_meta} to {_item}.getItemMeta()
    
    set {_profile} to new GameProfile(UUID.randomUUID(), null)
    {_profile}.getProperties().put("textures", new Property("textures", {_texture}))
    
    set {_field} to {_meta}.getClass().getDeclaredField("profile")
    if {_field} is not set:
        set {_field} to {_meta}.getClass().getDeclaredField("playerProfile")
    
    {_field}.setAccessible(true)
    {_field}.set({_meta}, {_profile})
    
    {_item}.setItemMeta({_meta})
    return {_item}

function createPartyItem(owner: text, members: object, ranks: object, lore: text, viewer: player) :: item:
    set {_ownerPlayer} to {_owner} parsed as offline player
    set {_partyNote} to {party::note}.get({_owner})
    set {_minLevel} to {party::minLevel}.get({_owner})
    set {_memberCount} to {_members}.size()
    
    set {_item} to new ItemStack(Material.PLAYER_HEAD, 1)
    set {_meta} to {_item}.getItemMeta()
    {_meta}.setOwningPlayer({_ownerPlayer})
    {_item}.setItemMeta({_meta})
    
    set name of {_item} to "&6%{_ownerPlayer}%'%turkceEk({_ownerPlayer}'s name)% Partisi"
    set {_loreList::*} to "&8Parti"
    if {_partyNote} is set:
        if {_partyNote} is not "":
            add "%nl%&7Not: &f%{_partyNote}%" to {_loreList::*}
        else:
            add "%nl%&7Not: &fBelirtilmedi." to {_loreList::*}
    else:
        add "%nl%&7Not: &fBelirtilmedi." to {_loreList::*}
    
    if {_minLevel} is set:
        add "&7Minimum Seviye: &f%{_minLevel}%" to {_loreList::*}
    else:
        add "&7Minimum Seviye: &fBelirtilmedi." to {_loreList::*}
    
    add "%nl%&7Üyeler:" to {_loreList::*}
    
    loop 5 times:
        if loop-number <= {_memberCount}:
            set {_memberUUID} to {_members}.get(loop-number - 1)
            set {_member} to {_memberUUID}.toString() parsed as offline player
            set {_rank} to {party::ranks}.get({_owner}).get({_memberUUID})
            
            if {_rank} is 3:
                add "&8- &6%{_member}%" to {_loreList::*}
            else if {_rank} is 2:
                add "&8- &b%{_member}%" to {_loreList::*}
            else:
                add "&8- &7%{_member}%" to {_loreList::*}
        else:
            add "&8- Boş" to {_loreList::*}
    
    if {_owner} is not {_viewer}'s uuid:
        add "%nl%&eKatılmak için tıklayın!" to {_loreList::*}
    
    set lore of {_item} to {_loreList::*}
    return {_item}

function sortParties(parties: objects, filter: text) :: objects:
    set {_sorted::*} to {_parties::*}
    set {_size} to size of {_sorted::*}
    
    loop {_size} times:
        set {_i} to 1
        loop ({_size} - 1) times:
            set {_current} to {_sorted::%{_i}%}
            set {_next} to {_sorted::%{_i}+1%}
            set {_shouldSwap} to false
            
            if {_filter} is "ÜYE_AZALAN":
                set {_currentSize} to {party::members}.get({_current}).size()
                set {_nextSize} to {party::members}.get({_next}).size()
                if {_currentSize} < {_nextSize}:
                    set {_shouldSwap} to true
            
            else if {_filter} is "ÜYE_ARTAN":
                set {_currentSize} to {party::members}.get({_current}).size()
                set {_nextSize} to {party::members}.get({_next}).size()
                if {_currentSize} > {_nextSize}:
                    set {_shouldSwap} to true
            
            else if {_filter} is "SEVİYE_AZALAN":
                set {_currentLevel} to {party::minLevel}.get({_current}) ? 0
                set {_nextLevel} to {party::minLevel}.get({_next}) ? 0
                if {_currentLevel} < {_nextLevel}:
                    set {_shouldSwap} to true
            
            else if {_filter} is "SEVİYE_ARTAN":
                set {_currentLevel} to {party::minLevel}.get({_current}) ? 0
                set {_nextLevel} to {party::minLevel}.get({_next}) ? 0
                if {_currentLevel} > {_nextLevel}:
                    set {_shouldSwap} to true
            
            if {_shouldSwap} is true:
                set {_temp} to {_sorted::%{_i}%}
                set {_sorted::%{_i}%} to {_sorted::%{_i}+1%}
                set {_sorted::%{_i}+1%} to {_temp}
            
            add 1 to {_i}
    
    return {_sorted::*}

function getNextFilter(currentFilter: text) :: text:
    if {_currentFilter} is "ÜYE_AZALAN":
        return "ÜYE_ARTAN"
    else if {_currentFilter} is "ÜYE_ARTAN":
        return "SEVİYE_AZALAN"
    else if {_currentFilter} is "SEVİYE_AZALAN":
        return "SEVİYE_ARTAN"
    else:
        return "ÜYE_AZALAN"

function openPartyGUI(p: player, page: number = 1):
    set {_partyKeys::*} to ...{parties}.keySet().toArray()
    set {_totalParties} to size of {_partyKeys::*}
    set {_totalPages} to ceil({_totalParties} / 21)
    if {_totalPages} < 1:
        set {_totalPages} to 1

    create gui with virtual chest with 6 rows named "&8Parti Bulucu (%{_page}%/%{_totalPages}%)":       
        loop integers from 0 to 8:
            make gui slot loop-value with gray stained glass pane named " "
        loop integers from 36 to 44:
            make gui slot loop-value with gray stained glass pane named " "
            
        make gui slot 9 with dark gray stained glass pane named " "
        make gui slot 18 with dark gray stained glass pane named " "
        make gui slot 27 with dark gray stained glass pane named " "
        make gui slot 17 with dark gray stained glass pane named " "
        make gui slot 26 with dark gray stained glass pane named " "
        make gui slot 35 with dark gray stained glass pane named " "
        
        set {_slot} to 10
        set {_foundParty} to false
        set {_itemCount} to 0
        
        set {_startIndex} to ({_page} - 1) * 21
        
        if {_partyKeys::*} is not set:
            make gui slot 22 with red wool named "&cHiç parti bulunmuyor!" with lore "&7Tıklayarak parti oluşturun!":
                set {_uuid} to player's uuid
                if {party::playerParties}.containsKey({_uuid}):
                    send "&cZaten bir partide bulunuyorsun! &7/parti ayrıl &ckomutu ile mevcut partinden ayrılabilirsin."
                    stop
                
                set {_partyName} to "%player%'%turkceEk(player's name)% Partisi"
                {parties}.put({_uuid}, {_partyName})
                
                set {_memberList} to new ArrayList()
                {_memberList}.add({_uuid})
                {party::members}.put({_uuid}, {_memberList})
                
                set {_rankMap} to new HashMap()
                {_rankMap}.put({_uuid}, 3)
                {party::ranks}.put({_uuid}, {_rankMap})
                
                {party::lores}.put({_uuid}, "")
                {party::playerParties}.put({_uuid}, {_uuid})
                
                send "&aBaşarıyla parti oluşturuldu: &f%{_partyName}%"
                openPartyGUI(player)
        else:
            set {_sortedParties::*} to sortParties({_partyKeys::*}, {party::filter::%{_p}'s uuid%})
            
            loop {_sortedParties::*}:
                add 1 to {_itemCount}
                if {_itemCount} <= {_startIndex}:
                    continue
                
                set {_owner} to loop-value
                
                if {party::hidden::%{_owner}%} is true:
                    continue
                
                set {_members} to {party::members}.get({_owner})
                if {_members} is not set:
                    continue
                
                set {_hasOnline} to false
                loop ...{_members}.toArray():
                    set {_memberUUID} to loop-value-1
                    set {_member} to {_memberUUID}.toString() parsed as offline player
                    if {_member} is online:
                        set {_hasOnline} to true
                        exit 1 loop
                
                if {_hasOnline} is true:
                    set {_foundParty} to true
                    set {_item} to createPartyItem({_owner}, {_members}, {party::ranks}.get({_owner}), {party::lores}.get({_owner}), {_p})
                    
                    make gui slot {_slot} with {_item}:
                        if {_owner} is player's uuid:
                            send "&cBu senin partin!"
                            stop
                            
                        if {party::playerParties}.containsKey(player's uuid):
                            send "&cZaten bir partide bulunuyorsun! &7/parti ayrıl &ckomutu ile mevcut partinden ayrılabilirsin."
                            stop
                        
                        if {parties}.containsKey({_owner}) is false:
                            send "&cBu parti artık mevcut değil!"
                            stop
                        
                        set {_ownerPlayer} to {_owner}.toString() parsed as offline player
                        if {_ownerPlayer} is online:
                            set {_minLevel} to {party::minLevel}.get({_owner})
                            if {_minLevel} is set:
                                send "&cBu partiye katılmak için &7%{_minLevel}% &cseviye olmalısın!"
                                stop
                            sendJoinRequest(player, {_ownerPlayer})
                        else:
                            send "&cParti sahibi çevrimiçi olmadığı için katılamazsın!"
                        close player's inventory
                    
                    add 1 to {_slot}
                    if mod({_slot}, 9) is 8:
                        add 2 to {_slot}
                    
                    if {_slot} >= 35:
                        exit loop
        
        if {_foundParty} is false:
            send "&cHiç parti bulunmuyor!" to {_p}
            stop
        
        if {_page} > 1:
            set {_prevArrow} to createCustomSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMzdhZWU5YTc1YmYwZGY3ODk3MTgzMDE1Y2NhMGIyYTdkNzU1YzYzMzg4ZmYwMTc1MmQ1ZjQ0MTlmYzY0NSJ9fX0=")
            set name of {_prevArrow} to "&aÖnceki Sayfa"
            make gui slot 48 with {_prevArrow}:
                openPartyGUI(player, {_page} - 1)
        
        make gui slot 49 with barrier named "&cKapat":
            close player's inventory

        set {_helpSkull} to createCustomSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMjA0MWU0NjVkNWYwYWM4NDFiMWQyNmIwNDY3NGViNDJlMmE2NTkwYWFjZDQzMTc0NjE4NDliMjUyMjQ3NmJhYiJ9fX0=")
        set name of {_helpSkull} to "&aYardım"
        set lore of {_helpSkull} to "&7Parti komutlarını görüntüleyin.%nl%%nl%&eGörüntülemek için tıklayın!"
    
        make gui slot 53 with {_helpSkull}:
            sendPartyHelp(player, 1)
        
        if {_page} < {_totalPages}:
            set {_nextArrow} to createCustomSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNjgyYWQxYjljYjRkZDIxMjU5YzBkNzVhYTMxNWZmMzg5YzNjZWY3NTJiZTM5NDkzMzgxNjRiYWM4NGE5NmUifX19")
            set name of {_nextArrow} to "&aSonraki Sayfa"
            make gui slot 50 with {_nextArrow}:
                openPartyGUI(player, {_page} + 1)
        
        set {_refreshSkull} to createCustomSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvY2UwNzIzNTVhZmE2MTQyYmFmNTY2MGM5MDY4N2M4YzUwZGM2M2U1Nzc4MWRkYmNhNWNlM2YzNTU0ZDFlMzc1ZSJ9fX0=")
        set name of {_refreshSkull} to "&aYenile"
        set lore of {_refreshSkull} to "&7Aktif olan partilerin listesini%nl%&7yenileyin.%nl%%nl%&eYenilemek için tıklayın!"

        set {_filterSkull} to createCustomSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZmE0NDk4NmViZmI4NzU3ZGExMzc1Zjc0OTYxMDM0NTRlNmZjMWM1ZWY3M2QwMTNmYWNlNzQ5OWIxMzE4NGY3In19fQ==")
        set name of {_filterSkull} to "&aSırala"
        
        set {_filterLore::*} to ""
        
        if {party::filter::%{_p}'s uuid%} is "ÜYE_AZALAN":
            add "&b➥ Üye Azalan" to {_filterLore::*}
        else:
            add "&7Üye Azalan" to {_filterLore::*}
            
        if {party::filter::%{_p}'s uuid%} is "ÜYE_ARTAN":
            add "&b➥ Üye Artan" to {_filterLore::*}
        else:
            add "&7Üye Artan" to {_filterLore::*}
            
        if {party::filter::%{_p}'s uuid%} is "SEVİYE_AZALAN":
            add "&b➥ Seviye Azalan" to {_filterLore::*}
        else:
            add "&7Seviye Azalan" to {_filterLore::*}
            
        if {party::filter::%{_p}'s uuid%} is "SEVİYE_ARTAN":
            add "&b➥ Seviye Artan" to {_filterLore::*}
        else:
            add "&7Seviye Artan" to {_filterLore::*}
        
        add "" to {_filterLore::*}
        add "&eSıradaki seçeneğe geçmek için tıklayın!" to {_filterLore::*}
        add "&eSağ tıklayarak ayarları sıfırlayın" to {_filterLore::*}
        
        set lore of {_filterSkull} to {_filterLore::*}
        
        make gui slot 45 with {_filterSkull}:
            if click type is right mouse button:
                set {party::filter::%player's uuid%} to "ÜYE_AZALAN"
                openPartyGUI(player, {_page})
            else:
                set {party::filter::%player's uuid%} to getNextFilter({party::filter::%player's uuid%})
                openPartyGUI(player, {_page})
        
        make gui slot 46 with {_refreshSkull}:
            openPartyGUI(player, {_page})
    
    open last gui to {_p}

command /parti [<text>] [<text>]:
    aliases: /party, /p
    trigger:
        if arg-1 is not set:
            openPartyGUI(player)
            stop

        if arg-1 is "oluştur" or "kur":
            set {_uuid} to player's uuid
            if {party::playerParties}.containsKey({_uuid}):
                send "&cZaten bir partide bulunuyorsun! &7/parti ayrıl &ckomutu ile mevcut partinden ayrılabilirsin."
                stop
            
            set {_partyName} to "%player%'%turkceEk(player's name)% Partisi"
            {parties}.put({_uuid}, {_partyName})
            
            set {_memberList} to new ArrayList()
            {_memberList}.add({_uuid})
            {party::members}.put({_uuid}, {_memberList})
            
            set {_rankMap} to new HashMap()
            {_rankMap}.put({_uuid}, 3)
            {party::ranks}.put({_uuid}, {_rankMap})
            
            {party::lores}.put({_uuid}, "")
            {party::playerParties}.put({_uuid}, {_uuid})
            
            send "&aBaşarıyla parti oluşturuldu: &f%{_partyName}%"

        else if arg-1 is "at":
            if arg-2 is not set:
                send "&cAtmak istediğiniz oyuncuyu belirtmelisin!"
                stop
                
            set {_target} to arg-2 parsed as offline player
            if {_target} is not set:
                send "&cBelirttiğiniz oyuncu &7(%arg-2%) &cbulunamadı!"
                stop
                
            set {_uuid} to player's uuid
            set {_targetUUID} to {_target}'s uuid
            set {_partyOwner} to getPlayerParty(player)
            
            if {_partyOwner} is not set:
                send "&cHerhangi bir partide bulunmuyorsun! /parti komutu ile herkese açık partileri keşfedebilirsin!"
                stop
                
            set {_rank} to getPartyRank(player)
            if {_rank} < 2:
                send "&7Bu komutu kullanmak için en az &6Parti Görevlisi &7yetkisine sahip olmalısın!"
                stop
                
            set {_targetParty} to getPlayerParty({_target})
            if {_targetParty} is not {_partyOwner}:
                send "&cBu oyuncu senin partinde değil!"
                stop
                
            set {_targetRank} to getPartyRank({_target})
            if {_targetRank} >= {_rank}:
                send "&cKendinle aynı veya daha yüksek rütbedeki oyuncuları atamazsın!"
                stop
                
            set {_members} to {party::members}.get({_partyOwner})
            {_members}.remove({_targetUUID})
            set {_ranks} to {party::ranks}.get({_partyOwner})
            {_ranks}.remove({_targetUUID})
            {party::playerParties}.remove({_targetUUID})
            
            send "&6[P] &f%{_target}% &7adlı oyuncu partiden atıldı!" to player
            if {_target} is online:
                send "&cPartiden atıldın!" to {_target}
            
            loop ...{_members}.toArray():
                set {_memberUUID} to loop-value
                set {_member} to {_memberUUID}.toString() parsed as offline player
                if {_member} is online:
                    if {_memberUUID} is not {_uuid}:
                        send "&f%{_target}% &7partiden atıldı!" to {_member}

        else if arg-1 is "açıklama" or "bilgi":
            set {_uuid} to player's uuid
            if {party::playerParties}.containsKey({_uuid}) is false:
                send "&cHerhangi bir partide bulunmuyorsun! /parti komutu ile herkese açık partileri keşfedebilirsin!"
                stop
                
            if arg-2 is not set:
                set {_partyOwner} to getPlayerParty(player)
                set {_lore} to {party::lores}.get({_partyOwner})
                if {_lore} is set:
                    if {_lore} is not "":
                        send "&7Parti açıklaması: &f%{_lore}%"
                    else:
                        send "&cPartinin açıklaması bulunmuyor!"
                stop
            
            set {_rank} to getPartyRank(player)
            if {_rank} < 2:
                send "&7Bu komutu kullanmak için en az &6Parti Görevlisi &7yetkisine sahip olmalısın!"
                stop
            
            set {_partyOwner} to getPlayerParty(player)
            {party::lores}.put({_partyOwner}, arg-2)
            send "&aParti açıklaması güncellendi: &f%arg-2%"
            play sound "entity.experience_orb.pickup" with volume 0.5 to player

        else if arg-1 is "kapat" or "sil" or "men":
            set {_uuid} to player's uuid
            if {parties}.containsKey({_uuid}) is false:
                send "&cHerhangi bir partide bulunmuyorsun! /parti komutu ile herkese açık partileri keşfedebilirsin!"
                stop
            
            set {_memberList} to {party::members}.get({_uuid})
            loop ...{_memberList}.toArray():
                set {_memberUUID} to loop-value
                set {_member} to {_memberUUID}.toString() parsed as offline player
                {party::playerParties}.remove({_memberUUID})
                if {_member} is online:
                    send "&cParti dağıtıldı!" to {_member}
            
            {parties}.remove({_uuid})
            {party::members}.remove({_uuid})
            {party::ranks}.remove({_uuid})
            {party::lores}.remove({_uuid})
            send "&aParti başarıyla dağıtıldı!"

        else if arg-1 is "liste":
            set {_uuid} to player's uuid
            if {party::playerParties}.containsKey({_uuid}) is false:
                send "&cHerhangi bir partide değilsin!"
                stop
            
            set {_partyOwner} to getPlayerParty(player)
            set {_partyName} to {parties}.get({_partyOwner})
            set {_members} to {party::members}.get({_partyOwner})
            set {_ranks} to {party::ranks}.get({_partyOwner})
            set {_lore} to {party::lores}.get({_partyOwner})
            
            send ""
            send "&6%{_partyName}%"
            if {_lore} is set:
                if {_lore} is not "":
                    send "&7Açıklama: &f%{_lore}%"
            
            set {_memberList::*} to ""
            set {_index} to 1
            
            loop ...{_members}.toArray():
                set {_memberUUID} to loop-value
                set {_member} to {_memberUUID}.toString() parsed as offline player
                set {_rank} to {party::ranks}.get({_partyOwner}).get({_memberUUID})
                set {_stars} to getPartyRankDisplay({_rank})
                
                if {_member} is online:
                    set {_memberList::%{_index}%} to "&a%{_member}% %{_stars}%"
                else:
                    set {_memberList::%{_index}%} to "&7%{_member}% %{_stars}%"
                add 1 to {_index}
            
            send "&7Üyeler: &f%formatList({_memberList::*})%"
            send ""

        else if arg-1 is "yardım":
            if arg-2 is set:
                set {_page} to arg-2 parsed as number
                if {_page} is not set:
                    set {_page} to 1
            else:
                set {_page} to 1
            sendPartyHelp(player, {_page})

        else if arg-1 is "not":
            set {_uuid} to player's uuid
            if {party::playerParties}.containsKey({_uuid}) is false:
                send "&cHerhangi bir partide bulunmuyorsun! /parti komutu ile herkese açık partileri keşfedebilirsin!"
                stop
            
            set {_partyOwner} to getPlayerParty(player)
            set {_rank} to getPartyRank(player)
            if {_rank} < 2:
                send "&7Bu komutu kullanmak için en az &6Parti Görevlisi &7yetkisine sahip olmalısın!"
                stop
                
            if arg-2 is not set:
                send "&cLütfen bir not belirtin!"
                stop
            
            if length of arg-2 > 16:
                send "&cNot en fazla &716 &ckarakter olabilir!"
                stop
            
            if containsSwearWord(arg-2) is "true":
                send "&cUygunsuz kelimeler kullanılamaz!"
                stop
            
            {party::note}.put({_partyOwner}, arg-2)
            send "&aParti notu güncellendi: &f%arg-2%"
            play sound "entity.experience_orb.pickup" with volume 0.5 to player
        
        else if arg-1 is "seviye":
            set {_uuid} to player's uuid
            if {party::playerParties}.containsKey({_uuid}) is false:
                send "&cHerhangi bir partide bulunmuyorsun! /parti komutu ile herkese açık partileri keşfedebilirsin!"
                stop
            
            set {_partyOwner} to getPlayerParty(player)
            set {_rank} to getPartyRank(player)
            if {_rank} < 2:
                send "&7Bu komutu kullanmak için en az &6Parti Görevlisi &7yetkisine sahip olmalısın!"
                stop
            
            set {party::levelInput::%{_uuid}%} to true
            send "&cSeviye belirtmelisiniz!" to player

        else if arg-1 is "ayrıl":
            set {_uuid} to player's uuid
            if {party::playerParties}.containsKey({_uuid}) is false:
                send "&cHerhangi bir partide bulunmuyorsun! /parti komutu ile herkese açık partileri keşfedebilirsin!"
                stop
            
            set {_partyOwner} to getPlayerParty(player)
            set {_members} to {party::members}.get({_partyOwner})
            set {_ranks} to {party::ranks}.get({_partyOwner})
            
            if {_uuid} is {_partyOwner}:
                if {_members}.size() is 1:
                    {parties}.remove({_uuid})
                    {party::members}.remove({_uuid})
                    {party::ranks}.remove({_uuid})
                    {party::lores}.remove({_uuid})
                    {party::playerParties}.remove({_uuid})
                    send "&cParti dağıtıldı!"
                    stop
                
                {_members}.remove({_uuid})
                set {_newOwner} to findNextPartyOwner({_members}, {_ranks})
                
                if {_newOwner} is "":
                    loop ...{_members}.toArray():
                        set {_memberUUID} to loop-value
                        set {_member} to {_memberUUID}.toString() parsed as offline player
                        {party::playerParties}.remove({_memberUUID})
                        if {_member} is online:
                            send "&cParti dağıtıldı!" to {_member}
                    
                    {parties}.remove({_uuid})
                    {party::members}.remove({_uuid})
                    {party::ranks}.remove({_uuid})
                    {party::lores}.remove({_uuid})
                    send "&cParti dağıtıldı!"
                else:
                    set {_newOwnerPlayer} to {_newOwner}.toString() parsed as offline player
                    set {_partyName} to "%{_newOwnerPlayer}%'%turkceEk({_newOwnerPlayer}'s name)% Partisi"
                    
                    {parties}.remove({_uuid})
                    {parties}.put({_newOwner}, {_partyName})
                    {party::members}.put({_newOwner}, {_members})
                    {_ranks}.put({_newOwner}, 3)
                    {party::ranks}.put({_newOwner}, {_ranks})
                    {party::lores}.put({_newOwner}, {party::lores}.get({_uuid}))
                    
                    loop ...{_members}.toArray():
                        set {_memberUUID} to loop-value
                        {party::playerParties}.put({_memberUUID}, {_newOwner})
                        
                        set {_member} to {_memberUUID}.toString() parsed as offline player
                        if {_member} is online:
                            send "&cParti liderliği &f%{_newOwnerPlayer}% &7adlı oyuncuya devredildi!" to {_member}
                    
                    {party::playerParties}.remove({_uuid})
                    send "&cPartiden ayrıldın!"
            else:
                {_members}.remove({_uuid})
                {_ranks}.remove({_uuid})
                {party::playerParties}.remove({_uuid})
                
                loop ...{_members}.toArray():
                    set {_memberUUID} to loop-value
                    set {_member} to {_memberUUID}.toString() parsed as offline player
                    if {_member} is online:
                        send "&6[P] &f%player% &7partiden ayrıldı!" to {_member}
                
                send "&cPartiden ayrıldın!"

        else if arg-1 is "davet":
            if arg-2 is not set:
                send "&cDavet etmek istediğiniz oyuncuyu belirtmelisin!"
                stop
                
            set {_target} to arg-2 parsed as player
            if {_target} is not set:
                send "&cDavet etmeye çalıştığınız oyuncu &7(%arg-2%) &cbulunamadı!"
                stop
                
            set {_uuid} to player's uuid
            if {party::playerParties}.containsKey({_uuid}) is false:
                send "&cHerhangi bir partide bulunmuyorsun! /parti komutu ile herkese açık partileri keşfedebilirsin!"
                stop
            
            set {_rank} to getPartyRank(player)
            if {_rank} < 2:
                send "&7Bu komutu kullanmak için en az &6Parti Görevlisi &7yetkisine sahip olmalısın!"
                stop
            
            sendJoinRequest(player, {_target})
            
        else if arg-1 is "kabulet":
            if arg-2 is not set:
                send "&cKabul etmek istediğiniz oyuncuyu belirtmelisin!"
                stop
            acceptJoinRequest(player, arg-2)
            
        else if arg-1 is "reddet":
            if arg-2 is not set:
                send "&cReddetmek istediğiniz oyuncuyu belirtmelisin!"
                stop
            rejectJoinRequest(player, arg-2)

        else if arg-1 is "terfi":
            if arg-2 is not set:
                send "&cTerfi ettirmek istediğiniz oyuncuyu belirtmelisin!"
                stop
                
            set {_target} to arg-2 parsed as offline player
            if {_target} is not set:
                send "&cBelirttiğiniz oyuncu &7(%arg-2%) &cbulunamadı!"
                stop
                
            set {_uuid} to player's uuid
            set {_targetUUID} to {_target}'s uuid
            set {_partyOwner} to getPlayerParty(player)
            
            if {_partyOwner} is not set:
                send "&cHerhangi bir partide bulunmuyorsun!"
                stop
                
            if {_partyOwner} is not {_uuid}:
                send "&cBu komutu sadece parti kurucusu kullanabilir!"
                stop
                
            set {_targetParty} to getPlayerParty({_target})
            if {_targetParty} is not {_partyOwner}:
                send "&cBu oyuncu senin partinde değil!"
                stop
                
            set {_ranks} to {party::ranks}.get({_partyOwner})
            set {_currentRank} to {_ranks}.get({_targetUUID})
            
            if {_currentRank} is 3:
                send "&cParti kurucusunun rütbesini değiştiremezsin!"
                stop
                
            if {_currentRank} is 2:
                send "&7Bu oyuncu zaten &6Parti Görevlisi&7!"
                stop
                
            {_ranks}.put({_targetUUID}, 2)
            send "&f%{_target}% &7adlı oyuncu &6Parti Görevlisi &7olarak terfi ettirildi!" to player
            if {_target} is online:
                send "&6Parti Görevlisi &7olarak terfi ettirildin!" to {_target}
                
        else if arg-1 is "düşür":
            if arg-2 is not set:
                send "&cRütbesini düşürmek istediğiniz oyuncuyu belirtmelisin!"
                stop
                
            set {_target} to arg-2 parsed as offline player
            if {_target} is not set:
                send "&cBelirttiğiniz oyuncu &7(%arg-2%) &cbulunamadı!"
                stop
                
            set {_uuid} to player's uuid
            set {_targetUUID} to {_target}'s uuid
            set {_partyOwner} to getPlayerParty(player)
            
            if {_partyOwner} is not set:
                send "&cHerhangi bir partide bulunmuyorsun!"
                stop
                
            if {_partyOwner} is not {_uuid}:
                send "&cBu komutu sadece parti kurucusu kullanabilir!"
                stop
                
            set {_targetParty} to getPlayerParty({_target})
            if {_targetParty} is not {_partyOwner}:
                send "&cBu oyuncu senin partinde değil!"
                stop
                
            set {_ranks} to {party::ranks}.get({_partyOwner})
            set {_currentRank} to {_ranks}.get({_targetUUID})
            
            if {_currentRank} is 3:
                send "&cParti kurucusunun rütbesini değiştiremezsin!"
                stop
                
            if {_currentRank} is 1:
                send "&cBu oyuncu zaten &7Parti Üyesi&c!"
                stop
                
            {_ranks}.put({_targetUUID}, 1)
            send "&f%{_target}% &7adlı oyuncunun rütbesi &7Parti Üyesi &7olarak değiştirildi!" to player
            play sound "entity.experience_orb.pickup" with volume 0.5 to the player
            if {_target} is online:
                send "&7Rütben &8(&7Parti Üyesi&8)&7olarak değiştirildi!" to {_target}

        else if arg-1 is "sohbet":
            set {_uuid} to player's uuid
            if {party::playerParties}.containsKey({_uuid}) is false:
                send "&cHerhangi bir partide bulunmuyorsun! /parti komutu ile herkese açık partileri keşfedebilirsin!"
                stop
            
            if {party::chat::%{_uuid}%} is true:
                set {party::chat::%{_uuid}%} to false
                send "&cParti sohbeti &ckapatıldı&c!"
            else:
                set {party::chat::%{_uuid}%} to true
                send "&aParti sohbeti &aaktif&a!"

        else if arg-1 is "gizle":
            set {_uuid} to player's uuid
            if {party::playerParties}.containsKey({_uuid}) is false:
                send "&cHerhangi bir partide bulunmuyorsun! /parti komutu ile herkese açık partileri keşfedebilirsin!"
                stop
            
            set {_partyOwner} to getPlayerParty(player)
            if {_partyOwner} is not {_uuid}:
                send "&cBu komutu sadece parti kurucusu kullanabilir!"
                stop
            
            if {party::hidden::%{_uuid}%} is true:
                set {party::hidden::%{_uuid}%} to false
                send "&aParti artık &abulunabilir &adurumda!"
            else:
                set {party::hidden::%{_uuid}%} to true
                send "&cParti artık &cgizli &cdurumda!"

        else if arg-1 is "transfer":
            if arg-2 is not set:
                send "&cLiderliği devretmek istediğiniz oyuncuyu belirtmelisin!"
                stop
                
            set {_target} to arg-2 parsed as offline player
            if {_target} is not set:
                send "&cBelirttiğiniz oyuncu &7(%arg-2%) &cbulunamadı!"
                stop
                
            set {_uuid} to player's uuid
            set {_targetUUID} to {_target}'s uuid
            
            if {parties}.containsKey({_uuid}) is false:
                send "&cHerhangi bir partide bulunmuyorsun! /parti komutu ile herkese açık partileri keşfedebilirsin!"
                stop
                
            if {_uuid} is not getPlayerParty({_target}):
                send "&cBu oyuncu senin partinde değil!"
                stop
                
            if {_target} is not online:
                send "&cBu oyuncu çevrimiçi değil!"
                stop
                
            if {_uuid} is {_targetUUID}:
                send "&cKendine liderlik devredemezsin!"
                stop
                
            set {_members} to {party::members}.get({_uuid})
            set {_ranks} to {party::ranks}.get({_uuid})
            set {_partyName} to "%{_target}%'%turkceEk({_target}'s name)% Partisi"
            
            {parties}.remove({_uuid})
            {parties}.put({_targetUUID}, {_partyName})
            {party::members}.put({_targetUUID}, {_members})
            {_ranks}.put({_targetUUID}, 3)
            {_ranks}.put({_uuid}, 2)
            {party::ranks}.put({_targetUUID}, {_ranks})
            {party::lores}.put({_targetUUID}, {party::lores}.get({_uuid}))
            {party::note}.put({_targetUUID}, {party::note}.get({_uuid}))
            {party::minLevel}.put({_targetUUID}, {party::minLevel}.get({_uuid}))
            if {party::hidden::%{_uuid}%} is true:
                set {party::hidden::%{_targetUUID}%} to true
                set {party::hidden::%{_uuid}%} to false
            
            loop ...{_members}.toArray():
                set {_memberUUID} to loop-value
                {party::playerParties}.put({_memberUUID}, {_targetUUID})
                
                set {_member} to {_memberUUID}.toString() parsed as offline player
                if {_member} is online:
                    send "&6[P] &7Parti liderliği &f%{_target}% &7adlı oyuncuya devredildi!" to {_member}

        else if arg-1 is "oy":
            set {_uuid} to player's uuid
            if {party::playerParties}.containsKey({_uuid}) is false:
                send "&cHerhangi bir partide bulunmuyorsun! /parti komutu ile herkese açık partileri keşfedebilirsin!"
                stop
            
            set {_partyOwner} to getPlayerParty(player)
            set {_rank} to getPartyRank(player)
            if {_rank} < 2:
                send "&7Bu komutu kullanmak için en az &6Parti Görevlisi &7yetkisine sahip olmalısın!"
                stop
            
            if arg-2 is not set:
                send "&7Kullanım: &f/parti oy <Soru/Cevap1/Cevap2/Cevap3/Cevap4>"
                send "&7Örnek: &f/parti oy Hangi haritaya gidelim?/Orman/Mağara/Çöl"
                stop
            
            set {_args::*} to arg-2 split at "/"
            set {_size} to size of {_args::*}
            
            if {_size} < 3:
                send "&cEn az bir soru ve iki cevap belirtmelisin!"
                stop
            
            if {_size} > 5:
                send "&cEn fazla dört cevap belirtebilirsin!"
                stop
            
            if {party::polls}.containsKey({_partyOwner}):
                send "&cZaten aktif bir oylama var!"
                stop
            
            set {_pollMap} to new HashMap()
            {_pollMap}.put("question", {_args::1})
            {_pollMap}.put("answers", new ArrayList())
            {_pollMap}.put("votes", new HashMap())
            {_pollMap}.put("voters", new ArrayList())
            
            loop integers from 2 to {_size}:
                {_pollMap}.get("answers").add({_args::%loop-value%})
                {_pollMap}.get("votes").put(loop-value - 2, 0)
            
            {party::polls}.put({_partyOwner}, {_pollMap})
            
            set {_members} to {party::members}.get({_partyOwner})
            loop ...{_members}.toArray():
                set {_memberUUID} to loop-value-1
                set {_member} to {_memberUUID}.toString() parsed as offline player
                if {_member} is online:
                    send "" to {_member}
                    send "&6[P] &7Yeni bir oylama başlatıldı!" to {_member}
                    send "&7Soru: &f%{_args::1}%" to {_member}
                    send "" to {_member}
                    loop integers from 2 to {_size}:
                        set {_optionNum} to (loop-value-2) - 2
                        set {_displayNum} to (loop-value-2) - 1
                        send formatted "<tooltip:&7Oylamak için tıkla!><command:/parti oyver %{_optionNum}%>&8[&e%{_displayNum}%&8] &f%{_args::%loop-value-2%}%" to {_member}
                    send "" to {_member}

        else if arg-1 is "oyver":
            set {_uuid} to player's uuid
            if {party::playerParties}.containsKey({_uuid}) is false:
                send "&cHerhangi bir partide bulunmuyorsun! /parti komutu ile herkese açık partileri keşfedebilirsin!"
                stop
            
            set {_partyOwner} to getPlayerParty(player)
            if {party::polls}.containsKey({_partyOwner}) is false:
                send "&cAktif bir oylama bulunmuyor!"
                stop
            
            if arg-2 is not set:
                send "&cBir seçenek belirtmelisin!"
                stop
            
            set {_vote} to arg-2 parsed as number
            if {_vote} is not set:
                send "&cGeçersiz seçenek!"
                stop
            
            set {_pollMap} to {party::polls}.get({_partyOwner})
            if {_pollMap}.get("voters").contains({_uuid}):
                send "&cZaten oy kullandın!"
                stop
            
            set {_answerSize} to {_pollMap}.get("answers").size()
            if {_vote} < 0:
                send "&cGeçersiz seçenek!"
                stop
                
            if {_vote} >= {_answerSize}:
                send "&cGeçersiz seçenek!"
                stop
            
            {_pollMap}.get("voters").add({_uuid})
            set {_currentVotes} to {_pollMap}.get("votes").get({_vote})
            {_pollMap}.get("votes").put({_vote}, {_currentVotes} + 1)
            
            set {_members} to {party::members}.get({_partyOwner})
            loop ...{_members}.toArray():
                set {_memberUUID} to loop-value
                set {_member} to {_memberUUID}.toString() parsed as offline player
                if {_member} is online:
                    send "&6[P] &f%player% &7oy kullandı! &8(&7%{_pollMap}.get("voters").size()%/%{_members}.size()%&8)" to {_member}
            
            if {_pollMap}.get("voters").size() is {_members}.size():
                set {_winner} to 0
                set {_maxVotes} to 0
                loop integers from 0 to ({_pollMap}.get("answers").size() - 1):
                    set {_votes} to {_pollMap}.get("votes").get(loop-value)
                    if {_votes} > {_maxVotes}:
                        set {_maxVotes} to {_votes}
                        set {_winner} to loop-value
                
                loop ...{_members}.toArray():
                    set {_memberUUID} to loop-value
                    set {_member} to {_memberUUID}.toString() parsed as offline player
                    if {_member} is online:
                        send "" to {_member}
                        send "&6[P] &7Oylama sonuçlandı!" to {_member}
                        send "&7Kazanan: &f%{_pollMap}.get("answers").get({_winner})% &8(&7%{_maxVotes}% oy&8)" to {_member}
                        send "" to {_member}
                
                {party::polls}.remove({_partyOwner})

        else if arg-1 is "sustur":
            set {_uuid} to player's uuid
            if {party::playerParties}.containsKey({_uuid}) is false:
                send "&cHerhangi bir partide bulunmuyorsun! /parti komutu ile herkese açık partileri keşfedebilirsin!"
                stop
            
            set {_partyOwner} to getPlayerParty(player)
            set {_rank} to getPartyRank(player)
            if {_rank} < 2:
                send "&7Bu komutu kullanmak için en az &6Parti Görevlisi &7yetkisine sahip olmalısın!"
                stop
            
            if {party::muted::%{_partyOwner}%} is true:
                set {party::muted::%{_partyOwner}%} to false
                
                set {_members} to {party::members}.get({_partyOwner})
                loop ...{_members}.toArray():
                    set {_memberUUID} to loop-value
                    set {_member} to {_memberUUID}.toString() parsed as offline player
                    if {_member} is online:
                        send "&6[P] &7Parti sohbeti &aaktif edildi&7!" to {_member}
            else:
                set {party::muted::%{_partyOwner}%} to true
                
                set {_members} to {party::members}.get({_partyOwner})
                loop ...{_members}.toArray():
                    set {_memberUUID} to loop-value
                    set {_member} to {_memberUUID}.toString() parsed as offline player
                    if {_member} is online:
                        send "&6[P] &7Parti sohbeti &cdevre dışı bırakıldı&7!" to {_member}

        else if arg-1 is "transfer":
            if arg-2 is not set:
                send "&cLiderliği devretmek istediğiniz oyuncuyu belirtmelisin!"
                stop
                
            set {_target} to arg-2 parsed as offline player
            if {_target} is not set:
                send "&cBelirttiğiniz oyuncu &7(%arg-2%) &cbulunamadı!"
                stop
                
            set {_uuid} to player's uuid
            set {_targetUUID} to {_target}'s uuid
            
            if {parties}.containsKey({_uuid}) is false:
                send "&cHerhangi bir partide bulunmuyorsun! /parti komutu ile herkese açık partileri keşfedebilirsin!"
                stop
                
            if {_uuid} is not getPlayerParty({_target}):
                send "&cBu oyuncu senin partinde değil!"
                stop
                
            if {_target} is not online:
                send "&cBu oyuncu çevrimiçi değil!"
                stop
                
            if {_uuid} is {_targetUUID}:
                send "&cKendine liderlik devredemezsin!"
                stop
                
            set {_members} to {party::members}.get({_uuid})
            set {_ranks} to {party::ranks}.get({_uuid})
            set {_partyName} to "%{_target}%'%turkceEk({_target}'s name)% Partisi"
            
            {parties}.remove({_uuid})
            {parties}.put({_targetUUID}, {_partyName})
            {party::members}.put({_targetUUID}, {_members})
            {_ranks}.put({_targetUUID}, 3)
            {_ranks}.put({_uuid}, 2)
            {party::ranks}.put({_targetUUID}, {_ranks})
            {party::lores}.put({_targetUUID}, {party::lores}.get({_uuid}))
            {party::note}.put({_targetUUID}, {party::note}.get({_uuid}))
            {party::minLevel}.put({_targetUUID}, {party::minLevel}.get({_uuid}))
            if {party::hidden::%{_uuid}%} is true:
                set {party::hidden::%{_targetUUID}%} to true
                set {party::hidden::%{_uuid}%} to false
            
            loop ...{_members}.toArray():
                set {_memberUUID} to loop-value
                {party::playerParties}.put({_memberUUID}, {_targetUUID})
                
                set {_member} to {_memberUUID}.toString() parsed as offline player
                if {_member} is online:
                    send "&6[P] &7Parti liderliği &f%{_target}% &7adlı oyuncuya devredildi!" to {_member}

        else if arg-1 is "oy":
            set {_uuid} to player's uuid
            if {party::playerParties}.containsKey({_uuid}) is false:
                send "&cHerhangi bir partide bulunmuyorsun! /parti komutu ile herkese açık partileri keşfedebilirsin!"
                stop
            
            set {_partyOwner} to getPlayerParty(player)
            set {_rank} to getPartyRank(player)
            if {_rank} < 2:
                send "&7Bu komutu kullanmak için en az &6Parti Görevlisi &7yetkisine sahip olmalısın!"
                stop
            
            if arg-2 is not set:
                send "&7Kullanım: &f/parti oy <Soru/Cevap1/Cevap2/Cevap3/Cevap4>"
                send "&7Örnek: &f/parti oy Hangi haritaya gidelim?/Orman/Mağara/Çöl"
                stop
            
            set {_args::*} to arg-2 split at "/"
            set {_size} to size of {_args::*}
            
            if {_size} < 3:
                send "&cEn az bir soru ve iki cevap belirtmelisin!"
                stop
            
            if {_size} > 5:
                send "&cEn fazla dört cevap belirtebilirsin!"
                stop
            
            if {party::polls}.containsKey({_partyOwner}):
                send "&cZaten aktif bir oylama var!"
                stop
            
            set {_pollMap} to new HashMap()
            {_pollMap}.put("question", {_args::1})
            {_pollMap}.put("answers", new ArrayList())
            {_pollMap}.put("votes", new HashMap())
            {_pollMap}.put("voters", new ArrayList())
            
            loop integers from 2 to {_size}:
                {_pollMap}.get("answers").add({_args::%loop-value%})
                {_pollMap}.get("votes").put(loop-value - 2, 0)
            
            {party::polls}.put({_partyOwner}, {_pollMap})
            
            set {_members} to {party::members}.get({_partyOwner})
            loop ...{_members}.toArray():
                set {_memberUUID} to loop-value-1
                set {_member} to {_memberUUID}.toString() parsed as offline player
                if {_member} is online:
                    send "" to {_member}
                    send "&6[P] &7Yeni bir oylama başlatıldı!" to {_member}
                    send "&7Soru: &f%{_args::1}%" to {_member}
                    send "" to {_member}
                    loop integers from 2 to {_size}:
                        set {_optionNum} to (loop-value-2) - 2
                        set {_displayNum} to (loop-value-2) - 1
                        send formatted "<tooltip:&7Oylamak için tıkla!><command:/parti oyver %{_optionNum}%>&8[&e%{_displayNum}%&8] &f%{_args::%loop-value-2%}%" to {_member}
                    send "" to {_member}

        else if arg-1 is "oyver":
            set {_uuid} to player's uuid
            if {party::playerParties}.containsKey({_uuid}) is false:
                send "&cHerhangi bir partide bulunmuyorsun! /parti komutu ile herkese açık partileri keşfedebilirsin!"
                stop
            
            set {_partyOwner} to getPlayerParty(player)
            if {party::polls}.containsKey({_partyOwner}) is false:
                send "&cAktif bir oylama bulunmuyor!"
                stop
            
            if arg-2 is not set:
                send "&cBir seçenek belirtmelisin!"
                stop
            
            set {_vote} to arg-2 parsed as number
            if {_vote} is not set:
                send "&cGeçersiz seçenek!"
                stop
            
            set {_pollMap} to {party::polls}.get({_partyOwner})
            if {_pollMap}.get("voters").contains({_uuid}):
                send "&cZaten oy kullandın!"
                stop
            
            set {_answerSize} to {_pollMap}.get("answers").size()
            if {_vote} < 0:
                send "&cGeçersiz seçenek!"
                stop
                
            if {_vote} >= {_answerSize}:
                send "&cGeçersiz seçenek!"
                stop
            
            {_pollMap}.get("voters").add({_uuid})
            set {_currentVotes} to {_pollMap}.get("votes").get({_vote})
            {_pollMap}.get("votes").put({_vote}, {_currentVotes} + 1)
            
            set {_members} to {party::members}.get({_partyOwner})
            loop ...{_members}.toArray():
                set {_memberUUID} to loop-value
                set {_member} to {_memberUUID}.toString() parsed as offline player
                if {_member} is online:
                    send "&6[P] &f%player% &7oy kullandı! &8(&7%{_pollMap}.get("voters").size()%/%{_members}.size()%&8)" to {_member}
            
            if {_pollMap}.get("voters").size() is {_members}.size():
                set {_winner} to 0
                set {_maxVotes} to 0
                loop integers from 0 to ({_pollMap}.get("answers").size() - 1):
                    set {_votes} to {_pollMap}.get("votes").get(loop-value)
                    if {_votes} > {_maxVotes}:
                        set {_maxVotes} to {_votes}
                        set {_winner} to loop-value
                
                loop ...{_members}.toArray():
                    set {_memberUUID} to loop-value
                    set {_member} to {_memberUUID}.toString() parsed as offline player
                    if {_member} is online:
                        send "" to {_member}
                        send "&6[P] &7Oylama sonuçlandı!" to {_member}
                        send "&7Kazanan: &f%{_pollMap}.get("answers").get({_winner})% &8(&7%{_maxVotes}% oy&8)" to {_member}
                        send "" to {_member}
                
                {party::polls}.remove({_partyOwner})

on chat:
    set {_uuid} to player's uuid
    if {party::levelInput::%{_uuid}%} is true:
        cancel event
        set {party::levelInput::%{_uuid}%} to false
        
        if message parsed as number is not set:
            send "&7Lütfen geçerli bir sayı girin! (Örn: 11)" to player
            stop
            
        set {_level} to message parsed as number
        if {_level} > 50:
            send "&cMaksimum seviye 50 olmalıdır!" to player
            stop
            
        set {_partyOwner} to getPlayerParty(player)
        {party::minLevel}.put({_partyOwner}, {_level})
        send "&7Parti seviyesi güncellendi: &f%{_level}%" to player
        play sound "entity.experience_orb.pickup" with volume 0.5 to the player
        stop

    if {party::chat::%{_uuid}%} is true:
        cancel event
        sendPartyMessage(player, message)
        stop

function containsSwearWord(text: text) :: text:
    set {_lower} to lowercase {_text}
    set {_lower} to " %{_lower}% "
    
    replace all "0" with "o" in {_lower}
    replace all "4" with "a" in {_lower}
    replace all "@" with "a" in {_lower}
    replace all "1" with "i" in {_lower}
    replace all "$" with "s" in {_lower}
    replace all "3" with "e" in {_lower}
    
    loop {party::bannedPatterns::*}:
        set {_pattern} to loop-value
        
        set {_p} to Pattern.compile({_pattern}, Pattern.CASE_INSENSITIVE)
        set {_m} to {_p}.matcher({_lower})
        
        if {_m}.find():
            return "true"
    
    return "false"

function sendJoinRequest(requester: player, partyOwner: player):
    set {_uuid} to {_requester}'s uuid
    set {_ownerUUID} to {_partyOwner}'s uuid
    
    if {party::invites}.containsKey({_ownerUUID}):
        send "&cBu partiye zaten bir katılma isteği gönderilmiş!" to {_requester}
        stop
        
    if {party::playerParties}.containsKey({_uuid}):
        send "&cZaten bir partide bulunuyorsun!" to {_requester}
        stop
        
    set {_inviteMap} to new HashMap()
    {_inviteMap}.put("requester", {_uuid})
    {_inviteMap}.put("time", unix timestamp of now)
    {party::invites}.put({_ownerUUID}, {_inviteMap})
    
    send "&6%{_requester}% &7partine katılmak istiyor!" to {_partyOwner}
    send formatted "<tooltip:&7Katılma isteğini kabul et><command:/parti kabulet %{_requester}%>&a[KABUL ET]" to {_partyOwner}
    send formatted "<tooltip:&7Katılma isteğini reddet><command:/parti reddet %{_requester}%>&c[REDDET]" to {_partyOwner}
    send "&7Bu istek &6%{party::inviteTimeout}% saniye &7sonra iptal olacak." to {_partyOwner}
    
    send "&7Katılma isteği &6%{_partyOwner}% &7adlı oyuncuya gönderildi!" to {_requester}

function acceptJoinRequest(owner: player, requester: text):
    set {_ownerUUID} to {_owner}'s uuid
    if {party::invites}.containsKey({_ownerUUID}) is false:
        send "&cAktif bir katılma isteği bulunmuyor!" to {_owner}
        stop
        
    set {_inviteMap} to {party::invites}.get({_ownerUUID})
    set {_requesterUUID} to {_inviteMap}.get("requester")
    set {_inviteTime} to {_inviteMap}.get("time")
    
    set {_currentTime} to unix timestamp of now
    set {_timeDiff} to {_currentTime} - {_inviteTime}
    if {_timeDiff} > ({party::inviteTimeout} * 1000):
        {party::invites}.remove({_ownerUUID})
        send "&cKatılma isteği zaman aşımına uğradı!" to {_owner}
        stop
    
    set {_requesterPlayer} to {_requesterUUID}.toString() parsed as offline player
    if {_requesterPlayer} is not online:
        {party::invites}.remove({_ownerUUID})
        send "&cİstek gönderen oyuncu çevrimiçi değil!" to {_owner}
        stop
        
    set {_members} to {party::members}.get({_ownerUUID})
    if {_members}.size() >= 5:
        {party::invites}.remove({_ownerUUID})
        send "&cParti maksimum üye sayısına ulaşmış!" to {_owner}
        stop
    
    {_members}.add({_requesterUUID})
    set {_ranks} to {party::ranks}.get({_ownerUUID})
    {_ranks}.put({_requesterUUID}, 1)
    {party::playerParties}.put({_requesterUUID}, {_ownerUUID})
    {party::invites}.remove({_ownerUUID})
    
    send "&7Başarıyla &6%{_owner}%'%turkceEk({_owner}'s name)% &7partisine katıldın!" to {_requesterPlayer}
    
    loop ...{_members}.toArray():
        set {_memberUUID} to loop-value
        set {_member} to {_memberUUID}.toString() parsed as offline player
        if {_member} is online:
            if {_memberUUID} is not {_requesterUUID}:
                send "&6[P] &f%{_requesterPlayer}% &7partiye katıldı!" to {_member}

function rejectJoinRequest(owner: player, requester: text):
    set {_ownerUUID} to {_owner}'s uuid
    if {party::invites}.containsKey({_ownerUUID}) is false:
        send "&cAktif bir parti katılma isteği bulunmuyor!" to {_owner}
        stop
        
    set {_inviteMap} to {party::invites}.get({_ownerUUID})
    set {_requesterUUID} to {_inviteMap}.get("requester")
    set {_requesterPlayer} to {_requesterUUID}.toString() parsed as offline player
    
    {party::invites}.remove({_ownerUUID})
    send "&6%{_requesterPlayer}% &7adlı oyuncunun katılma isteğini reddettiniz!" to {_owner}
    
    if {_requesterPlayer} is online:
        send "&6%{_owner}% &7katılma isteğini reddetti!" to {_requesterPlayer}

function sendPartyMessage(p: player, message: text):
    set {_uuid} to {_p}'s uuid
    set {_partyOwner} to getPlayerParty({_p})
    
    if {_partyOwner} is not set:
        send "&cHerhangi bir partide bulunmuyorsun! /parti komutu ile herkese açık partileri keşfedebilirsin!" to {_p}
        stop
    
    set {_rank} to getPartyRank({_p})
    if {party::muted::%{_partyOwner}%} is true:
        if {_rank} < 2:
            send "&cParti sohbeti şu anda &cdevre dışı&c!" to {_p}
            stop
        
    set {_rankDisplay} to getPartyRankDisplay({_rank})
    
    set {_members} to {party::members}.get({_partyOwner})
    loop ...{_members}.toArray():
        set {_memberUUID} to loop-value
        set {_member} to {_memberUUID}.toString() parsed as offline player
        if {_member} is online:
            send "&6[P] %{_rankDisplay}% &f%{_p}%: &7%{_message}%" to {_member}

on join:
    set {_uuid} to player's uuid
    set {_partyOwner} to getPlayerParty(player)
    
    if {_partyOwner} is set:
        set {_members} to {party::members}.get({_partyOwner})
        loop ...{_members}.toArray():
            set {_memberUUID} to loop-value
            if {_memberUUID} is not {_uuid}:
                set {_member} to {_memberUUID}.toString() parsed as offline player
                if {_member} is online:
                    send "&6[P] &f%player% &7çevrimiçi oldu!" to {_member}

on quit:
    set {_uuid} to player's uuid
    set {_partyOwner} to getPlayerParty(player)
    
    if {_partyOwner} is set:
        set {_members} to {party::members}.get({_partyOwner})
        loop ...{_members}.toArray():
            set {_memberUUID} to loop-value
            if {_memberUUID} is not {_uuid}:
                set {_member} to {_memberUUID}.toString() parsed as offline player
                if {_member} is online:
                    send "&6[P] &f%player% &7çevrimdışı oldu!" to {_member}

function sendPartyHelp(p: player, page: number = 1):
    set {_commands::*} to "oluştur;Yeni bir parti oluşturur", "at <oyuncu>;Belirtilen oyuncuyu partiden atar", "ayrıl;Partiden ayrılırsın", "davet <oyuncu>;Belirtilen oyuncuyu partiye davet eder", "kabulet <oyuncu>;Parti davetini kabul eder", "reddet <oyuncu>;Parti davetini reddeder", "liste;Parti üyelerini listeler", "sohbet;Parti sohbetini açar/kapatır", "not <mesaj>;Parti notu belirler", "seviye <seviye>;Minimum seviye belirler", "açıklama <mesaj>;Parti açıklaması belirler", "terfi <oyuncu>;Belirtilen oyuncuyu terfi ettirir", "düşür <oyuncu>;Belirtilen oyuncunun rütbesini düşürür", "transfer <oyuncu>;Parti liderliğini devreder", "oy <soru/cevap1/cevap2>;Parti oylaması başlatır", "gizle;Partiyi gizler/gösterir", "sustur;Parti sohbetini susturur/açar"
    
    set {_totalPages} to ceil(size of {_commands::*} / 7)
    if {_page} > {_totalPages}:
        set {_page} to 1
    
    send "" to {_p}
    send "&6&lParti Komutları &7(%{_page}%/%{_totalPages}%)" to {_p}
    send "" to {_p}
    send "&e/parti &8» &7Parti menüsünü açar" to {_p}
    send "" to {_p}
    
    set {_start} to ({_page} - 1) * 7
    set {_end} to {_page} * 7 - 1
    
    set {_currentIndex} to 0
    loop {_commands::*}:
        if {_currentIndex} >= {_start}:
            if {_currentIndex} <= {_end}:
                set {_split::*} to loop-value split at ";"
                send "&e/parti %{_split::1}% &8» &7%{_split::2}%" to {_p}
        add 1 to {_currentIndex}
    
    send "" to {_p}
    
    set {_message} to ""
    if {_page} > 1:
        set {_message} to "%{_message}%<cmd:/parti yardım %{_page}-1%>&8[&e«&8] &8&l| &7Sayfa &e%{_page}%&7/&e%{_totalPages}% &8&l| "
    else:
        set {_message} to "%{_message}%&8[&7«&8] &8&l| &7Sayfa &e%{_page}%&7/&e%{_totalPages}% &8&l| "
        
    if {_page} < {_totalPages}:
        set {_message} to "%{_message}%<cmd:/parti yardım %{_page}+1%>&8[&e»&8]"
    else:
        set {_message} to "%{_message}%&8[&7»&8]"
        
    send formatted {_message} to {_p}
    send "" to {_p}
 
bunu skriptle yazmak ne kadar mantikli tartisilir.
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

Hala Discord sunucumuza katılmadın mı?

Büyük bir topluluğun parçası ol, etkinliklere katıl ve özel hediyeler kazanma şansı yakala!

Şimdi Katıl
Üst