Skript Takes 20 Minutes to Load

  • 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 community!

    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.

rustedst

Active Member
Apr 24, 2020
97
4
8
Istanbul, Turkey
I have this script which is 86 lines, and when I try to reload it when the server is open, either it crashes the server or takes 20 minutes to reload. When I run the server while it is enabled, it takes 20 minutes to load it. It contains foreign language messages by the way, there it is:
Code:
variables:
    {hazir::%player%} = false
    {ticaret::%player%} = false
on rightclick:
    player is sneaking:
        if {teklif::%target player%::%player%} is true:
            set {teklif::%player%::%target player%} to true
            set {ticaret::%player%} to true
            set {ticaret::%target player%} to true
            open chest inventory with 3 rows named "&cTicaret" to player
            set slot 3 of player's current inventory to red stained glass named "&4Hazır Değilsin"
            set slot 4 and 13 and 22 and 31 of player's current inventory to black stained glass named " "
            set slot 5 of player's current inventory to red stained glass named "&4%{nick::%target player%}% Hazır Değil"
        else if {teklif::%target player%::*} is set:
            send "&c%{nick::%target player%}% zaten biriyle ticaret yapıyor." to player
        else:
            send "&a%player% seninle ticaret yapmak istiyor." to target player
            execute console command "tm amessage %target player% &a%player% seninle ticaret yapmak istiyor."
            set {teklif::%player%::%target player%} to true
on inventory click:
    if display name of event-inventory is "&cTicaret":
        if event-slot is slot 3 of event-inventory or slot 4 of event-inventory or slot 5 of event-inventory or slot 13 of event-inventory or slot 22 of event-inventory or slot 31 of event-inventory:
            cancel event
            if event slot is slot 3 of event inventory:
                if event slot is red stained glass named "&4Hazır Değilsin":
                    set slot 3 of player's current inventory to green stained glass named "&aHazırsın"
                    loop {teklif::%player%::*}:
                        set slot 5 of (loop-value parsed as player)'s current inventory to green stained glass named "&a%player% Hazır"
                        if slot 3 of (loop-value parsed as player)'s current inventory is green stained glass named "&aHazırsın":
                            set {_say} to 0
                            set {_sayma} to 0
                            set {_taraf} to 2
                            loop 36 times:
                                if {_say} is not 3 or 4 or 5 or 13 or 22 or 31:
                                    if {_taraf} is divisible by 2:
                                        give (loop-value parsed as player) slot {_say} of event-inventory
                                    else:
                                        give player slot {_say} of event-inventory
                                if {_sayma} is 4:
                                    set {_sayma} to 0
                                    add 1 to {_taraf}
                                add 1 to {_say}
                                add 1 to {_sayma}
                            delete {teklif::%player%::*}
                            loop {teklif::%player%::*}:
                                delete {teklif::%loop-value%::%player%}
                                close (loop-value parsed as player)'s current inventory
                            close player's current inventory
                else:
                    set slot 3 of player's current inventory to red stained glass named "&4Hazır Değilsin"
                    loop {teklif::%player%::*}:
                        set slot 5 of (loop-value parsed as player)'s current inventory to red stained glass named "&4%player% Hazır Değil"
        else:
            if event slot is slot 6 of event-inventory or slot 7 of event-inventory or slot 8 of event-inventory or slot 14 of event-inventory or slot 15 of event-inventory or slot 16 of event-inventory or slot 17 of event-inventory or slot 23 of event-inventory or slot 24 of event-inventory or slot 25 of event-inventory or slot 26 of event-inventory or slot 32 of event-inventory or slot 33 of event-inventory or slot 34 of event-inventory or slot 35 of event-inventory:
                cancel event
            else:
                set slot 3 of player's current inventory to red stained glass named "&4Hazır Değilsin"
                loop {teklif::%player%::*}:
                    set slot 5 of (loop-value parsed as player)'s current inventory to red stained glass named "&4%player% Hazır Değil"
                    set {_say} to 5
                    set {_sayma} to 1
                    loop 16 times:
                        if {_say} is not 5:
                            set slot {_say} of (loop-value parsed as player)'s current inventory to event-slot
                        if {_sayma} = 4:
                            set {_sayma} to 1
                            add 6 to {_say}
                        add 1 to {_say}
                        add 1 to {_sayma}
