Help to fix

  • 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.

TheRobs

Member
Jan 26, 2017
16
0
1
23
Hi Guys, how are you?

I'm having a little problem with this SK, I would like someone to help me solve it.

Every time I go to see the status of someone, I get the following message:

Error: &7Player &6%arg-1% &7didn't play before."

I found this sk on spigot, but the developer is not supporting it.

https://www.spigotmc.org/resources/mcmmogui.83311/

Code:
# Author: 3meraldK
# Version: 1.2
# Do not redistribute it for sell. Do not claim script is yours.

options:
    usePerm: mcmmogui.use # Permission to use /mcmmo [your nick]
    usePermOthers: mcmmogui.use.others # Permission to /mcmmo [not your nick]
    managePartyPerm: mcmmogui.party.manage.others # This player can manage other players' parties
    background: true # If GUI background fills with gray stained glass pane
    showInfo: true # If an icon about infos shows in right-top of GUI
    
    guiName: "&cmcMMO Skills" # Name of main GUI
    childSkillGuiName: "&cChild skills" # Name of child skills' GUI
    partyGUI: "&cParty view" # Name of party GUI
    clickForMore: "&aClick to view more!" # More information about skill
    combat: "&7Combat skill"
    gathering: "&7Gathering skill"
    misc: "&7Miscellaneous skill"
    partyManager: "&7Party manager"
    partyViewer: "&7Party viewer"
    
    noPerMsg: &cError: &7Insufficient permissions. # Message when no permissions
    noPlayerFound: "&cError: &7Player &6%arg-1% &7didn't play before." # When database didn't find player
    noParty: "&cError: &7This player has no party." # If targeted player has no party
    PlayerNotInParty: "&cError: &7There's no player named &6%{_message}%" # If there's no specified player-argument in the party. (When setting party's leader)
    argIsPlayer: "&cError: &7You can search more only if skills are your." # If /mcmmo [not sender's nick] clicks skill icon.
    argIsOffline: "&cError: &7Due to mcMMO limitations party viewer of offline player is impossible." # If you click party icon on offline player.
    
    setPartyPassword: "&7Set the new password of your party:"
    setPartyLeader: "&7Set the new leader of your party:"
    setPartyName: "&7Set the new name of your party:"
    successPartyPassword: "&7You've set your new password."
    successPartyLeader: "&7You've set the leader of your party to &a%{_message}%"
    successPartyName: "&7You've set the name of your party to &a%{_message}%"

import:
    com.gmail.nossr50.api.ExperienceAPI
    com.gmail.nossr50.api.DatabaseAPI
    com.gmail.nossr50.api.PartyAPI
    com.gmail.nossr50.util.player.UserManager
    
    org.bukkit.inventory.ItemFlag
    org.bukkit.ChatColor
    
    
local expression %item% without itemflags:
    return type: item
    get:
        set {_item} to expr-1
        set {_meta} to {_item}.getItemMeta()
        {_meta}.addItemFlags(ItemFlag.HIDE_ATTRIBUTES, ItemFlag.HIDE_POTION_EFFECTS)
        {_item}.setItemMeta({_meta})
        return {_item}

function getSkillStats(sender: player, p: offline player, skill: string):
    if ExperienceAPI.isNonChildSkill({_skill}) is true:
        set {mcmmogui::%{_sender}%::%{_skill}%LVL} to ExperienceAPI.getLevelOffline("%{_p}%", {_skill})
        set {mcmmogui::%{_sender}%::%{_skill}%XP} to ExperienceAPI.getOfflineXP("%{_p}%", {_skill})
        set {mcmmogui::%{_sender}%::%{_skill}%MXP} to ExperienceAPI.getXpNeededToLevel({mcmmogui::%{_sender}%::%{_skill}%LVL})
    else:
        set {mcmmogui::%{_sender}%::%{_skill}%LVL} to ExperienceAPI.getLevelOffline("%{_p}%", {_skill})
    wait 1 tick
    delete {mcmmogui::%{_sender}%::*}
    
