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

# GS2-Quest Script Trigger Reference

Reference for event triggers that call extended scripts



## Trigger

### startQuest

Quest Start

**Related methods:**
start - Start Quest
startByUserId - Start a quest by User ID


#### Synchronous Execution Script

The script is executed synchronously before the quest start process.

##### Request

| | Type | Description |
| --- | --- | --- |
| namespace | [Namespace](../sdk/#namespace) | Namespace |
| questGroupModel | [QuestGroupModel](../sdk/#questgroupmodel) | Quest Group Model |
| questModel | [QuestModel](../sdk/#questmodel) | Quest Model |
| randomSeed | long | Random Seed |
| rewards | [Reward[]](../sdk/#reward) | List of rewards obtainable from the quest |
| userId | string | User ID |
| config | [Config[]](../sdk/#config) | Configuration values applied to transaction variables |

##### Result

|  | Type | Required | Default | Value Limits | Description |
| --- | --- | --- | --- | --- | --- |
| permit | bool | ✓ |  |  | Whether to allow the quest to begin |
| overrideRandomSeed | long |  |  | 0 ~ 9223372036854775805 | Random Seed |
| overrideRewards | Reward[] |  |  | 0 ~ 1000 items | List of rewards obtainable from the quest |

##### Implementation Example


**Lua**
```lua

-- Request
local namespace = args.namespace
local questGroupModel = args.questGroupModel
local questModel = args.questModel
local randomSeed = args.randomSeed
local rewards = args.rewards
local userId = args.userId
local config = args.config

-- Business logic:
local permit = true
local overrideRandomSeed = 0
local overrideRewards = {}

-- Result
result = {
  permit=permit,
  overrideRandomSeed=overrideRandomSeed,
  overrideRewards=overrideRewards
}
```


#### Asynchronous Execution Script

The script is executed asynchronously after the quest start process.

##### Request

| | Type | Description |
| --- | --- | --- |
| namespace | [Namespace](../sdk/#namespace) | Namespace |
| questGroupModel | [QuestGroupModel](../sdk/#questgroupmodel) | Quest Group Model |
| questModel | [QuestModel](../sdk/#questmodel) | Quest Model |
| progress | [Progress](../sdk/#progress) | Quest Progress |
| config | [Config[]](../sdk/#config) | Configuration values applied to transaction variables |


##### Implementation Example


**Lua**
```lua

-- Request
local namespace = args.namespace
local questGroupModel = args.questGroupModel
local questModel = args.questModel
local progress = args.progress
local config = args.config

-- Asynchronous scripts typically do not affect the API response.
-- These scripts are typically used for logging, analytics, external notifications, and similar purposes.

result = {
}
```


---
  
### completeQuest

Quest cleared

**Related methods:**
end - Completed Quest
endByUserId - Complete quest by User ID


#### Synchronous Execution Script

The script is executed synchronously before the quest cleared process.

##### Request

| | Type | Description |
| --- | --- | --- |
| namespace | [Namespace](../sdk/#namespace) | Namespace |
| questGroupModel | [QuestGroupModel](../sdk/#questgroupmodel) | Quest Group Model |
| questModel | [QuestModel](../sdk/#questmodel) | Quest Model |
| rewards | [Reward[]](../sdk/#reward) | List of rewards obtained from quests |
| progress | [Progress](../sdk/#progress) | Quest Progress |
| config | [Config[]](../sdk/#config) | Configuration values applied to transaction variables |

##### Result

|  | Type | Required | Default | Value Limits | Description |
| --- | --- | --- | --- | --- | --- |
| permit | bool | ✓ |  |  | Whether to allow quests to be cleared |
| overrideRewards | Reward[] |  |  | 0 ~ 1000 items | List of rewards obtainable from the quest |

##### Implementation Example


**Lua**
```lua

-- Request
local namespace = args.namespace
local questGroupModel = args.questGroupModel
local questModel = args.questModel
local rewards = args.rewards
local progress = args.progress
local config = args.config

-- Business logic:
local permit = true
local overrideRewards = {}

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


#### Asynchronous Execution Script

The script is executed asynchronously after the quest cleared process.

##### Request

| | Type | Description |
| --- | --- | --- |
| namespace | [Namespace](../sdk/#namespace) | Namespace |
| questGroupModel | [QuestGroupModel](../sdk/#questgroupmodel) | Quest Group Model |
| questModel | [QuestModel](../sdk/#questmodel) | Quest Model |
| rewards | [Reward[]](../sdk/#reward) | List of rewards obtained from quests |
| progress | [Progress](../sdk/#progress) | Quest Progress |
| config | [Config[]](../sdk/#config) | Configuration values applied to transaction variables |


##### Implementation Example


**Lua**
```lua

-- Request
local namespace = args.namespace
local questGroupModel = args.questGroupModel
local questModel = args.questModel
local rewards = args.rewards
local progress = args.progress
local config = args.config

-- Asynchronous scripts typically do not affect the API response.
-- These scripts are typically used for logging, analytics, external notifications, and similar purposes.

result = {
}
```


---
  
### failedQuest

Quest to fail

**Related methods:**
end - Completed Quest
endByUserId - Complete quest by User ID


#### Synchronous Execution Script

The script is executed synchronously before the quest to fail process.

##### Request

| | Type | Description |
| --- | --- | --- |
| namespace | [Namespace](../sdk/#namespace) | Namespace |
| questGroupModel | [QuestGroupModel](../sdk/#questgroupmodel) | Quest Group Model |
| questModel | [QuestModel](../sdk/#questmodel) | Quest Model |
| rewards | [Reward[]](../sdk/#reward) | List of rewards obtained from quests |
| progress | [Progress](../sdk/#progress) | Quest Progress |
| config | [Config[]](../sdk/#config) | Configuration values applied to transaction variables |

##### Result

|  | Type | Required | Default | Value Limits | Description |
| --- | --- | --- | --- | --- | --- |
| permit | bool | ✓ |  |  | Whether to allow the quest to fail |
| overrideRewards | Reward[] |  |  | 0 ~ 1000 items | List of rewards obtainable from the quest |

##### Implementation Example


**Lua**
```lua

-- Request
local namespace = args.namespace
local questGroupModel = args.questGroupModel
local questModel = args.questModel
local rewards = args.rewards
local progress = args.progress
local config = args.config

-- Business logic:
local permit = true
local overrideRewards = {}

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


#### Asynchronous Execution Script

The script is executed asynchronously after the quest to fail process.

##### Request

| | Type | Description |
| --- | --- | --- |
| namespace | [Namespace](../sdk/#namespace) | Namespace |
| questGroupModel | [QuestGroupModel](../sdk/#questgroupmodel) | Quest Group Model |
| questModel | [QuestModel](../sdk/#questmodel) | Quest Model |
| rewards | [Reward[]](../sdk/#reward) | List of rewards obtained from quests |
| progress | [Progress](../sdk/#progress) | Quest Progress |
| config | [Config[]](../sdk/#config) | Configuration values applied to transaction variables |


##### Implementation Example


**Lua**
```lua

-- Request
local namespace = args.namespace
local questGroupModel = args.questGroupModel
local questModel = args.questModel
local rewards = args.rewards
local progress = args.progress
local config = args.config

-- Asynchronous scripts typically do not affect the API response.
-- These scripts are typically used for logging, analytics, external notifications, and similar purposes.

result = {
}
```


---
  



