> For the complete documentation index, see [llms.txt](/llms.txt)

# GS2-Script トランザクションアクション

検証/消費/入手の各トランザクションアクションの仕様






## Acquire Action

入手アクション

### Gs2Script:InvokeScript

スクリプトを実行<br>

指定されたLuaスクリプトを提供されたJSON引数で同期的に実行します。ステータスコード、戻り値、トランザクション情報、乱数状態、実行時間、標準出力を含む実行結果を返します。GS2サービス間のアトミック操作のためのトランザクション処理をサポートしています。

**数量指定可能なアクション：いいえ**

**反転可能なアクション：いいえ**

|  | 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 |
| --- | --- | --- | --- | --- | --- | --- |
| scriptId | string |  | ✓|  |  ~ 1024文字 | スクリプトGRN |
| userId | string |  | |  |  ~ 128文字 | ユーザーID<br>`#{userId}` と設定することでログイン中のユーザーIDに置換されます。 |
| args | string |  | | "{}" |  ~ 5242880文字 | スクリプトに渡される引数 (JSON形式) |
| randomStatus | RandomStatus |  | |  |  | 乱数の状態 |
| timeOffsetToken | string |  | |  |  ~ 1024文字 | タイムオフセットトークン |




**JSON**
```json
{
    "action": "Gs2Script:InvokeScript",
    "request": {
        "scriptId": "[string]スクリプトGRN",
        "userId": "[string]ユーザーID",
        "args": "[string]スクリプトに渡される引数 (JSON形式)",
        "randomStatus": {
            "seed": "[long]乱数シード",
            "used": [
                {
                    "category": "[long]カテゴリ",
                    "used": "[long]使用回数"
                }
            ]
        },
        "timeOffsetToken": "[string]タイムオフセットトークン"
    }
}
```

**YAML**
```yaml

action: Gs2Script:InvokeScript
request:
  scriptId: "[string]スクリプトGRN"
  userId: "[string]ユーザーID"
  args: "[string]スクリプトに渡される引数 (JSON形式)"
  randomStatus: 
    seed: "[long]乱数シード"
    used: 
    - category: "[long]カテゴリ"
      used: "[long]使用回数"
  timeOffsetToken: "[string]タイムオフセットトークン"
```

**GS2-Script**
```lua

transaction.service("script").acquire.invoke_script({
    scriptId="[string]スクリプトGRN",
    userId="[string]ユーザーID",
    args="[string]スクリプトに渡される引数 (JSON形式)",
    randomStatus={
        seed="[long]乱数シード",
        used={
                {
                    category="[long]カテゴリ",
                    used="[long]使用回数"
                }
            }
    },
    timeOffsetToken="[string]タイムオフセットトークン",
})
```


---