function getStats(p: player, skill: string) :: strings:
    return "&7&lPROGRESS: &e%{mcmmogui::%{_p}%::%{_skill}%XP}%&e/%{mcmmogui::%{_p}%::%{_skill}%MXP}% &e(%({mcmmogui::%{_p}%::%{_skill}%XP} / {mcmmogui::%{_p}%::%{_skill}%MXP}) * 100%%%)", "&7&lLEVEL: &e%{mcmmogui::%{_p}%::%{_skill}%LVL}%"
    
function showPartyGUI(p: player, target: offline player):
    set {_partyGUI} to chest inventory with 6 rows named {@partyGUI}
            
    if {@background} is true:
        loop 54 times:
            set {_partyGUI}'s slot loop-value - 1 to gray stained glass pane named "&7"
    
    set {_mcMMOplayer} to UserManager.getPlayer({_target})
    set {_party} to {_mcMMOplayer}.getParty()       
            
    set {_name} to {_party}.getName()
    set {_leader} to {_party}.getLeader().getPlayerName()
    set {_members} to PartyAPI.getMembersMap({_target})
    set {_online} to PartyAPI.getOnlineMembers({_name})
    
    set {_onlineList} to {_party}.getOnlinePlayerNames({_target})
    set {_memberList} to {_party}.createMembersList({_target})
    set {_level} to {_party}.getLevel()
    set {_xp} to {_party}.getXp()
    set {_maxXP} to {_party}.getXpToLevel()
    set {_isLocked} to {_party}.isLocked()

    set {_partyGUI}'s slot 10 to end portal frame named "&a&lPARTY" with lore {@partyViewer}, "", "&e&l⭐ %{_name}% ⭐", "", "&8▪ &7Leader: %{_leader}%", "&8▪ &7Members: &a%{_online}.size()% online&7/%{_members}.size()%", "&8▪ &7Progress: %{_xp}%/%{_maxXP}% &e(%({_xp} / {_maxXP}) * 100%%%)", "&8▪ &7Level: %{_level}%"
    
    set {_partyGUI}'s slot 13 to paper named "&a&lSEARCH PARTIES" with lore {@partyViewer}, "", "&aClick to search all parties!"
    
    set {_partyGUI}'s slot 19 to diamond chestplate named "&7&lMEMBERS" with lore {@partyViewer}, "", "&8▪ &7Members online: &a%{_onlineList}%", "&8▪ &7All members: %{_memberList}%" without itemflags
    if PartyAPI.hasAlly({_name}) is true:
        set {_ally} to PartyAPI.getAllyName({_name})
        set {_partyGUI}'s slot 20 to iron helmet named "&7&lALLY" with lore {@partyViewer}, "", "&8▪ &7We have an ally!", "&8▪ &7Their party name: %{_ally}%" without itemflags
        
    set {_partyGUI}'s slot 28 to totem of undying named "&7&lITEM SHARE" with lore {@partyViewer}, "", "&8▪ &7Item share: &a%{_party}.getItemShareCategories()%", "&8▪ &7Mode set: &a%{_party}.getItemShareMode()%", "&8▪ &7Leader of the party can change mode via &b/party itemshare" without itemflags
    
    set {_partyGUI}'s slot 37 to xp bottle named "&7&lXP SHARE" with lore {@partyViewer}, "", "&8▪ &7Mode set: &a%{_party}.getXpShareMode()%", "&8▪ &7Leader of the party can change mode via &b/party xpshare" without itemflags
        
    set {_partyGUI}'s slot 16 to golden hoe named "&7&lSET PASSWORD" with lore {@partyManager}, "", "&8▪ &7Set new party's password by submitting in chat.", "&c▪ &4Requires appriopriate permissions!" without itemflags
        
    set {_partyGUI}'s slot 25 to book named "&7&lSET LEADER" with lore {@partyManager}, "", "&8▪ &7Current leader: %{_leader}%", "&8▪ &7Set your new leader by submitting his name.", "&c▪ &4Requires appriopriate permissions!"
    
    set {_partyGUI}'s slot 34 to paper named "&7&lSET NAME" with lore {@partyManager}, "", "&8▪ &7Current name: %{_name}%", "&8▪ &7Set your new party's name by submitting it in the chat.", "&c▪ &4Requires appriopriate permissions!"
    
    set {_partyGUI}'s slot 43 to conduit named "&7&lSET LOCKED" with lore {@partyManager}, "", "&8▪ &7Is locked now: %{_isLocked}%", "&8▪ &7Set your party's privacy by toggling this option.", "&c▪ &4Requires appriopriate permissions!"
    
    set {_partyGUI}'s slot 40 to arrow named "&cGo back"
    
    open {_partyGUI} to {_p}
    