on inventory close:
    if display name of event-inventory is "&cTicaret":
        if {teklif::%player%::*} is not set:
            send "&2El sıkışarak ticareti sonlandırdınız." to player
        else:
            loop {teklif::%player%::*}:
                loop 36 times:
                    if {_say} is not 3 or 4 or 5 or 13 or 22 or 31:
                        if {_taraf} is divisible by 2:
                            give player slot {_say} of event-inventory
                        else:
                            give (loop-value parsed as player) slot {_say} of event-inventory
                    if {_sayma} is 4:
                        set {_sayma} to 0
                        add 1 to {_taraf}
                    add 1 to {_say}
                    add 1 to {_sayma}
What's wrong with this? How can I fix it?
[doublepost=1588557366,1588556740][/doublepost]My real question is, loading time doesn't matter, will it overload the server? I can wait it for hours to load, as long as it doesn't cause low TPS in my server.
 
How big is ur player base?
[doublepost=1588587510,1588587353][/doublepost]
I have this script which is 86 lines, and when I try to reload it when the server is open, either it crashes the server or takes 20 minutes to reload. When I run the server while it is enabled, it takes 20 minutes to load it. It contains foreign language messages by the way, there it is:
Code:
variables:
    {hazir::%player%} = false
    {ticaret::%player%} = false
on rightclick:
    player is sneaking:
        if {teklif::%target player%::%player%} is true:
            set {teklif::%player%::%target player%} to true
            set {ticaret::%player%} to true
            set {ticaret::%target player%} to true
            open chest inventory with 3 rows named "&cTicaret" to player
            set slot 3 of player's current inventory to red stained glass named "&4Hazır Değilsin"
            set slot 4 and 13 and 22 and 31 of player's current inventory to black stained glass named " "
            set slot 5 of player's current inventory to red stained glass named "&4%{nick::%target player%}% Hazır Değil"
        else if {teklif::%target player%::*} is set:
            send "&c%{nick::%target player%}% zaten biriyle ticaret yapıyor." to player
        else:
            send "&a%player% seninle ticaret yapmak istiyor." to target player
            execute console command "tm amessage %target player% &a%player% seninle ticaret yapmak istiyor."
            set {teklif::%player%::%target player%} to true
on inventory click:
    if display name of event-inventory is "&cTicaret":
        if event-slot is slot 3 of event-inventory or slot 4 of event-inventory or slot 5 of event-inventory or slot 13 of event-inventory or slot 22 of event-inventory or slot 31 of event-inventory:
            cancel event
            if event slot is slot 3 of event inventory:
                if event slot is red stained glass named "&4Hazır Değilsin":
                    set slot 3 of player's current inventory to green stained glass named "&aHazırsın"
                    loop {teklif::%player%::*}:
                        set slot 5 of (loop-value parsed as player)'s current inventory to green stained glass named "&a%player% Hazır"
                        if slot 3 of (loop-value parsed as player)'s current inventory is green stained glass named "&aHazırsın":
                            set {_say} to 0
                            set {_sayma} to 0
                            set {_taraf} to 2
                            loop 36 times:
                                if {_say} is not 3 or 4 or 5 or 13 or 22 or 31:
                                    if {_taraf} is divisible by 2:
                                        give (loop-value parsed as player) slot {_say} of event-inventory
                                    else:
                                        give player slot {_say} of event-inventory
                                if {_sayma} is 4:
                                    set {_sayma} to 0
                                    add 1 to {_taraf}
                                add 1 to {_say}
                                add 1 to {_sayma}
                            delete {teklif::%player%::*}
                            loop {teklif::%player%::*}:
                                delete {teklif::%loop-value%::%player%}
                                close (loop-value parsed as player)'s current inventory
                            close player's current inventory
                else:
                    set slot 3 of player's current inventory to red stained glass named "&4Hazır Değilsin"
                    loop {teklif::%player%::*}:
                        set slot 5 of (loop-value parsed as player)'s current inventory to red stained glass named "&4%player% Hazır Değil"
        else:
            if event slot is slot 6 of event-inventory or slot 7 of event-inventory or slot 8 of event-inventory or slot 14 of event-inventory or slot 15 of event-inventory or slot 16 of event-inventory or slot 17 of event-inventory or slot 23 of event-inventory or slot 24 of event-inventory or slot 25 of event-inventory or slot 26 of event-inventory or slot 32 of event-inventory or slot 33 of event-inventory or slot 34 of event-inventory or slot 35 of event-inventory:
                cancel event
            else:
                set slot 3 of player's current inventory to red stained glass named "&4Hazır Değilsin"
                loop {teklif::%player%::*}:
                    set slot 5 of (loop-value parsed as player)'s current inventory to red stained glass named "&4%player% Hazır Değil"
                    set {_say} to 5
                    set {_sayma} to 1
                    loop 16 times:
                        if {_say} is not 5:
                            set slot {_say} of (loop-value parsed as player)'s current inventory to event-slot
                        if {_sayma} = 4:
                            set {_sayma} to 1
                            add 6 to {_say}
                        add 1 to {_say}
                        add 1 to {_sayma}
