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

# GS2-Exchange 스크립트 트리거 레퍼런스

확장 스크립트를 호출하는 이벤트 트리거의 레퍼런스



## 트리거

### exchange



**관련 메서드:**
exchange - 교환을 실행


#### 동기 실행 스크립트

 처리 전에, 스크립트가 동기 실행됩니다.

##### Request

| | 타입 | 설명 |
| --- | --- | --- |
| namespace | [Namespace](../sdk/#namespace) | 네임스페이스 |
| rateModel | [RateModel](../sdk/#ratemodel) | 교환 레이트 모델 |
| userId | string | 교환을 실행하는 사용자 ID |
| count | int | 교환량 |
| config | [Config[]](../sdk/#config) | 트랜잭션 변수에 적용할 설정값 |

##### Result

|  | 타입 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- |
| permit | bool | ✓ |  |  | 교환을 허용할지 여부 |
| rateMode | string | ✓ | "float" |  | 배율 모드 |
| rate | float |  | 1.0 | 0 ~ 1000 | 획득량 배율 |
| logRate | [LogRate](../sdk/#lograte) |  |  |  | 로그를 사용한 획득량 보정 |

##### 구현 예제


**Lua**
```lua

-- Request
local namespace = args.namespace
local rateModel = args.rateModel
local userId = args.userId
local count = args.count
local config = args.config

-- Business logic:
local permit = true
local rateMode = ""
local rate = 1.0
local logRate = nil

-- Result
result = {
  permit=permit,
  rateMode=rateMode,
  rate=rate,
  logRate=logRate
}
```


#### 비동기 실행 스크립트

 처리 후에, 스크립트가 비동기 실행됩니다.

##### Request

| | 타입 | 설명 |
| --- | --- | --- |
| namespace | [Namespace](../sdk/#namespace) | 네임스페이스 |
| rateModel | [RateModel](../sdk/#ratemodel) | 교환 레이트 모델 |
| userId | string | 교환을 실행하는 사용자 ID |
| count | int | 교환량 |
| config | [Config[]](../sdk/#config) | 트랜잭션 변수에 적용할 설정값 |


##### 구현 예제


**Lua**
```lua

-- Request
local namespace = args.namespace
local rateModel = args.rateModel
local userId = args.userId
local count = args.count
local config = args.config

-- 비동기 스크립트는 일반적으로 API 응답에 영향을 주지 않습니다.
-- 로그 출력이나 분석, 외부 알림 등에 사용됩니다.

result = {
}
```


---
  
### incrementalExchange



**관련 메서드:**
incrementalExchange - 코스트 상승형 교환 실행


#### 동기 실행 스크립트

 처리 전에, 스크립트가 동기 실행됩니다.

##### Request

| | 타입 | 설명 |
| --- | --- | --- |
| namespace | [Namespace](../sdk/#namespace) | 네임스페이스 |
| rateModel | [IncrementalRateModel](../sdk/#incrementalratemodel) | 교환 레이트 모델 |
| userId | string | 교환을 실행하는 사용자 ID |
| count | int | 교환량 |
| config | [Config[]](../sdk/#config) | 트랜잭션 변수에 적용할 설정값 |

##### Result

|  | 타입 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- |
| permit | bool | ✓ |  |  | 교환을 허용할지 여부 |

##### 구현 예제


**Lua**
```lua

-- Request
local namespace = args.namespace
local rateModel = args.rateModel
local userId = args.userId
local count = args.count
local config = args.config

-- Business logic:
local permit = true

-- Result
result = {
  permit=permit
}
```


#### 비동기 실행 스크립트

 처리 후에, 스크립트가 비동기 실행됩니다.

##### Request

| | 타입 | 설명 |
| --- | --- | --- |
| namespace | [Namespace](../sdk/#namespace) | 네임스페이스 |
| rateModel | [IncrementalRateModel](../sdk/#incrementalratemodel) | 교환 레이트 모델 |
| userId | string | 교환을 실행하는 사용자 ID |
| count | int | 교환량 |
| config | [Config[]](../sdk/#config) | 트랜잭션 변수에 적용할 설정값 |


##### 구현 예제


**Lua**
```lua

-- Request
local namespace = args.namespace
local rateModel = args.rateModel
local userId = args.userId
local count = args.count
local config = args.config

-- 비동기 스크립트는 일반적으로 API 응답에 영향을 주지 않습니다.
-- 로그 출력이나 분석, 외부 알림 등에 사용됩니다.

result = {
}
```


---
  
### calculateCost



**관련 메서드:**
incrementalExchange - 코스트 상승형 교환 실행
incrementalExchangeByUserId - 사용자 ID를 지정하여 코스트 상승형 교환 실행


#### 동기 실행 스크립트

 처리 전에, 스크립트가 동기 실행됩니다.

##### Request

| | 타입 | 설명 |
| --- | --- | --- |
| namespace | [Namespace](../sdk/#namespace) | 네임스페이스 |
| incrementalRateModel | [IncrementalRateModel](../sdk/#incrementalratemodel) | 코스트 상승형 교환 모델 |
| userId | string | 사용자ID |
| currentExchangeCount | int | 현재 교환 횟수 |
| quantity | int | 교환 수량 |

##### Result

|  | 타입 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- |
| costMode | string | ✓ | "num" |  | 코스트 계산 방법 |
| cost | long |  |  | 0 ~ 9223372036854775805 | 코스트 |
| logCost | [LogCost](../sdk/#logcost) |  |  |  | 로그를 사용한 코스트 계산 결과 |

##### 구현 예제


**Lua**
```lua

-- Request
local namespace = args.namespace
local incrementalRateModel = args.incrementalRateModel
local userId = args.userId
local currentExchangeCount = args.currentExchangeCount
local quantity = args.quantity

-- Business logic:
local costMode = ""
local cost = 0
local logCost = nil

-- Result
result = {
  costMode=costMode,
  cost=cost,
  logCost=logCost
}
```


---
  
### acquireAwait



**관련 메서드:**
acquire - 교환 대기의 보상을 취득
acquireByUserId - 사용자 ID를 지정하여 교환 대기의 보상을 취득
acquireForceByUserId - 교환 대기의 보상을 대기 시간 판정 없이 강제 취득


#### 동기 실행 스크립트

 처리 전에, 스크립트가 동기 실행됩니다.

##### Request

| | 타입 | 설명 |
| --- | --- | --- |
| namespace | [Namespace](../sdk/#namespace) | 네임스페이스 |
| rateModel | [RateModel](../sdk/#ratemodel) | 교환 레이트 모델 |
| awaitModel | [Await](../sdk/#await) | 교환 대기 |

##### Result

|  | 타입 | 필수 | 기본값 | 값 제한 | 설명 |
| --- | --- | --- | --- | --- | --- |
| permit | bool | ✓ |  |  | 교환 대기를 허용할지 여부 |

##### 구현 예제


**Lua**
```lua

-- Request
local namespace = args.namespace
local rateModel = args.rateModel
local awaitModel = args.awaitModel

-- Business logic:
local permit = true

-- Result
result = {
  permit=permit
}
```


#### 비동기 실행 스크립트

 처리 후에, 스크립트가 비동기 실행됩니다.

##### Request

| | 타입 | 설명 |
| --- | --- | --- |
| namespace | [Namespace](../sdk/#namespace) | 네임스페이스 |
| rateModel | [RateModel](../sdk/#ratemodel) | 교환 레이트 모델 |
| awaitModel | [Await](../sdk/#await) | 교환 대기 |


##### 구현 예제


**Lua**
```lua

-- Request
local namespace = args.namespace
local rateModel = args.rateModel
local awaitModel = args.awaitModel

-- 비동기 스크립트는 일반적으로 API 응답에 영향을 주지 않습니다.
-- 로그 출력이나 분석, 외부 알림 등에 사용됩니다.

result = {
}
```


---
  



