> 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]타임 오프셋 토큰",
})
```


---



