Trying to make a crates skript

  • Welcome to skUnity!

    Welcome to skUnity! This is a forum where members of the Skript community can communicate and interact. Skript Resource Creators can post their Resources for all to see and use.

    If you haven't done so already, feel free to join our official Discord server to expand your level of interaction with the comminuty!

    Now, what are you waiting for? Join the community now!

  • LOOKING FOR A VERSION OF SKRIPT?

    You can always check out skUnity Downloads for downloads and any other information about Skript!

Status
Not open for further replies.

DavidZar

Member
Aug 4, 2019
2
0
0
19
So I'm trying to make a skript for crates, and I wanted to make it so you can list all the crates that exist. I also wanted to list items inside crates. I'm not sure how to do this at all though... or if there is an easy way to make anything I already made. I just need help!
Code:
options:
    prefix: &7[&dZarCrates&7]&f #What comes before everything
    permission: zarcrates.

command /crates [<text>] [<text>] [<text>]:
    aliases: /crate, /zarcrates, /zcrates, /zcrate, /zarcrate, /zarcrates:crate
    permission: {@permission}*
    trigger:
        if arg 1 is not "create" or "make" or "delete" or "remove" or "item" or "give" or "list":
            send ""
            send "{@prefix} &bZarCrates&f usage:"
            send ""
            send "{@prefix} Creating and deleting crates:"
            send "{@prefix} /crate (create/make) <crate_name> &7||&f Create crates"
            send "{@prefix} /crate (delete/remove) <crate_name> &7||&f Delete crates"
            send ""
            send "{@prefix} Adding and removing items:"
            send "{@prefix} /crate item (add/remove) <crate_name> &7||&f Remove/add the item you are holding to the crate"
            send ""
            send "{@prefix} Using crates:"
            send "{@prefix} /crate give <crate_name> <player> &7||&f Give players crates"
            send "{@prefix} /crate list &7||&f List all crates"
            send ""
        if arg 1 is "create" or "make":
            if arg 2 is not set:
                send "{@prefix} /crate (create/make) <crate_name>"
            if arg 2 is set:
                if {crates.%arg-2%} = 1:
                    send "{@prefix} Crate &b%arg-2%&f already exists!"
                else:
                    set {crates.%arg-2%} to 1
                    send "{@prefix} Crate &b%arg-2%&f has been created!"
        if arg 1 is "delete" or "remove":
            if arg 2 is not set:
                send "{@prefix} /crate (delete/remove) <crate_name>"
            if arg 2 is set:
                if {crates.%arg-2%} = 1:
                    delete {crates.%arg-2%}
                    delete {crates.%arg-2%.item1}
                    delete {crates.%arg-2%.item2}
                    delete {crates.%arg-2%.item3}
                    delete {crates.%arg-2%.item4}
                    delete {crates.%arg-2%.item5}
                    delete {crates.%arg-2%.item6}
                    delete {crates.%arg-2%.item7}
                    send "{@prefix} Crate &b%arg-2%&f has been deleted!"
                else:
                    send "{@prefix} Crate &b%arg-2%&f does not exist!"
        if arg 1 is "item":
            if arg 2 is "add":
                if arg 3 is set:
                    if {crates.%arg-3%} = 1:
                        if {crates.%arg-3%.item1} is not set:
                            set {crates.%arg-3%.item1} to player's held item
                            send "{@prefix} %{crates.%arg-3%.item1}% added!"
                        else:
                            if {crates.%arg-3%.item2} is not set:
                                set {crates.%arg-3%.item2} to player's held item
                                send "{@prefix} %{crates.%arg-3%.item2}% added!"
                            else:
                                if {crates.%arg-3%.item3} is not set:
                                    set {crates.%arg-3%.item3} to player's held item
                                    send "{@prefix} %{crates.%arg-3%.item3}% added!"
                                else:
                                    if {crates.%arg-3%.item4} is not set:
                                        set {crates.%arg-3%.item4} to player's held item
                                        send "{@prefix} %{crates.%arg-3%.item4}% added!"
                                    else:
                                        if {crates.%arg-3%.item5} is not set:
                                            set {crates.%arg-3%.item5} to player's held item
                                            send "{@prefix} %{crates.%arg-3%.item5}% added!"
                                        else:
                                            if {crates.%arg-3%.item6} is not set:
                                                set {crates.%arg-3%.item6} to player's held item
                                                send "{@prefix} %{crates.%arg-3%.item6}% added!"
                                            else:
                                                if {crates.%arg-3%.item7} is not set:
                                                    set {crates.%arg-3%.item7} to player's held item
                                                    send "{@prefix} %{crates.%arg-3%.item7}% added!"
                                                else:
                                                    send "{@prefix} Max items in a crate is 7"
                    else:
                        send "{@prefix} Crate &b%arg-3%&f does not exist!"
                if arg 3 is not set:
                    send "{@prefix} /crate item add <crate_name>"
            if arg 2 is "remove":
                if arg 3 is set:
                    if {crates.%arg-3%} = 1:
                        if {crates.%arg-3%.item7} is set:
                            send "{@prefix} %{crates.%arg-3%.item7}% removed!"
                            delete {crates.%arg-3%.item7}
                        else:
                            if {crates.%arg-3%.item6} is set:
                                send "{@prefix} %{crates.%arg-3%.item6}% removed!"
                                delete {crates.%arg-3%.item6}
                            else:
                                if {crates.%arg-3%.item5} is set:
                                    send "{@prefix} %{crates.%arg-3%.item5}% removed!"
                                    delete {crates.%arg-3%.item5}
                                else:
                                    if {crates.%arg-3%.item4} is set:
                                        send "{@prefix} %{crates.%arg-3%.item4}% removed!"
                                        delete {crates.%arg-3%.item4}
                                    else:
                                        if {crates.%arg-3%.item3} is set:
                                            send "{@prefix} %{crates.%arg-3%.item3}% removed!"
                                            delete {crates.%arg-3%.item3}
                                        else:
                                            if {crates.%arg-3%.item2} is set:
                                                send "{@prefix} %{crates.%arg-3%.item2}% removed!"
                                                delete {crates.%arg-3%.item2}
                                            else:
                                                if {crates.%arg-3%.item1} is set:
                                                    send "{@prefix} %{crates.%arg-3%.item1}% removed!"
                                                    delete {crates.%arg-3%.item1}
                                                else:
                                                    send "{@prefix} There are no items to remove!"
                    else:
                        send "{@prefix} Crate &b%arg-3%&f does not exist!"
                if arg 3 is not set:
                    send "{@prefix} /crate item remove <crate_name>"
            if arg 2 is not set:
                send "{@prefix} /crate item (add/remove) <crate_name>"
        if arg 1 is "give":
            if arg 2 is set:
                if {crates.%arg-2%} = 1:
                    give player 1 of pink shulker box named "{@prefix} %arg-2% crate" with lore "&brightclick&f to open!"
                else:
                    send "{@prefix} Crate &b%arg-2%&f does not exist!"
            else:
                send "{@prefix} /crate give <crate_name>"
        if arg 1 is "list":
            if arg 2 is set:
                send "{@prefix} /crate list"
            if arg 2 is not set:
                open chest with 3 rows named "{@prefix} Crate list!" to player
                wait 1 tick
                make gui slot 0 of player with pink stained glass pane named "{@prefix}"
                make gui slot 1 of player with pink stained glass pane named "{@prefix}"
                make gui slot 2 of player with pink stained glass pane named "{@prefix}"
                make gui slot 3 of player with pink stained glass pane named "{@prefix}"
                make gui slot 4 of player with pink stained glass pane named "{@prefix}"
                make gui slot 5 of player with pink stained glass pane named "{@prefix}"
                make gui slot 6 of player with pink stained glass pane named "{@prefix}"
                make gui slot 7 of player with pink stained glass pane named "{@prefix}"
                make gui slot 8 of player with pink stained glass pane named "{@prefix}"
                make gui slot 9 of player with pink stained glass pane named "{@prefix}"
                make gui slot 10 of player with pink shulker box named "{@prefix} %arg-2% crate" to run [give player 1 of pink shulker box named "{@prefix} %arg-2% crate" with lore "&brightclick&f to open!"]
