Skip to main content

GameProductDataService

Functions

Start

GameProductDataService.Start(selfGameProductDataService) → ()

Starts the service. Should be done via ServiceBag

SetServerOnlyPrompting

GameProductDataService.SetServerOnlyPrompting(
serverOnlyboolean
) → ()

Sets whether prompting is restricted to the server. When enabled, clients can no longer prompt purchases directly via GameProductDataService:PromisePromptPurchase; prompts must be initiated from the server. Can only be set from the server.

GetServerOnlyPromptingValue

GameProductDataService.GetServerOnlyPromptingValue(selfGameProductDataService) → ValueObject<boolean>

Returns the server-authoritative server-only prompting ValueObject. This is exported through the PlayerProductManager tie so it replicates to clients.

ObserveServerOnlyPrompting

GameProductDataService.ObserveServerOnlyPrompting() → Observable<boolean>

Returns true if server-only prompting is currently enabled. On the client this reads the value replicated from the server for the local player.

_promiseServerOnlyPromptingGuard

GameProductDataService._promiseServerOnlyPromptingGuard() → Promise

Resolves if the caller is allowed to prompt a purchase, rejecting if server-only prompting is enabled and we are on the client. The server is always authorized.

_promiseGuardedPromptPurchase

GameProductDataService._promiseGuardedPromptPurchase(
playerPlayer,
assetTrackerPlayerAssetMarketTracker,
idOrKeystring | number
) → Promise<boolean>

Applies the server-only prompting guard and then prompts the purchase. Used by all prompt entry points so the guard is enforced consistently.

HasPlayerPurchasedThisSession

GameProductDataService.HasPlayerPurchasedThisSession(
playerPlayer,
assetTypeGameConfigAssetType,
idOrKeystring | number
) → boolean

Returns true if item has been purchased this session

PromisePromptPurchase

GameProductDataService.PromisePromptPurchase(
playerPlayer,
assetTypeGameConfigAssetType,
idOrKeystring | number
) → Promise<boolean>

Prompts the user to purchase the asset, and returns true if purchased

PromisePlayerOwnership

GameProductDataService.PromisePlayerOwnership(
playerPlayer,
assetTypeGameConfigAssetType,
idOrKeystring | number
) → Promise<boolean>

Returns true if item has been purchased this session

SetPlayerOwnershipOverride

This item only works when running on the server. Server
GameProductDataService.SetPlayerOwnershipOverride(
playerPlayer,
assetTypeGameConfigAssetType,
idOrKeystring | number,
ownsAssetboolean?
) → Promise

Sets a server-authoritative override for the player's ownership of the asset. When set, the override wins over the cloud query and any session purchase, forcing ownership on (true) or off (false). Passing nil clears the override.

The override is stored in a replicated attribute and applied to every realm's ownership tracker, so it drives client-side ownership-gated UI. It can only be set from the server: this rejects on the client realm, and GameProductServiceClient deliberately exposes no setter, so a player can never grant themselves ownership.

ClearPlayerOwnershipOverride

This item only works when running on the server. Server
GameProductDataService.ClearPlayerOwnershipOverride(
playerPlayer,
assetTypeGameConfigAssetType,
idOrKeystring | number
) → Promise

Clears any ownership override for the asset, so ownership falls back to the cloud query. Equivalent to SetPlayerOwnershipOverride(player, assetType, idOrKey, nil), and likewise server-only.

PromiseIsOwnable

GameProductDataService.PromiseIsOwnable(
playerPlayer,
assetTypeGameConfigAssetType
) → Promise<boolean>

Returns true if item has been purchased this session

PromisePlayerIsPromptOpen

GameProductDataService.PromisePlayerIsPromptOpen() → Promise<boolean>

Promises the player prompt as opened

PromisePlayerPromptClosed

GameProductDataService.PromisePlayerPromptClosed() → Promise<boolean>

Promises the player prompt as opened

ObservePlayerOwnership

GameProductDataService.ObservePlayerOwnership(
playerPlayer,
assetTypeGameConfigAssetType,
idOrKeystring | number
) → Observable<boolean>

Observes player ownership

ObservePlayerAssetPurchased

GameProductDataService.ObservePlayerAssetPurchased(
playerPlayer,
assetTypeGameConfigAssetType,
idOrKeystring | number
) → Observable<>

