Player Object Documentation
Overview
The Player object in GrowSoft provides access to player-specific data, actions, and UI interactions. Most methods are used with the colon operator (player:methodName()).
Player Currency
player:getGems() -- Returns the player's gems count.
player:addGems(amount, sendPacket:optional, isDisplay:optional) -- Adds gems to the player.
player:removeGems(amount, sendPacket:optional, isDisplay:optional) -- Removes gems from the player.
player:setGems(number) -- Sets the player's gems count.
player:getCoins() -- Returns the player's coins count.
player:removeCoins(amount, sendPacket:optional) -- Removes coins from the player.
player:setCoins(number) -- Sets the player's coins count.
player:getBankBalance() -- Returns bank balance.
player:addBankBalance(amount) -- Adds to bank balance.
player:setBankBalance(number) -- Sets bank balance.
player:removeBankBalance(amount) -- Removes from bank balance.Player Position
player:getPosX()
player:getPosY()
player:getMiddlePosX()Player Inventory
player:getInventorySize() -- Returns the player's inventory size.
player:isMaxInventorySpace() -- Returns true if inventory is full.
player:upgradeInventorySpace(amount) -- Increases inventory slots.
player:getItemAmount(itemID) -- Returns the count of a specific item.
player:changeItem(itemID, amount, sendPacket) -- Adds/removes an item.
player:getInventoryItems() -- Returns table of all inventory items.
player:getClothingItemID([clothesID]) -- Returns a clothing item's ID.
player:getBackpackUsedSize() -- Returns backpack used slots.
player:setSlots(slotAmount) -- Sets the player's slots.Player Stats
player:getGems()
player:getCoins()
player:getUnlockedAchievementsCount()
player:getAchievementsCount()
player:isFacingLeft()
player:isOnline()Player UI & Dialogs
player:onConsoleMessage(message) -- send console message to the player.
player:onTalkBubble(netID, message, isApi) -- Show a talk bubble, netID set to player:getNetID() if you want only you can see isApi = 0 is false and 1 is true.
player:onDialogRequest(dialog) -- Opens a dialog.
player:setNextDialogRGBA(r, g, b, a) -- Change dialog background color.
player:setNextDialogBorderRGBA(r, g, b, a) -- Change dialog border color.
player:resetDialogColor() -- Reset dialog color to default.
player:onTextOverlay(text) -- Displays overlay text.Player Menus / Interfaces
player:onTradeScanUI()
player:onGrow4GoodUI()
player:onGuildNotebookUI()
player:onGrowmojiUI()
player:onGrowpassUI()
player:onNotebookUI()
player:onBillboardUI()
player:onPersonalizeWrenchUI()
player:onOnlineStatusUI()
player:onFavItemsUI()
player:onCoinsBankUI()
player:onUnlinkDiscordUI()
player:onLinkDiscordUI()
player:onClothesUI(targetPlayer)
player:onAchievementsUI(targetPlayer)
player:onTitlesUI(targetPlayer)
player:onWrenchIconsUI(targetPlayer)
player:onNameIconsUI(targetPlayer)
player:onVouchersUI()
player:onMentorshipUI()
player:onBackpackUI(targetPlayer)
player:onStorePurchaseResult()
player:onRedeemMenu()
player:onGrow4GoodDonate()Player Audio & Actions
player:playAudio("audio.wav") -- Plays an audio file.
player:setNickname(name) -- Sets the player's display name (now supports colors, spaces, '@', saved on relog).
player:resetNickname() -- Resets the player's display name to their original name.
player:hasRole(roleID) -- Checks if player has role.
player:setRole(roleID) -- Sets player's role.
player:sendAction("action|play_sfx\nfile|audio/blabla.mp3\ndelayMS|0")
player:sendVariant({"OnTalkBubble", player:getNetID(), "Hello", 0, 0})
player:sendVariant({"OnConsoleMessage", "Hello"})
player:sendVariant({"OnConsoleMessage", "Hello"}, delay, netID)Nickname Feature
The setNickname() function now supports colors, spaces, and the ’@’ symbol. Nicknames are saved and persist across relogs!
Player World & Connection
player:getWorld() -- Returns the current World object or nil.
player:getWorldName() -- Returns the current worldName as a string.
player:enterWorld(worldName, doorID) -- Enters specified world, optional doorID for spawn location.
player:disconnect() -- Disconnects the player from server.
player:setBroadcastWorld(worldName) -- Sets broadcast world for this player (/go will work).Player Identity
player:getNetID() -- Returns the player's net ID.
player:getUserID() -- Returns the player's user ID.
player:getName() -- Returns the player's display name.
player:getCleanName() -- Returns the player's clean name.
player:lower() -- Returns lowercase player name.
player:getCleanName():lower() -- Clean name in lowercase.
player:getCountry() -- Returns player's country (string, online only).
player:getPlatform() -- Returns player's platform ID (0=Windows, 1=iOS, 2=MacOS, 4=Android).
player:getDiscordID() -- Returns the player's Discord ID.
player:getAccountCreationDateStr() -- Returns account creation date.
player:getType() -- Returns the player's type. Non-zero means it is an NPC.
player:hasGrowID() -- Returns true if player has a GrowID.Player World Lists
player:getOwnedWorlds() -- Returns table of world IDs that player owns (with world locks).
player:getRecentWorlds() -- Returns table of world IDs that player recently entered.
player:getAccessWorlds() -- Returns table of world IDs that player has access to.
player:getSmallLockedWorlds() -- Returns table of world IDs locked by player with small locks (SL, BL, HL, etc).Player Security & History
player:getIPHistory() -- Returns table of strings (IP addresses recently used to login).
player:getRIDHistory() -- Returns table of strings (RID addresses recently used to login).Privacy Notice
Use IP and RID history data responsibly and in accordance with privacy regulations. This data is sensitive and should be handled securely.
Player Friends Management
player:getFriends() -- Returns table of friend user IDs (numbers).
player:addFriend(targetPlayer) -- Adds a friend (bidirectional, updates both players).
player:removeFriend(targetPlayer) -- Removes a friend (bidirectional, updates both players).Player Quests & Goals
player:getLifeGoals() -- Returns table of life goal task objects.
player:getBiweeklyQuests() -- Returns table of biweekly quest task objects.
getJimDailyQuest() -- (Global function) Returns Jim's daily quest object (same for everyone).Life Goals & Biweekly Quest Properties
Task objects from getLifeGoals() and getBiweeklyQuests() contain:
lifeGoal.taskID
lifeGoal.taskTargetValue
lifeGoal.taskCompletedValue
lifeGoal.taskReward
lifeGoal.deliverItem
lifeGoal.rewardAmount
lifeGoal.claimed
lifeGoal.givenup
lifeGoal.completed
lifeGoal.lastAnnouncePercentageJim Daily Quest Properties
The getJimDailyQuest() object contains:
jimDaily.firstItemID
jimDaily.firstItemCount
jimDaily.secondItemID
jimDaily.secondItemCount
jimDaily.completedPlayers -- Table of user IDs who completed itPlayer Network & Connection
player:getPing() -- Returns player's ping in milliseconds.Player Modifiers & Buffs
player:getMod(modID) -- Returns player's mod status.
player:addMod(modID, durationSeconds) -- Adds a mod/buff to the player.
player:getSubscription(subscriptionID) -- Returns subscription status.
player:getHomeWorldID() -- Returns player's home world ID.
player:getOnlineStatus() -- Returns online status.
player:getGuildID() -- Returns guild ID.
player:getTransformProfileButtons() -- Returns transform profile buttons.Player Profile & Content
player:getClassicProfileContent(category, flags)Player Dungeons
player:getDungeonScrolls() -- Returns how many dungeon scrolls the player has.
player:setDungeonScrolls(number) -- Sets dungeon scrolls (max 255).Dungeon Scrolls
The maximum number of dungeon scrolls a player can have is 255.
Player Growpass & Progression
player:addGrowpassPoints(points) -- Adds growpass points that can be spent on rewards.Player Block Hit Count Adjustment
Adjust how many hits it takes to break blocks:
player:adjustBlockHitCount(amount) -- Adjust block break difficulty (-10 to +10).
player:getAdjustedBlockHitCount() -- Get current adjustment value.Block Hit Count Examples
+1: Makes blocks take more hits to break (amount varies by block)-1: Makes blocks easier to break-10: Makes all blocks 1-hit to break (very efficient!)+10: Maximum difficulty increase
Important Note
Setting to -10 makes all blocks break in 1 hit. The digger’s spade increases hit count by 1 for non-dirt blocks.
Player Stats Management
player:setStats(type, amount) -- Sets player statistics.Player Account Notes & Moderation
player:addNote("Some note text") -- Adds an account note (visible in punishment UI).
player:addMod(GAME_BAN, 60) -- Bans player for 60 seconds (0 = permanent).Account Notes
Account notes provide a history of previous punishments and system warnings, useful for moderation decisions.
Enhanced Dialog Callbacks
You can now pass a callback function directly to player:onDialogRequest() to handle responses without using the global dialog callback:
function handleMyGazetteDialogResponse(world, player, data)
if data["buttonClicked"] == "test" then
player:onConsoleMessage("tada!")
end
end
player:onDialogRequest(
"set_default_color|`o\n" ..
"add_button|test|Test Button|left|\n" ..
"end_dialog|my_gazette|||",
0, -- delay (optional)
handleMyGazetteDialogResponse -- callback (optional)
)Cleaner Dialog Handling
This makes dialog handling cleaner and less error-prone by localizing the callback logic.