[doublepost=1564952833,1564952738][/doublepost]Oh right 1 more thing, I can get any addons I may need, and I already have a few to make this work 100%, I can make crates and delete them, add items and stuff, just don't know how to move on from here!
 
I actually figured it out a few minutes ago, and was about to post this here. I need help with another thing now, for some reason items aren't being removed from the crates when I delete and remake the crate, or when I do "/crates item remove test"

Hope you can help. (by the way, you were right about the loops thing, just it didn't help cause I had already figured it out before you had a chance to tell me

Here's updated code:


Code:
options:
    prefix: &7[&dZarCrates&7]&f #What comes before everything
    permission: zarcrates. #What comes before every permissions

command /crates [<text>] [<text>] [<text>]:
    aliases: /crate, /zarcrates, /zcrates, /zcrate, /zarcrate, /zarcrates:crate
    permission: {@permission}*
    trigger:
        if arg 1 is not "create" or "make" or "delete" or "remove" or "item" or "give" or "list":
            send ""
            send "{@prefix} &bCrates&f usage:"
            send ""
            send "{@prefix} Creating and deleting crates:"
            send "{@prefix} /crate (create/make) <crate_name> &7||&f Create crates"
            send "{@prefix} /crate (delete/remove) <crate_name> &7||&f Delete crates"
            send ""
            send "{@prefix} Adding and removing items:"
            send "{@prefix} /crate item (add/remove) <crate_name> &7||&f Remove/add the item you are holding to the crate"
            send ""
            send "{@prefix} Using crates:"
            send "{@prefix} /crate give <crate_name> <player> &7||&f Give players crates"
            send "{@prefix} /crate list (<item>/none) (<crate_name>/none) &7||&f List all crates/items inside"
            send ""
        if arg 1 is "create" or "make":
            if arg 2 is not set:
                send "{@prefix} /crate (create/make) <crate_name>"
            if arg 2 is set:
                if {crates.%arg-2%} = 1:
                    send "{@prefix} Crate &b%arg-2%&f already exists!"
                else:
                    set {crates.%arg-2%} to 1
                    add arg 2 to {crate.list::*}
                    send "{@prefix} Crate &b%arg-2%&f has been created!"
        if arg 1 is "delete" or "remove":
            if arg 2 is not set:
                send "{@prefix} /crate (delete/remove) <crate_name>"
            if arg 2 is set:
                if {crates.%arg-2%} = 1:
                    delete {crate.%arg-2%.list::*}
                    delete {crates.%arg-2%}
                    delete {crates.%arg-2%.item1}
                    delete {crates.%arg-2%.item2}
                    delete {crates.%arg-2%.item3}
                    delete {crates.%arg-2%.item4}
                    delete {crates.%arg-2%.item5}
                    delete {crates.%arg-2%.item6}
                    delete {crates.%arg-2%.item7}
                    remove "%arg-2%" from {crate.list::*}
                    remove "%arg-2%" from {crate.list::*}
                    send "{@prefix} Crate &b%arg-2%&f has been deleted!"
                else:
                    send "{@prefix} Crate &b%arg-2%&f does not exist!"
        if arg 1 is "item":
            if arg 2 is "add":
                if arg 3 is set:
                    if {crates.%arg-3%} = 1:
                        if {crates.%arg-3%.item1} is not set:
                            set {crates.%arg-3%.item1} to player's held item
                            add player's held item to {crate.%arg-3%.listitem::*}
                            send "{@prefix} %{crates.%arg-3%.item1}% added!"
                        else:
                            if {crates.%arg-3%.item2} is not set:
                                set {crates.%arg-3%.item2} to player's held item
                                add player's held item to {crate.%arg-3%.listitem::*}
                                send "{@prefix} %{crates.%arg-3%.item2}% added!"
                            else:
                                if {crates.%arg-3%.item3} is not set:
                                    set {crates.%arg-3%.item3} to player's held item
                                    add player's held item to {crate.%arg-3%.listitem::*}
                                    send "{@prefix} %{crates.%arg-3%.item3}% added!"
                                else:
                                    if {crates.%arg-3%.item4} is not set:
                                        set {crates.%arg-3%.item4} to player's held item
                                        add player's held item to {crate.%arg-3%.listitem::*}
                                        send "{@prefix} %{crates.%arg-3%.item4}% added!"
                                    else:
                                        if {crates.%arg-3%.item5} is not set:
                                            set {crates.%arg-3%.item5} to player's held item
                                            add player's held item to {crate.%arg-3%.listitem::*}
                                            send "{@prefix} %{crates.%arg-3%.item5}% added!"
                                        else:
                                            if {crates.%arg-3%.item6} is not set:
                                                set {crates.%arg-3%.item6} to player's held item
                                                add player's held item to {crate.%arg-3%.listitem::*}
                                                send "{@prefix} %{crates.%arg-3%.item6}% added!"
                                            else:
                                                if {crates.%arg-3%.item7} is not set:
                                                    set {crates.%arg-3%.item7} to player's held item
                                                    add player's held item to {crate.%arg-3%.listitem::*}
                                                    send "{@prefix} %{crates.%arg-3%.item7}% added!"
                                                else:
                                                    send "{@prefix} Max items in a crate is 7"
                    else:
                        send "{@prefix} Crate &b%arg-3%&f does not exist!"
                if arg 3 is not set:
                    send "{@prefix} /crate item add <crate_name>"
            if arg 2 is "remove":
                if arg 3 is set:
                    if {crates.%arg-3%} = 1:
                        if {crates.%arg-3%.item7} is set:
                            send "{@prefix} %{crates.%arg-3%.item7}% removed!"
                            remove "{crates.%arg-3%.item7}" from {crate.%arg-3%.list::*}
                            delete {crates.%arg-3%.item7}
                        else:
                            if {crates.%arg-3%.item6} is set:
                                send "{@prefix} %{crates.%arg-3%.item6}% removed!"
                                remove "{crates.%arg-3%.item6}" from {crate.%arg-3%.list::*}
                                delete {crates.%arg-3%.item6}
                            else:
                                if {crates.%arg-3%.item5} is set:
                                    send "{@prefix} %{crates.%arg-3%.item5}% removed!"
                                    remove "{crates.%arg-3%.item5}" from {crate.%arg-3%.list::*}
                                    delete {crates.%arg-3%.item5}
                                else:
                                    if {crates.%arg-3%.item4} is set:
                                        send "{@prefix} %{crates.%arg-3%.item4}% removed!"
                                        remove "{crates.%arg-3%.item4}" from {crate.%arg-3%.list::*}
                                        delete {crates.%arg-3%.item4}
                                    else:
                                        if {crates.%arg-3%.item3} is set:
                                            send "{@prefix} %{crates.%arg-3%.item3}% removed!"
                                            remove "{crates.%arg-3%.item3}" from {crate.%arg-3%.list::*}
                                            delete {crates.%arg-3%.item3}
                                        else:
                                            if {crates.%arg-3%.item2} is set:
                                                send "{@prefix} %{crates.%arg-3%.item2}% removed!"
                                                remove "{crates.%arg-3%.item2}" from {crate.%arg-3%.list::*}
                                                delete {crates.%arg-3%.item2}
                                            else:
                                                if {crates.%arg-3%.item1} is set:
                                                    send "{@prefix} %{crates.%arg-3%.item1}% removed!"
                                                    remove "{crates.%arg-3%.item1}" from {crate.%arg-3%.list::*}
                                                    delete {crates.%arg-3%.item1}
                                                else:
                                                    send "{@prefix} There are no items to remove!"
                    else:
                        send "{@prefix} Crate &b%arg-3%&f does not exist!"
                if arg 3 is not set:
                    send "{@prefix} /crate item remove <crate_name>"
            if arg 2 is not set:
                send "{@prefix} /crate item (add/remove) <crate_name>"
        if arg 1 is "give":
            if arg 2 is set:
                if {crates.%arg-2%} = 1:
                    give player 1 of pink shulker box named "{@prefix} %arg-2% crate" with lore "&brightclick&f to open!"
                else:
                    send "{@prefix} Crate &b%arg-2%&f does not exist!"
            else:
                send "{@prefix} /crate give <crate_name>"
        if arg 1 is "list":
            if arg 2 is "item":
                if {crates.%arg-3%} = 1:
                    send ""
                    loop {crate.%arg-3%.listitem::*}:
                        send "{@prefix} %loop-value% "
                    send ""
                else:
                    send "{@prefix} Crate &b%arg-3%&f does not exist!"
            else if arg 2 is not set:
                send ""
                loop {crate.list::*}:
                    send "{@prefix} %loop-value%"
                send ""
            else:
                send "{@prefix} /crate list (<item>/none) (<crate_name>/none)"
 
Status
Not open for further replies.