Skip to main content

GameProductDataService

Functions​

Start​

GameProductDataService.Start(self: GameProductDataService) → ()

Starts the service. Should be done via ServiceBag

SetServerOnlyPrompting​

GameProductDataService.SetServerOnlyPrompting(
serverOnly: boolean
) → ()

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(self: GameProductDataService) → 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(
player: Player,
assetTracker: PlayerAssetMarketTracker,
idOrKey: string | 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(
player: Player,
assetType: GameConfigAssetType,
idOrKey: string | number
) → boolean

Returns true if item has been purchased this session

PromisePromptPurchase​

GameProductDataService.PromisePromptPurchase(
player: Player,
assetType: GameConfigAssetType,
idOrKey: string | number
) → Promise<boolean>

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

PromisePlayerOwnership​

GameProductDataService.PromisePlayerOwnership(
player: Player,
assetType: GameConfigAssetType,
idOrKey: string | 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(
player: Player,
assetType: GameConfigAssetType,
idOrKey: string | number,
ownsAsset: boolean?
) → 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(
player: Player,
assetType: GameConfigAssetType,
idOrKey: string | 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(
player: Player,
assetType: GameConfigAssetType
) → 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(
player: Player,
assetType: GameConfigAssetType,
idOrKey: string | number
) → Observable<boolean>

Observes player ownership

ObservePlayerAssetPurchased​

GameProductDataService.ObservePlayerAssetPurchased(
player: Player,
assetType: GameConfigAssetType,
idOrKey: string | number
) → Observable<>

Fires when the specified player purchases an asset

ObserveAssetPurchased​

GameProductDataService.ObserveAssetPurchased(
assetType: GameConfigAssetType,
idOrKey: string | number
) → Observable<Player>

Fires when any player purchases an asset

PromisePlayerOwnershipOrPrompt​

GameProductDataService.PromisePlayerOwnershipOrPrompt(
player: Player,
assetType: GameConfigAssetType,
idOrKey: string | 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"
    }
}