function showGUI(p: player, arg: offline player):
    set {mcmmoguiTarget::%{_p}%} to {_arg}

    getSkillStats({_p}, {_arg}, "excavation")
    getSkillStats({_p}, {_arg}, "fishing")
    getSkillStats({_p}, {_arg}, "herbalism")
    getSkillStats({_p}, {_arg}, "mining")
    getSkillStats({_p}, {_arg}, "woodcutting")
    getSkillStats({_p}, {_arg}, "acrobatics")
    getSkillStats({_p}, {_arg}, "archery")
    getSkillStats({_p}, {_arg}, "axes")
    getSkillStats({_p}, {_arg}, "swords")
    getSkillStats({_p}, {_arg}, "unarmed")
    getSkillStats({_p}, {_arg}, "alchemy")
    getSkillStats({_p}, {_arg}, "taming")
    getSkillStats({_p}, {_arg}, "repair")
    
    
    if {_arg} is online:
        set {_power} to ExperienceAPI.getPowerLevel({_arg})
    else:
        set {_power} to ExperienceAPI.getPowerLevelOffline("%{_arg}%")
    set {_rankOverall} to ExperienceAPI.getPlayerRankOverall("%{_arg}%")
    
    
    # Creating GUI
    set {_GUI} to chest inventory with 6 rows named {@guiName}
    
    if {@background} is true:
        loop 54 times:
            set {_GUI}'s slot loop-value - 1 to gray stained glass pane named "&7"
            
    if {@showInfo} is true:
        set {_GUI}'s slot 8 to saddle named "&3&lINFO" with lore "&8▪ &7Author: 3meraldK", "&8▪ &7Version: 1.2", "", "&7This script provides an user-friendly", "&7graphical user interface for mcMMO plugin." without itemflags
    
    set {_GUI}'s slot 10 to iron shovel named "&8&lEXCAVATION" with lore {@gathering}, "", "&8▪ &7Excavate dirt, grass, sand, gravel", "&7and other loose blocks to gain experience.", "&8▪ &7Remember to dig them with shovels!", "", getStats({_p}, "excavation"), "", {@clickForMore} without itemflags
    
    set {_GUI}'s slot 11 to fishing rod named "&8&lFISHING" with lore {@gathering}, "", "&8▪ &7Fish to get experienced!", "", getStats({_p}, "fishing"), "", {@clickForMore} without itemflags
    
    set {_GUI}'s slot 12 to iron hoe named "&8&lHERBALISM" with lore {@gathering}, "", "&8▪ &7Harvest any fully grown crops", "&7to gain experience!", "", getStats({_p}, "herbalism"), "", {@clickForMore} without itemflags
    
    set {_GUI}'s slot 19 to iron pickaxe named "&8&lMINING" with lore {@gathering}, "", "&8▪ &7Mine stone and ores to gain experience.", "", getStats({_p}, "mining"), "", {@clickForMore} without itemflags
    
    set {_GUI}'s slot 20 to iron axe named "&8&lWOODCUTTING" with lore {@gathering}, "", "&8▪ &7Chop down trees and collect wood", "&7to get experienced.", "", getStats({_p}, "woodcutting"), "", {@clickForMore} without itemflags
    
    set {_GUI}'s slot 21 to anvil named "&8&lSMITHING" with lore {@gathering}, "", "&8▪ &7Fish and smelt items to get experienced in salvage.", "&8▪ &7Smelt items and mine to gain experience in smelting.", "", "&4A merge of those skills is coming-soon feature", "&4already planned to add in mcMMO plugin.", "", "&aClick here to view child skills!"
    
    set {_GUI}'s slot 14 to leather boots named "&8&lACROBATICS" with lore {@combat}, "", "&8▪ &7All you need to do is jumping", "&7and getting damage from fall distance.", "", getStats({_p}, "acrobatics"), "", {@clickForMore} without itemflags
    
    set {_GUI}'s slot 15 to bow named "&8&lARCHERY" with lore {@combat}, "", "&8▪ &7Master shooting from bow and crossbow,", "&7become a champion at shooting and gain experience.", "", getStats({_p}, "archery"), "", {@clickForMore} without itemflags
    
    set {_GUI}'s slot 23 to diamond axe named "&8&lAXES" with lore {@combat}, "", "&8▪ &7Change your fight-style and use axes.", "&7Fighting with axes allows you to gain more experience!", "", getStats({_p}, "axes"), "", {@clickForMore} without itemflags
    
    set {_GUI}'s slot 24 to diamond sword named "&8&lSWORDS" with lore {@combat}, "", "&8▪ &7Fight with any swords to get experienced.", "&8▪ &7Kill mobs and players.", "", getStats({_p}, "swords"), "", {@clickForMore} without itemflags
    
    set {_GUI}'s slot 26 to crossbow named "&8&lLEADERBOARDS" with lore "&7Ranking viewer", "", "&8▪ &7Power level is a sum of your all primary skills.", "&8▪ &7Get better at everything to levelup!", "&8▪ &7Overall rank shows who's the best in whole mcMMO!", "", "&7&lPOWER LEVEL: &e%{_power}%", "&7&lOVERALL RANK: &e%{_rankOverall}%"
    
    set {_GUI}'s slot 32 to rabbit foot named "&8&lUNARMED" with lore {@combat}, "", "&8▪ &7No weapon in inventory maybe?", "&7Use the last proper source of damage - fists!", "&8▪ &7Fight with fists to get experienced!", "", getStats({_p}, "unarmed"), "", {@clickForMore}
    
    set {_GUI}'s slot 33 to splash potions of health named "&8&lALCHEMY" with lore {@combat}, "", "&8▪ &7Brew variety of potions", "&7to unlock new ones and gain experience!", "", getStats({_p}, "alchemy"), "", {@clickForMore} without itemflags
    
    set {_GUI}'s slot 37 to bone named "&8&lTAMING" with lore {@misc}, "", "&8▪ &7Tame animals and make new friends.", "&8▪ &7Best way to spend life alone and best way", "&7to master Taming Skill!", "", getStats({_p}, "taming"), "", {@clickForMore}
    
    set {_GUI}'s slot 38 to iron ingot named "&8&lREPAIR" with lore {@misc}, "", "&8▪ &7Repair your stuff, get some work and", "&7get experienced in your job!", "", getStats({_p}, "repair"), "", {@clickForMore}
    
    set {_GUI}'s slot 49 to emerald named "&b&lRANKING" with lore "&7Ranking viewer", "", "&8▪ &7Check who leads in the specific skill!", "&8▪ &7Fight with others to be the best in your job!", "&c▪ &4Coming soon in the nearest updates!", "", "&aClick to view rankings!"
    
    set {_GUI}'s slot 50 to {_arg}'s head named "&a&lPARTY" with lore {@partyViewer}, "", "&8▪ &7Check statistics of your party.", "&8▪ &7Manage your party and their members.", "&8▪ &7One click to search all existing parties!", "", "&aClick to view a party!"
    
    set {_GUI}'s slot 52 to barrier named "&cClose"
    
    
    # Opening GUI
    open {_GUI} to {_p}
    