on inventory close:
    if display name of event-inventory is "&cTicaret":
        if {teklif::%player%::*} is not set:
            send "&2El sıkışarak ticareti sonlandırdınız." to player
        else:
            loop {teklif::%player%::*}:
                loop 36 times:
                    if {_say} is not 3 or 4 or 5 or 13 or 22 or 31:
                        if {_taraf} is divisible by 2:
                            give player slot {_say} of event-inventory
                        else:
                            give (loop-value parsed as player) slot {_say} of event-inventory
                    if {_sayma} is 4:
                        set {_sayma} to 0
                        add 1 to {_taraf}
                    add 1 to {_say}
                    add 1 to {_sayma}
What's wrong with this? How can I fix it?
[doublepost=1588557366,1588556740][/doublepost]My real question is, loading time doesn't matter, will it overload the server? I can wait it for hours to load, as long as it doesn't cause low TPS in my server.

Also lines like these are bottle necks for the parser:


Code:
if event slot is slot 6 of event-inventory or slot 7 of event-inventory or slot 8 of event-inventory or slot 14 of event-inventory or slot 15 of event-inventory or slot 16 of event-inventory or slot 17 of event-inventory or slot 23 of event-inventory or slot 24 of event-inventory or slot 25 of event-inventory or slot 26 of event-inventory or slot 32 of event-inventory or slot 33 of event-inventory or slot 34 of event-inventory or slot 35 of event-inventory:

if event-slot is slot 3 of event-inventory or slot 4 of event-inventory or slot 5 of event-inventory or slot 13 of event-inventory or slot 22 of event-inventory or slot 31 of event-inventory:

and with a big player base this might be an issue

variables:
    {hazir::%player%} = false
    {ticaret::%player%} = false
 
Server is still in whitelist, the player base contains about 10 players.
[doublepost=1588603825,1588603774][/doublepost]Should I spilt those lines like "if, else if, else if, else if..."?
 
Server is still in whitelist, the player base contains about 10 players.
[doublepost=1588603825,1588603774][/doublepost]Should I spilt those lines like "if, else if, else if, else if..."?
remove the lines with just 1 check to see if it still takes so long to load
first test
 
I did it, no hope. And it doesn't take so long to load anymore. It just doesn't load, I removed every line that has more than 1 checks or 1 modifications.
[doublepost=1588604830,1588604726][/doublepost]In skUnity Parser, it stays "Parsing..."
 
I did it, no hope. And it doesn't take so long to load anymore. It just doesn't load, I removed every line that has more than 1 checks or 1 modifications.
[doublepost=1588604830,1588604726][/doublepost]In skUnity Parser, it stays "Parsing..."

well so now u know it is bc of long lines ofc it doesn't work anymore bc u removed alot of lines u need now u got indentation errors
 
Status
Not open for further replies.