Fires when the specified player purchases an asset

ObserveAssetPurchased

GameProductDataService.ObserveAssetPurchased(
assetTypeGameConfigAssetType,
idOrKeystring | number
) → Observable<Player>

Fires when any player purchases an asset

PromisePlayerOwnershipOrPrompt

GameProductDataService.PromisePlayerOwnershipOrPrompt(
playerPlayer,
assetTypeGameConfigAssetType,
idOrKeystring | number
) → Promise<boolean>

Checks if the asset is ownable and if it is, checks player ownership. Otherwise, it checks if the asset has been purchased this session. If the asset has not been purchased this session it prompts the user to purchase the item.

Show raw api
{
    "functions": [
        {
            "name": "Start",
            "desc": "Starts the service. Should be done via [ServiceBag]",
            "params": [
                {
                    "name": "self",
                    "desc": "",
                    "lua_type": "GameProductDataService"
                }
            ],
            "returns": [],
            "function_type": "static",
            "source": {
                "line": 74,
                "path": "src/gameproductservice/src/Shared/GameProductDataService.lua"
            }
        },
        {
            "name": "SetServerOnlyPrompting",
            "desc": "Sets whether prompting is restricted to the server. When enabled, clients can no\nlonger prompt purchases directly via [GameProductDataService:PromisePromptPurchase];\nprompts must be initiated from the server. Can only be set from the server.",
            "params": [
                {
                    "name": "self",
                    "desc": "",
                    "lua_type": "GameProductDataService"
                },
                {
                    "name": "serverOnly",
                    "desc": "",
                    "lua_type": "boolean"
                }
            ],
            "returns": [],
            "function_type": "static",
            "source": {
                "line": 107,
                "path": "src/gameproductservice/src/Shared/GameProductDataService.lua"
            }
        },
        {
            "name": "GetServerOnlyPromptingValue",
            "desc": "Returns the server-authoritative server-only prompting [ValueObject]. This is\nexported through the PlayerProductManager tie so it replicates to clients.",
            "params": [
                {
                    "name": "self",
                    "desc": "",
                    "lua_type": "GameProductDataService\n"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "ValueObject<boolean>"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 123,
                "path": "src/gameproductservice/src/Shared/GameProductDataService.lua"
            }
        },
        {
            "name": "ObserveServerOnlyPrompting",
            "desc": "Returns true if server-only prompting is currently enabled. On the client this\nreads the value replicated from the server for the local player.",
            "params": [
                {
                    "name": "_self",
                    "desc": "",
                    "lua_type": "GameProductDataService"
                },
                {
                    "name": "player",
                    "desc": "",
                    "lua_type": "Player"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "Observable<boolean>"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 136,
                "path": "src/gameproductservice/src/Shared/GameProductDataService.lua"
            }
        },
        {
            "name": "_promiseServerOnlyPromptingGuard",
            "desc": "Resolves if the caller is allowed to prompt a purchase, rejecting if server-only\nprompting is enabled and we are on the client. The server is always authorized.",
            "params": [
                {
                    "name": "self",
                    "desc": "",
                    "lua_type": "GameProductDataService"
                },
                {
                    "name": "player",
                    "desc": "",
                    "lua_type": "Player"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "Promise"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 164,
                "path": "src/gameproductservice/src/Shared/GameProductDataService.lua"
            }
        },
        {
            "name": "_promiseGuardedPromptPurchase",
            "desc": "Applies the server-only prompting guard and then prompts the purchase. Used by all\nprompt entry points so the guard is enforced consistently.",
            "params": [
                {
                    "name": "self",
                    "desc": "",
                    "lua_type": "GameProductDataService"
                },
                {
                    "name": "player",
                    "desc": "",
                    "lua_type": "Player"
                },
                {
                    "name": "assetTracker",
                    "desc": "",
                    "lua_type": "PlayerAssetMarketTracker"
                },
                {
                    "name": "idOrKey",
                    "desc": "",
                    "lua_type": "string | number"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "Promise<boolean>"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 194,
                "path": "src/gameproductservice/src/Shared/GameProductDataService.lua"
            }
        },
        {
            "name": "HasPlayerPurchasedThisSession",
            "desc": "Returns true if item has been purchased this session",
            "params": [
                {
                    "name": "self",
                    "desc": "",
                    "lua_type": "GameProductDataService"
                },
                {
                    "name": "player",
                    "desc": "",
                    "lua_type": "Player"
                },
                {
                    "name": "assetType",
                    "desc": "",
                    "lua_type": "GameConfigAssetType"
                },
                {
                    "name": "idOrKey",
                    "desc": "",
                    "lua_type": "string | number"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "boolean"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 213,
                "path": "src/gameproductservice/src/Shared/GameProductDataService.lua"
            }
        },
        {
            "name": "PromisePromptPurchase",
            "desc": "Prompts the user to purchase the asset, and returns true if purchased",
            "params": [
                {
                    "name": "self",
                    "desc": "",
                    "lua_type": "GameProductDataService"
                },
                {
                    "name": "player",
                    "desc": "",
                    "lua_type": "Player"
                },
                {
                    "name": "assetType",
                    "desc": "",
                    "lua_type": "GameConfigAssetType"
                },
                {
                    "name": "idOrKey",
                    "desc": "",
                    "lua_type": "string | number"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "Promise<boolean>"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 241,
                "path": "src/gameproductservice/src/Shared/GameProductDataService.lua"
            }
        },
        {
            "name": "PromisePlayerOwnership",
            "desc": "Returns true if item has been purchased this session",
            "params": [
                {
                    "name": "self",
                    "desc": "",
                    "lua_type": "GameProductDataService"
                },
                {
                    "name": "player",
                    "desc": "",
                    "lua_type": "Player"
                },
                {
                    "name": "assetType",
                    "desc": "",
                    "lua_type": "GameConfigAssetType"
                },
                {
                    "name": "idOrKey",
                    "desc": "",
                    "lua_type": "string | number"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "Promise<boolean>"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 265,
                "path": "src/gameproductservice/src/Shared/GameProductDataService.lua"
            }
        },
        {
            "name": "SetPlayerOwnershipOverride",
            "desc": "Sets a server-authoritative override for the player's ownership of the asset. When set, the\noverride wins over the cloud query and any session purchase, forcing ownership on (`true`) or off\n(`false`). Passing `nil` clears the override.\n\nThe override is stored in a replicated attribute and applied to every realm's ownership tracker,\nso it drives client-side ownership-gated UI. It can only be set from the server: this rejects on\nthe client realm, and [GameProductServiceClient] deliberately exposes no setter, so a player can\nnever grant themselves ownership.",
            "params": [
                {
                    "name": "self",
                    "desc": "",
                    "lua_type": "GameProductDataService"
                },
                {
                    "name": "player",
                    "desc": "",
                    "lua_type": "Player"
                },
                {
                    "name": "assetType",
                    "desc": "",
                    "lua_type": "GameConfigAssetType"
                },
                {
                    "name": "idOrKey",
                    "desc": "",
                    "lua_type": "string | number"
                },
                {
                    "name": "ownsAsset",
                    "desc": "",
                    "lua_type": "boolean?"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "Promise"
                }
            ],
            "function_type": "static",
            "realm": [
                "Server"
            ],
            "source": {
                "line": 298,
                "path": "src/gameproductservice/src/Shared/GameProductDataService.lua"
            }
        },
        {
            "name": "ClearPlayerOwnershipOverride",
            "desc": "Clears any ownership override for the asset, so ownership falls back to the cloud query.\nEquivalent to `SetPlayerOwnershipOverride(player, assetType, idOrKey, nil)`, and likewise\nserver-only.",
            "params": [
                {
                    "name": "self",
                    "desc": "",
                    "lua_type": "GameProductDataService"
                },
                {
                    "name": "player",
                    "desc": "",
                    "lua_type": "Player"
                },
                {
                    "name": "assetType",
                    "desc": "",
                    "lua_type": "GameConfigAssetType"
                },
                {
                    "name": "idOrKey",
                    "desc": "",
                    "lua_type": "string | number"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "Promise"
                }
            ],
            "function_type": "static",
            "realm": [
                "Server"
            ],
            "source": {
                "line": 333,
                "path": "src/gameproductservice/src/Shared/GameProductDataService.lua"
            }
        },
        {
            "name": "PromiseIsOwnable",
            "desc": "Returns true if item has been purchased this session",
            "params": [
                {
                    "name": "self",
                    "desc": "",
                    "lua_type": "GameProductDataService"
                },
                {
                    "name": "player",
                    "desc": "",
                    "lua_type": "Player"
                },
                {
                    "name": "assetType",
                    "desc": "",
                    "lua_type": "GameConfigAssetType"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "Promise<boolean>"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 349,
                "path": "src/gameproductservice/src/Shared/GameProductDataService.lua"
            }
        },
        {
            "name": "PromisePlayerIsPromptOpen",
            "desc": "Promises the player prompt as opened",
            "params": [
                {
                    "name": "self",
                    "desc": "",
                    "lua_type": "GameProductDataService"
                },
                {
                    "name": "player",
                    "desc": "",
                    "lua_type": "Player"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "Promise<boolean>"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 368,
                "path": "src/gameproductservice/src/Shared/GameProductDataService.lua"
            }
        },
        {
            "name": "PromisePlayerPromptClosed",
            "desc": "Promises the player prompt as opened",
            "params": [
                {
                    "name": "self",
                    "desc": "",
                    "lua_type": "GameProductDataService"
                },
                {
                    "name": "player",
                    "desc": "",
                    "lua_type": "Player"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "Promise<boolean>"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 385,
                "path": "src/gameproductservice/src/Shared/GameProductDataService.lua"
            }
        },
        {
            "name": "ObservePlayerOwnership",
            "desc": "Observes player ownership",
            "params": [
                {
                    "name": "self",
                    "desc": "",
                    "lua_type": "GameProductDataService"
                },
                {
                    "name": "player",
                    "desc": "",
                    "lua_type": "Player"
                },
                {
                    "name": "assetType",
                    "desc": "",
                    "lua_type": "GameConfigAssetType"
                },
                {
                    "name": "idOrKey",
                    "desc": "",
                    "lua_type": "string | number"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "Observable<boolean>"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 404,
                "path": "src/gameproductservice/src/Shared/GameProductDataService.lua"
            }
        },
        {
            "name": "ObservePlayerAssetPurchased",
            "desc": "Fires when the specified player purchases an asset",
            "params": [
                {
                    "name": "self",
                    "desc": "",
                    "lua_type": "GameProductDataService"
                },
                {
                    "name": "player",
                    "desc": "",
                    "lua_type": "Player"
                },
                {
                    "name": "assetType",
                    "desc": "",
                    "lua_type": "GameConfigAssetType"
                },
                {
                    "name": "idOrKey",
                    "desc": "",
                    "lua_type": "string | number"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "Observable<>"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 436,
                "path": "src/gameproductservice/src/Shared/GameProductDataService.lua"
            }
        },
        {
            "name": "ObserveAssetPurchased",
            "desc": "Fires when any player purchases an asset",
            "params": [
                {
                    "name": "self",
                    "desc": "",
                    "lua_type": "GameProductDataService"
                },
                {
                    "name": "assetType",
                    "desc": "",
                    "lua_type": "GameConfigAssetType"
                },
                {
                    "name": "idOrKey",
                    "desc": "",
                    "lua_type": "string | number"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "Observable<Player>"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 469,
                "path": "src/gameproductservice/src/Shared/GameProductDataService.lua"
            }
        },
        {
            "name": "PromisePlayerOwnershipOrPrompt",
            "desc": "Checks if the asset is ownable and if it is, checks player ownership. Otherwise, it checks if the asset\nhas been purchased this session. If the asset has not been purchased this session it prompts the user to\npurchase the item.",
            "params": [
                {
                    "name": "self",
                    "desc": "",
                    "lua_type": "GameProductDataService"
                },
                {
                    "name": "player",
                    "desc": "",
                    "lua_type": "Player"
                },
                {
                    "name": "assetType",
                    "desc": "",
                    "lua_type": "GameConfigAssetType"
                },
                {
                    "name": "idOrKey",
                    "desc": "",
                    "lua_type": "string | number"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "Promise<boolean>"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 512,
                "path": "src/gameproductservice/src/Shared/GameProductDataService.lua"
            }
        }
    ],
    "properties": [],
    "types": [],
    "name": "GameProductDataService",
    "desc": "",
    "source": {
        "line": 5,
        "path": "src/gameproductservice/src/Shared/GameProductDataService.lua"
    }
}