command /mcmmo <offline player=%player%>:
    permission: {@usePerm}
    permission message: {@noPerMsg}
    executable by: player
    trigger:
        if arg-1 isn't player:
            player doesn't have permission "{@usePermOthers}"
            send "{@noPerMsg}"
            stop
        set {_data} to new DatabaseAPI()
        if {_data}.doesPlayerExistInDB(arg-1's uuid) is true:
            showGUI(player, arg-1)
        else:
            send {@noPlayerFound}
            

    
on inventory click:
    player's current inventory's name is {@guiName}, {@partyGUI} or {@childSkillGuiName}
    cancel event
    if event.getView().getTitle() = {@guiName}:
    
        if clicked slot is 10, 11, 12, 19, 20, 14, 15, 23, 24, 32, 33, 37 or 38:
            if {mcmmoguiTarget::%player%} is player:
                set {_meta} to event.getCurrentItem().getItemMeta()
                execute player command "%ChatColor.stripColor({_meta}.getDisplayName().toLowerCase())%"
                close player's inventory
            else:
                send {@argIsPlayer}
                stop
    
        if clicked slot = 21:
            
            set {_childGUI} to chest inventory with 6 rows named {@childSkillGuiName}
        
            if {@background} is true:
                loop 54 times:
                    set {_childGUI}'s slot loop-value - 1 to gray stained glass pane named "&7"
            
            getSkillStats(player, {mcmmoguiTarget::%player%}, "salvage")
            getSkillStats(player, {mcmmoguiTarget::%player%}, "smelting")
                    
            set {_childGUI}'s slot 21 to golden helmet named "&8&lSALVAGE" with lore {@gathering}, "", "&7&lLEVEL: &e%{mcmmogui::%player%::salvageLVL}%"
        
            set {_childGUI}'s slot 23 to charcoal named "&8&lSMELTING" with lore {@gathering}, "", "&7&lLEVEL: &e%{mcmmogui::%player%::smeltingLVL}%"
        
            set {_childGUI}'s slot 40 to arrow named "&cGo back"
        
            open {_childGUI} to player
            
        if clicked slot = 52:
            close player's inventory
            delete {mcmmoguiTarget::%player%::*}
            delete {mcmmogui::%player%::*}
    
        if clicked slot = 50:
        
            # If player is online (mcMMO has limitations) but gonna fix that in 1.3
            if {mcmmoguiTarget::%player%}.isOnline() is false:
                close player's inventory
                send {@argIsOffline}
                stop
        
            #If player has party
            if PartyAPI.inParty({mcmmoguiTarget::%player%}) is false:
                close player's inventory
                send {@noParty}
                stop
                
            showPartyGUI(player, {mcmmoguiTarget::%player%})
        
    if event.getView().getTitle() = {@childSkillGuiName} or {@partyGUI}:
        clicked slot = 40
        showGUI(player, {mcmmoguiTarget::%player%})
        
    if event.getView().getTitle() = {@childSkillGuiName}:
        clicked slot = 21 or 23
        set {_meta} to event.getCurrentItem().getItemMeta()
        execute player command "%ChatColor.stripColor({_meta}.getDisplayName().toLowerCase())%"
        
    if event.getView().getTitle() = {@partyGUI}:
    
        if clicked slot is arrow named "&aNext page":
            showPaginatedGUI(player, {page::%player%} + 1)
        if clicked slot is arrow named "&cPrevious page":
            showPaginatedGUI(player, {page::%player%} - 1)
        if clicked slot is barrier named "&cGo back":
            showGUI(player, {mcmmoguiTarget::%player%})
    
        if clicked slot = 16, 25 or 34:
            set {mcmmoguiTarget::%player%::chatManaging} to true
            
        if clicked slot = 16, 25, 34 or 43:
            if {mcmmoguiTarget::%player%} isn't player:
                player doesn't have permission "{@managePartyPerm}"
                send "{@noPerMsg}"
                stop
            else:
                player doesn't have permission "mcmmo.commands.party.all"
                send "{@noPerMsg}"
                stop
    
        if clicked slot = 16:
            close player's inventory
            set {mcmmoguiTarget::%player%::chatManaging::password} to true
            send {@setPartyPassword}
            
        if clicked slot = 25:
            close player's inventory
            set {mcmmoguiTarget::%player%::chatManaging::leader} to true
            send {@setPartyLeader}
            
        if clicked slot = 34:
            close player's inventory
            set {mcmmoguiTarget::%player%::chatManaging::name} to true
            send {@setPartyName}
            
        if clicked slot = 43:
            set {_mcMMOplayer} to UserManager.getPlayer({mcmmoguiTarget::%player%})
            set {_party} to {_mcMMOplayer}.getParty()
            if {_party}.isLocked() is true:
                set {_bool} to false
            else:
                set {_bool} to true
            {_party}.setLocked({_bool})
            showPartyGUI(player, {mcmmoguiTarget::%player%})
            
        if clicked slot = 13:
            showPaginatedGUI(player, 1)
            
            
function showPaginatedGUI(p: player, page: number):
    set {_gui} to chest inventory with 6 rows named {@partyGUI}
    
    set {_partyList} to PartyAPI.getParties()
    
    set {page::%{_p}%} to {_page}
    loop 45 times:
        set {_int} to loop-value - 1 + 45 * ({page::%{_p}%} - 1)
        set {_party} to try {_partyList}.get({_int})
        {_partyList}.get({_int}).getName() isn't set:
            stop loop
            
        set {_members} to {_party}.getMembers()
        set {_online} to {_party}.getOnlineMembers()
        set {_level} to {_party}.getLevel()
        
        if {_party}.isLocked():
            set {_gui}'s slot loop-value - 1 to gunpowder named "&a&l%{_party}.getName()% &4(&c&lPRIVATE&4)" with lore {@partyViewer}, "", "&8▪ &7Leader: %{_party}.getLeader().getPlayerName()%", "&8▪ &7Members: &a%{_online}.size()% online&7/%{_members}.size()%", "&8▪ &7Level: %{_level}%"
        else:
            set {_gui}'s slot loop-value - 1 to redstone dust named "&a&l%{_party}.getName()% &2(&a&lPUBLIC&2)" with lore {@partyViewer}, "", "&8▪ &7Leader: %{_party}.getLeader().getPlayerName()%", "&8▪ &7Members: &a%{_online}.size()% online&7/%{_members}.size()%", "&8▪ &7Level: %{_level}%"
        
    if type of {_gui}'s slot 44 isn't air:
        set {_gui}'s slot 54 - 1 to arrow named "&aNext page"
        
    if {page::%{_p}%} > 1:
        set {_gui}'s slot 46 - 1 to arrow named "&cPrevious page"
        
    set {_gui}'s slot 47 - 1 to oak sign named "&aPage &7%{_page}%"
        
    set {_gui}'s slot 50 - 1 to barrier named "&cGo back"
        
    open {_gui} to {_p}
            
            

on chat:
    if {mcmmoguiTarget::%player%::chatManaging} is true:
        set {_message} to message
        set {_mcMMOplayer} to UserManager.getPlayer({mcmmoguiTarget::%player%})
        set {_party} to {_mcMMOplayer}.getParty()
        cancel event
        
        if {mcmmoguiTarget::%player%::chatManaging::password} is set:
            {_party}.setPassword({_message})
            send {@successPartyPassword}
            showPartyGUI(player, {mcmmoguiTarget::%player%})
            
        if {mcmmoguiTarget::%player%::chatManaging::name} is set:
            
            {_party}.setName({_message})
            send {@successPartyName}
            showPartyGUI(player, {mcmmoguiTarget::%player%})
            
        if {mcmmoguiTarget::%player%::chatManaging::leader} is set:
            if {_party}.hasMember({_message}) is false:
                send {@PlayerNotInParty}
                stop
                
            PartyAPI.setPartyLeader({mcmmoguiTarget::%player%}, {_message})
            send {@successPartyLeader}
            showPartyGUI(player, {mcmmoguiTarget::%player%})
            
        delete {mcmmoguiTarget::%player%::chatManaging}
        delete {mcmmoguiTarget::%player%::chatManaging::*}
        
on inventory close:
    event.getView().getTitle() = {@guiName}, {@partyGUI} or {@childSkillGuiName}
    if {mcmmoguiTarget::%player%::chatManaging} isn't set:
        delete {mcmmoguiTarget::%player%::*}
    if {page::%player%} is set:
        player's current inventory contains barrier named "&cGo back"
        delete {page::%player%}
 
Status
Not open for further replies.