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

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

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




## アクションの組み合わせと同時実行

すべてのサービスに共通する前提は [トランザクションアクションの組み合わせ]() にまとめています。先にそちらを読んでください。この節の残りは GS2-Stamina 固有の内容です。

GS2-Stamina のトランザクションアクションは、ネームスペース・ユーザー・スタミナモデルの組で決まる 1 つのスタミナを対象にします。スタミナはスタミナ値・最大値・回復間隔・回復量・超過値をまとめて保持しますが、各アクションは自分が実際に変える値だけを書き込むため、変える値が違えば別の対象になります。

操作 | 同じ行を重ねたとき | 入れ子越し | 別の対象になる境界 | 直列実行モード有効時
--- | --- | --- | --- | ---
スタミナ値の回復・消費<br>`RecoverStaminaByUserId` `ConsumeStaminaByUserId` | 統合される。合算した値で判定される | 合算される。ただし**回復の合計が自然回復で到達できる範囲を超えるとコンフリクト (409) になり、リトライでは解消しません** | ネームスペース・ユーザー・スタミナモデル・スタミナ値 | 変わらない。コンフリクトになる場合も含めて挙動は同じ
最大値の加算・減算<br>`RaiseMaxValueByUserId` `DecreaseMaxValueByUserId` | 統合される。合算した値で判定される | 合算される | ネームスペース・ユーザー・スタミナモデル・最大値 | 変わらない。もともと合算されて成立する
最大値の設定<br>`SetMaxValueByUserId` | 同値なら統合。値が違えば発行時にエラー | 失敗する | ネームスペース・ユーザー・スタミナモデル・最大値 | 同値なら入れ子越しでも成立する。値が違う場合は引き続きエラー (400)。値の絶対指定なので、後から実行された方が先の値を黙って上書きすることは許されない
回復間隔の設定<br>`SetRecoverIntervalByUserId` | 同値なら統合。値が違えば発行時にエラー | 失敗する | ネームスペース・ユーザー・スタミナモデル・回復間隔 | 同値なら入れ子越しでも成立する。値が違う場合は引き続きエラー (400)。値の絶対指定なので、後から実行された方が先の値を黙って上書きすることは許されない
回復量の設定<br>`SetRecoverValueByUserId` | 同値なら統合。値が違えば発行時にエラー | 失敗する | ネームスペース・ユーザー・スタミナモデル・回復量 | 同値なら入れ子越しでも成立する。値が違う場合は引き続きエラー (400)。値の絶対指定なので、後から実行された方が先の値を黙って上書きすることは許されない
検証アクション全般 | `multiplyValueSpecifyingQuantity` 未指定なら、検証タイプが `greater` `greaterEqual` のときはしきい値が合算された 1 つの条件になり、`less` `lessEqual` `equal` `notEqual` はまったく同じ検証が 1 件にまとめられるだけ。明示的に指定した場合は検証タイプによらずその指定に従う | 読み取りだけなので衝突しない | ネームスペース・ユーザー・スタミナモデル・検証タイプ | 変わらない。読み取りだけなのでもともと衝突しない

最大値の行は 2 つあり、境界が同じなので同居させられません。設定と加算・減算を 1 つのトランザクションに入れると失敗します。**直列実行モード（`enableSequentialExecution` または `TransactionSettingV2`）を有効にすると、アクションが 1 件ずつ実行され、それぞれが直前のアクションの書き込みを見られるようになるため、この制約はなくなります。最大値の設定と加算・減算を 1 つのトランザクションに入れられるようになります。結果は、正規化後の実行順で後から実行された方のアクションによって決まります（記述順ではありません）。設定が後なら絶対値でそのまま上書きされ、加算・減算が後ならもう一方が残した値に対する増減になります。**

回復と消費は統合後の合計で判定されます。スタミナ値は 0 を下回れず、回復は自然回復で到達できる範囲を超えられないので、単独なら収まる回復でも他の回復と合わさると弾かれることがあります。

検証アクションはトランザクション開始時点のスタミナを見ます。同じトランザクションで到達する値を検証することはできません。しきい値がまとめられてしまうので、検証タイプごとに 1 つまでにしてください。

### 入れ子になったトランザクションに注意

例外は回復だけです。回復が内側と外側の両方から届き、その合計が自然回復で到達できる範囲を超えると、リトライしても解消しないコンフリクト (409) になります。1 つのスタミナへの回復は、報酬や抽選の中身も含めて 1 トランザクションにつき 1 箇所にまとめてください。まとめられない場合は、下記の設定で回避できます。

### 制限を回避したい場合

スタミナ値の回復、最大値の加算・設定、回復間隔と回復量の設定は入手アクション、スタミナ値の消費と最大値の減算は消費アクションです。内側と外側から届いた回復どうしの衝突は `acquireActionUseJobQueue` を有効にすれば解消できますが、最大値の設定と減算の同居は `enableAtomicCommit` を無効にしないと解消しません。

### 同時実行とリトライ

回復・消費・最大値の増減・回復間隔や回復量の変更は、それぞれの結果が許容範囲に収まるかぎり、同時実行のリクエストが何本重なってもコンフリクトしません。変える値が違うリクエストどうしもコンフリクトしません。

それでもコンフリクト (409) が返ることがあるのは、同時に走った消費の合計が所持しているスタミナを超えた場合、同時に走った回復が自然回復の範囲を超える場合、管理コンソールやサーバー API からの変更と重なった場合です。1 つ目と 3 つ目はリトライすると最新の状態で判定し直されるので、収まっていれば成功します。

---


## Verify Action

検証アクション

### Gs2Stamina:VerifyStaminaValueByUserId

ユーザーIDを指定してスタミナ現在値を検証<br>

指定されたユーザーの現在のスタミナ値が指定された条件を指定された閾値に対して満たすことを、状態を変更せずに検証します。

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

|  | 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128文字 | ネームスペース名<br>ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 |
| userId | string |  | ✓|  |  ~ 128文字 | ユーザーID<br>`#{userId}` と設定することでログイン中のユーザーIDに置換されます。 |
| staminaName | string |  | ✓|  |  ~ 128文字 | スタミナモデル名<br>このスタミナインスタンスの回復パラメータ、容量、テーブル参照を定義する StaminaModel の名前。<br>ユーザーごとのスタミナ状態を対応するモデル定義に紐づけます。 |
| verifyType | 文字列列挙型<br>enum {<br>"less",<br>"lessEqual",<br>"greater",<br>"greaterEqual",<br>"equal",<br>"notEqual"<br>}<br> |  | ✓|  |  | 検証の種類less: 現在値が指定値未満であること / lessEqual: 現在値が指定値以下であること / greater: 現在値が指定値超過であること / greaterEqual: 現在値が指定値以上であること / equal: 現在値が指定値と一致すること / notEqual: 現在値が指定値と一致しないこと /  |
| value | int |  | ✓|  | 0 ~ 2147483646 | 現在値 |
| multiplyValueSpecifyingQuantity | bool |  | | true |  | 数量指定した際に、検証に使用する値も乗算するか |
| timeOffsetToken | string |  | |  |  ~ 1024文字 | タイムオフセットトークン |




**JSON**
```json
{
    "action": "Gs2Stamina:VerifyStaminaValueByUserId",
    "request": {
        "namespaceName": "[string]ネームスペース名",
        "userId": "[string]ユーザーID",
        "staminaName": "[string]スタミナモデル名",
        "verifyType": "[string]検証の種類",
        "value": "[int]現在値",
        "multiplyValueSpecifyingQuantity": "[bool]数量指定した際に、検証に使用する値も乗算するか",
        "timeOffsetToken": "[string]タイムオフセットトークン"
    }
}
```

**YAML**
```yaml

action: Gs2Stamina:VerifyStaminaValueByUserId
request:
  namespaceName: "[string]ネームスペース名"
  userId: "[string]ユーザーID"
  staminaName: "[string]スタミナモデル名"
  verifyType: "[string]検証の種類"
  value: "[int]現在値"
  multiplyValueSpecifyingQuantity: "[bool]数量指定した際に、検証に使用する値も乗算するか"
  timeOffsetToken: "[string]タイムオフセットトークン"
```

**GS2-Script**
```lua

transaction.service("stamina").verify.verify_stamina_value_by_user_id({
    namespaceName="[string]ネームスペース名",
    userId="[string]ユーザーID",
    staminaName="[string]スタミナモデル名",
    verifyType="[string]検証の種類",
    value="[int]現在値",
    multiplyValueSpecifyingQuantity="[bool]数量指定した際に、検証に使用する値も乗算するか",
    timeOffsetToken="[string]タイムオフセットトークン",
})
```


---

### Gs2Stamina:VerifyStaminaMaxValueByUserId

ユーザーIDを指定してスタミナ最大値を検証<br>

指定されたユーザーのスタミナの最大容量（バフによる変更を含む）が指定された条件を指定された閾値に対して満たすことを、状態を変更せずに検証します。

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

|  | 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128文字 | ネームスペース名<br>ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 |
| userId | string |  | ✓|  |  ~ 128文字 | ユーザーID<br>`#{userId}` と設定することでログイン中のユーザーIDに置換されます。 |
| staminaName | string |  | ✓|  |  ~ 128文字 | スタミナモデル名<br>このスタミナインスタンスの回復パラメータ、容量、テーブル参照を定義する StaminaModel の名前。<br>ユーザーごとのスタミナ状態を対応するモデル定義に紐づけます。 |
| verifyType | 文字列列挙型<br>enum {<br>"less",<br>"lessEqual",<br>"greater",<br>"greaterEqual",<br>"equal",<br>"notEqual"<br>}<br> |  | ✓|  |  | 検証の種類less: 最大値が指定値未満であること / lessEqual: 最大値が指定値以下であること / greater: 最大値が指定値超過であること / greaterEqual: 最大値が指定値以上であること / equal: 最大値が指定値と一致すること / notEqual: 最大値が指定値と一致しないこと /  |
| value | int |  | ✓|  | 0 ~ 2147483646 | 最大値 |
| multiplyValueSpecifyingQuantity | bool |  | | true |  | 数量指定した際に、検証に使用する値も乗算するか |
| timeOffsetToken | string |  | |  |  ~ 1024文字 | タイムオフセットトークン |




**JSON**
```json
{
    "action": "Gs2Stamina:VerifyStaminaMaxValueByUserId",
    "request": {
        "namespaceName": "[string]ネームスペース名",
        "userId": "[string]ユーザーID",
        "staminaName": "[string]スタミナモデル名",
        "verifyType": "[string]検証の種類",
        "value": "[int]最大値",
        "multiplyValueSpecifyingQuantity": "[bool]数量指定した際に、検証に使用する値も乗算するか",
        "timeOffsetToken": "[string]タイムオフセットトークン"
    }
}
```

**YAML**
```yaml

action: Gs2Stamina:VerifyStaminaMaxValueByUserId
request:
  namespaceName: "[string]ネームスペース名"
  userId: "[string]ユーザーID"
  staminaName: "[string]スタミナモデル名"
  verifyType: "[string]検証の種類"
  value: "[int]最大値"
  multiplyValueSpecifyingQuantity: "[bool]数量指定した際に、検証に使用する値も乗算するか"
  timeOffsetToken: "[string]タイムオフセットトークン"
```

**GS2-Script**
```lua

transaction.service("stamina").verify.verify_stamina_max_value_by_user_id({
    namespaceName="[string]ネームスペース名",
    userId="[string]ユーザーID",
    staminaName="[string]スタミナモデル名",
    verifyType="[string]検証の種類",
    value="[int]最大値",
    multiplyValueSpecifyingQuantity="[bool]数量指定した際に、検証に使用する値も乗算するか",
    timeOffsetToken="[string]タイムオフセットトークン",
})
```


---

### Gs2Stamina:VerifyStaminaRecoverIntervalMinutesByUserId

ユーザーIDを指定してスタミナ回復間隔（分）を検証<br>

指定されたユーザーのスタミナの回復間隔（分）が指定された条件を指定された閾値に対して満たすことを、状態を変更せずに検証します。

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

|  | 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128文字 | ネームスペース名<br>ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 |
| userId | string |  | ✓|  |  ~ 128文字 | ユーザーID<br>`#{userId}` と設定することでログイン中のユーザーIDに置換されます。 |
| staminaName | string |  | ✓|  |  ~ 128文字 | スタミナモデル名<br>このスタミナインスタンスの回復パラメータ、容量、テーブル参照を定義する StaminaModel の名前。<br>ユーザーごとのスタミナ状態を対応するモデル定義に紐づけます。 |
| verifyType | 文字列列挙型<br>enum {<br>"less",<br>"lessEqual",<br>"greater",<br>"greaterEqual",<br>"equal",<br>"notEqual"<br>}<br> |  | ✓|  |  | 検証の種類less: 回復速度が指定値未満であること / lessEqual: 回復速度が指定値以下であること / greater: 回復速度が指定値超過であること / greaterEqual: 回復速度が指定値以上であること / equal: 回復速度が指定値と一致すること / notEqual: 回復速度が指定値と一致しないこと /  |
| value | int |  | ✓|  | 0 ~ 2147483646 | 回復速度 |
| multiplyValueSpecifyingQuantity | bool |  | | true |  | 数量指定した際に、検証に使用する値も乗算するか |
| timeOffsetToken | string |  | |  |  ~ 1024文字 | タイムオフセットトークン |




**JSON**
```json
{
    "action": "Gs2Stamina:VerifyStaminaRecoverIntervalMinutesByUserId",
    "request": {
        "namespaceName": "[string]ネームスペース名",
        "userId": "[string]ユーザーID",
        "staminaName": "[string]スタミナモデル名",
        "verifyType": "[string]検証の種類",
        "value": "[int]回復速度",
        "multiplyValueSpecifyingQuantity": "[bool]数量指定した際に、検証に使用する値も乗算するか",
        "timeOffsetToken": "[string]タイムオフセットトークン"
    }
}
```

**YAML**
```yaml

action: Gs2Stamina:VerifyStaminaRecoverIntervalMinutesByUserId
request:
  namespaceName: "[string]ネームスペース名"
  userId: "[string]ユーザーID"
  staminaName: "[string]スタミナモデル名"
  verifyType: "[string]検証の種類"
  value: "[int]回復速度"
  multiplyValueSpecifyingQuantity: "[bool]数量指定した際に、検証に使用する値も乗算するか"
  timeOffsetToken: "[string]タイムオフセットトークン"
```

**GS2-Script**
```lua

transaction.service("stamina").verify.verify_stamina_recover_interval_minutes_by_user_id({
    namespaceName="[string]ネームスペース名",
    userId="[string]ユーザーID",
    staminaName="[string]スタミナモデル名",
    verifyType="[string]検証の種類",
    value="[int]回復速度",
    multiplyValueSpecifyingQuantity="[bool]数量指定した際に、検証に使用する値も乗算するか",
    timeOffsetToken="[string]タイムオフセットトークン",
})
```


---

### Gs2Stamina:VerifyStaminaRecoverValueByUserId

ユーザーIDを指定してスタミナ回復量を検証<br>

指定されたユーザーのスタミナの回復量（バフによる変更を含む）が指定された条件を指定された閾値に対して満たすことを、状態を変更せずに検証します。

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

|  | 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128文字 | ネームスペース名<br>ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 |
| userId | string |  | ✓|  |  ~ 128文字 | ユーザーID<br>`#{userId}` と設定することでログイン中のユーザーIDに置換されます。 |
| staminaName | string |  | ✓|  |  ~ 128文字 | スタミナモデル名<br>このスタミナインスタンスの回復パラメータ、容量、テーブル参照を定義する StaminaModel の名前。<br>ユーザーごとのスタミナ状態を対応するモデル定義に紐づけます。 |
| verifyType | 文字列列挙型<br>enum {<br>"less",<br>"lessEqual",<br>"greater",<br>"greaterEqual",<br>"equal",<br>"notEqual"<br>}<br> |  | ✓|  |  | 検証の種類less: 回復量が指定値未満であること / lessEqual: 回復量が指定値以下であること / greater: 回復量が指定値超過であること / greaterEqual: 回復量が指定値以上であること / equal: 回復量が指定値と一致すること / notEqual: 回復量が指定値と一致しないこと /  |
| value | int |  | ✓|  | 0 ~ 2147483646 | 回復量 |
| multiplyValueSpecifyingQuantity | bool |  | | true |  | 数量指定した際に、検証に使用する値も乗算するか |
| timeOffsetToken | string |  | |  |  ~ 1024文字 | タイムオフセットトークン |




**JSON**
```json
{
    "action": "Gs2Stamina:VerifyStaminaRecoverValueByUserId",
    "request": {
        "namespaceName": "[string]ネームスペース名",
        "userId": "[string]ユーザーID",
        "staminaName": "[string]スタミナモデル名",
        "verifyType": "[string]検証の種類",
        "value": "[int]回復量",
        "multiplyValueSpecifyingQuantity": "[bool]数量指定した際に、検証に使用する値も乗算するか",
        "timeOffsetToken": "[string]タイムオフセットトークン"
    }
}
```

**YAML**
```yaml

action: Gs2Stamina:VerifyStaminaRecoverValueByUserId
request:
  namespaceName: "[string]ネームスペース名"
  userId: "[string]ユーザーID"
  staminaName: "[string]スタミナモデル名"
  verifyType: "[string]検証の種類"
  value: "[int]回復量"
  multiplyValueSpecifyingQuantity: "[bool]数量指定した際に、検証に使用する値も乗算するか"
  timeOffsetToken: "[string]タイムオフセットトークン"
```

**GS2-Script**
```lua

transaction.service("stamina").verify.verify_stamina_recover_value_by_user_id({
    namespaceName="[string]ネームスペース名",
    userId="[string]ユーザーID",
    staminaName="[string]スタミナモデル名",
    verifyType="[string]検証の種類",
    value="[int]回復量",
    multiplyValueSpecifyingQuantity="[bool]数量指定した際に、検証に使用する値も乗算するか",
    timeOffsetToken="[string]タイムオフセットトークン",
})
```


---

### Gs2Stamina:VerifyStaminaOverflowValueByUserId

ユーザーIDを指定してスタミナオーバーフロー量を検証<br>

指定されたユーザーのスタミナのオーバーフロー量が指定された条件を指定された閾値に対して満たすことを、状態を変更せずに検証します。

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

|  | 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128文字 | ネームスペース名<br>ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 |
| userId | string |  | ✓|  |  ~ 128文字 | ユーザーID<br>`#{userId}` と設定することでログイン中のユーザーIDに置換されます。 |
| staminaName | string |  | ✓|  |  ~ 128文字 | スタミナモデル名<br>このスタミナインスタンスの回復パラメータ、容量、テーブル参照を定義する StaminaModel の名前。<br>ユーザーごとのスタミナ状態を対応するモデル定義に紐づけます。 |
| verifyType | 文字列列挙型<br>enum {<br>"less",<br>"lessEqual",<br>"greater",<br>"greaterEqual",<br>"equal",<br>"notEqual"<br>}<br> |  | ✓|  |  | 検証の種類less: オーバーフロー量が指定値未満であること / lessEqual: オーバーフロー量が指定値以下であること / greater: オーバーフロー量が指定値超過であること / greaterEqual: オーバーフロー量が指定値以上であること / equal: オーバーフロー量が指定値と一致すること / notEqual: オーバーフロー量が指定値と一致しないこと /  |
| value | int |  | ✓|  | 0 ~ 2147483646 | オーバーフロー量 |
| multiplyValueSpecifyingQuantity | bool |  | | true |  | 数量指定した際に、検証に使用する値も乗算するか |
| timeOffsetToken | string |  | |  |  ~ 1024文字 | タイムオフセットトークン |




**JSON**
```json
{
    "action": "Gs2Stamina:VerifyStaminaOverflowValueByUserId",
    "request": {
        "namespaceName": "[string]ネームスペース名",
        "userId": "[string]ユーザーID",
        "staminaName": "[string]スタミナモデル名",
        "verifyType": "[string]検証の種類",
        "value": "[int]オーバーフロー量",
        "multiplyValueSpecifyingQuantity": "[bool]数量指定した際に、検証に使用する値も乗算するか",
        "timeOffsetToken": "[string]タイムオフセットトークン"
    }
}
```

**YAML**
```yaml

action: Gs2Stamina:VerifyStaminaOverflowValueByUserId
request:
  namespaceName: "[string]ネームスペース名"
  userId: "[string]ユーザーID"
  staminaName: "[string]スタミナモデル名"
  verifyType: "[string]検証の種類"
  value: "[int]オーバーフロー量"
  multiplyValueSpecifyingQuantity: "[bool]数量指定した際に、検証に使用する値も乗算するか"
  timeOffsetToken: "[string]タイムオフセットトークン"
```

**GS2-Script**
```lua

transaction.service("stamina").verify.verify_stamina_overflow_value_by_user_id({
    namespaceName="[string]ネームスペース名",
    userId="[string]ユーザーID",
    staminaName="[string]スタミナモデル名",
    verifyType="[string]検証の種類",
    value="[int]オーバーフロー量",
    multiplyValueSpecifyingQuantity="[bool]数量指定した際に、検証に使用する値も乗算するか",
    timeOffsetToken="[string]タイムオフセットトークン",
})
```


---

## Consume Action

消費アクション

### Gs2Stamina:DecreaseMaxValueByUserId

ユーザーIDを指定してスタミナの最大値の減算<br>

指定されたユーザーのスタミナの最大容量を指定された量だけ減少させます。スタミナ容量へのデバフやペナルティの適用に使用できます。

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

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

|  | 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128文字 | ネームスペース名<br>ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 |
| staminaName | string |  | ✓|  |  ~ 128文字 | スタミナモデル名<br>このスタミナインスタンスの回復パラメータ、容量、テーブル参照を定義する StaminaModel の名前。<br>ユーザーごとのスタミナ状態を対応するモデル定義に紐づけます。 |
| userId | string |  | ✓|  |  ~ 128文字 | ユーザーID<br>`#{userId}` と設定することでログイン中のユーザーIDに置換されます。 |
| decreaseValue | int |  | ✓|  | 0 ~ 2147483646 | 減算する最大スタミナ量 |
| timeOffsetToken | string |  | |  |  ~ 1024文字 | タイムオフセットトークン |




**JSON**
```json
{
    "action": "Gs2Stamina:DecreaseMaxValueByUserId",
    "request": {
        "namespaceName": "[string]ネームスペース名",
        "staminaName": "[string]スタミナモデル名",
        "userId": "[string]ユーザーID",
        "decreaseValue": "[int]減算する最大スタミナ量",
        "timeOffsetToken": "[string]タイムオフセットトークン"
    }
}
```

**YAML**
```yaml

action: Gs2Stamina:DecreaseMaxValueByUserId
request:
  namespaceName: "[string]ネームスペース名"
  staminaName: "[string]スタミナモデル名"
  userId: "[string]ユーザーID"
  decreaseValue: "[int]減算する最大スタミナ量"
  timeOffsetToken: "[string]タイムオフセットトークン"
```

**GS2-Script**
```lua

transaction.service("stamina").consume.decrease_max_value_by_user_id({
    namespaceName="[string]ネームスペース名",
    staminaName="[string]スタミナモデル名",
    userId="[string]ユーザーID",
    decreaseValue="[int]減算する最大スタミナ量",
    timeOffsetToken="[string]タイムオフセットトークン",
})
```


---

### Gs2Stamina:ConsumeStaminaByUserId

ユーザーIDを指定してスタミナを消費<br>

指定されたユーザーの現在のスタミナ値から指定された量を差し引きます。現在のスタミナ値が消費量未満の場合、Insufficientエラーを返します。

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

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

|  | 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128文字 | ネームスペース名<br>ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 |
| staminaName | string |  | ✓|  |  ~ 128文字 | スタミナモデル名<br>このスタミナインスタンスの回復パラメータ、容量、テーブル参照を定義する StaminaModel の名前。<br>ユーザーごとのスタミナ状態を対応するモデル定義に紐づけます。 |
| userId | string |  | ✓|  |  ~ 128文字 | ユーザーID<br>`#{userId}` と設定することでログイン中のユーザーIDに置換されます。 |
| consumeValue | int |  | ✓|  | 1 ~ 2147483646 | 消費するスタミナ量 |
| timeOffsetToken | string |  | |  |  ~ 1024文字 | タイムオフセットトークン |




**JSON**
```json
{
    "action": "Gs2Stamina:ConsumeStaminaByUserId",
    "request": {
        "namespaceName": "[string]ネームスペース名",
        "staminaName": "[string]スタミナモデル名",
        "userId": "[string]ユーザーID",
        "consumeValue": "[int]消費するスタミナ量",
        "timeOffsetToken": "[string]タイムオフセットトークン"
    }
}
```

**YAML**
```yaml

action: Gs2Stamina:ConsumeStaminaByUserId
request:
  namespaceName: "[string]ネームスペース名"
  staminaName: "[string]スタミナモデル名"
  userId: "[string]ユーザーID"
  consumeValue: "[int]消費するスタミナ量"
  timeOffsetToken: "[string]タイムオフセットトークン"
```

**GS2-Script**
```lua

transaction.service("stamina").consume.consume_stamina_by_user_id({
    namespaceName="[string]ネームスペース名",
    staminaName="[string]スタミナモデル名",
    userId="[string]ユーザーID",
    consumeValue="[int]消費するスタミナ量",
    timeOffsetToken="[string]タイムオフセットトークン",
})
```


---

## Acquire Action

入手アクション

### Gs2Stamina:RecoverStaminaByUserId

ユーザーIDを指定してスタミナを回復<br>

指定された量のスタミナを最大容量まで回復します。回復により値が最大値を超え、オーバーフローモードが有効な場合、超過分はオーバーフロー値として記録されます。

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

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

|  | 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128文字 | ネームスペース名<br>ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 |
| staminaName | string |  | ✓|  |  ~ 128文字 | スタミナモデル名<br>このスタミナインスタンスの回復パラメータ、容量、テーブル参照を定義する StaminaModel の名前。<br>ユーザーごとのスタミナ状態を対応するモデル定義に紐づけます。 |
| userId | string |  | ✓|  |  ~ 128文字 | ユーザーID<br>`#{userId}` と設定することでログイン中のユーザーIDに置換されます。 |
| recoverValue | int |  | ✓|  | 1 ~ 2147483646 | スタミナの回復量 |
| timeOffsetToken | string |  | |  |  ~ 1024文字 | タイムオフセットトークン |




**JSON**
```json
{
    "action": "Gs2Stamina:RecoverStaminaByUserId",
    "request": {
        "namespaceName": "[string]ネームスペース名",
        "staminaName": "[string]スタミナモデル名",
        "userId": "[string]ユーザーID",
        "recoverValue": "[int]スタミナの回復量",
        "timeOffsetToken": "[string]タイムオフセットトークン"
    }
}
```

**YAML**
```yaml

action: Gs2Stamina:RecoverStaminaByUserId
request:
  namespaceName: "[string]ネームスペース名"
  staminaName: "[string]スタミナモデル名"
  userId: "[string]ユーザーID"
  recoverValue: "[int]スタミナの回復量"
  timeOffsetToken: "[string]タイムオフセットトークン"
```

**GS2-Script**
```lua

transaction.service("stamina").acquire.recover_stamina_by_user_id({
    namespaceName="[string]ネームスペース名",
    staminaName="[string]スタミナモデル名",
    userId="[string]ユーザーID",
    recoverValue="[int]スタミナの回復量",
    timeOffsetToken="[string]タイムオフセットトークン",
})
```


---

### Gs2Stamina:RaiseMaxValueByUserId

ユーザーIDを指定してスタミナの最大値を加算<br>

指定された量だけスタミナの最大容量を恒久的に増加させます。レベルアップ報酬やアイテム効果などの恒久的なステータス上昇に使用されます。

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

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

|  | 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128文字 | ネームスペース名<br>ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 |
| staminaName | string |  | ✓|  |  ~ 128文字 | スタミナモデル名<br>このスタミナインスタンスの回復パラメータ、容量、テーブル参照を定義する StaminaModel の名前。<br>ユーザーごとのスタミナ状態を対応するモデル定義に紐づけます。 |
| userId | string |  | ✓|  |  ~ 128文字 | ユーザーID<br>`#{userId}` と設定することでログイン中のユーザーIDに置換されます。 |
| raiseValue | int |  | ✓|  | 0 ~ 2147483646 | 上昇する最大スタミナ量 |
| timeOffsetToken | string |  | |  |  ~ 1024文字 | タイムオフセットトークン |




**JSON**
```json
{
    "action": "Gs2Stamina:RaiseMaxValueByUserId",
    "request": {
        "namespaceName": "[string]ネームスペース名",
        "staminaName": "[string]スタミナモデル名",
        "userId": "[string]ユーザーID",
        "raiseValue": "[int]上昇する最大スタミナ量",
        "timeOffsetToken": "[string]タイムオフセットトークン"
    }
}
```

**YAML**
```yaml

action: Gs2Stamina:RaiseMaxValueByUserId
request:
  namespaceName: "[string]ネームスペース名"
  staminaName: "[string]スタミナモデル名"
  userId: "[string]ユーザーID"
  raiseValue: "[int]上昇する最大スタミナ量"
  timeOffsetToken: "[string]タイムオフセットトークン"
```

**GS2-Script**
```lua

transaction.service("stamina").acquire.raise_max_value_by_user_id({
    namespaceName="[string]ネームスペース名",
    staminaName="[string]スタミナモデル名",
    userId="[string]ユーザーID",
    raiseValue="[int]上昇する最大スタミナ量",
    timeOffsetToken="[string]タイムオフセットトークン",
})
```


---

### Gs2Stamina:SetMaxValueByUserId

ユーザーIDを指定してスタミナの最大値を更新<br>

スタミナの最大容量を指定された値に設定します。監査目的で変更前のスタミナ状態がレスポンスに保持されます。管理者によるオーバーライドや特別イベントでの調整に使用されます。

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

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

|  | 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128文字 | ネームスペース名<br>ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 |
| staminaName | string |  | ✓|  |  ~ 128文字 | スタミナモデル名<br>このスタミナインスタンスの回復パラメータ、容量、テーブル参照を定義する StaminaModel の名前。<br>ユーザーごとのスタミナ状態を対応するモデル定義に紐づけます。 |
| userId | string |  | ✓|  |  ~ 128文字 | ユーザーID<br>`#{userId}` と設定することでログイン中のユーザーIDに置換されます。 |
| maxValue | int |  | ✓|  | 1 ~ 2147483646 | スタミナの最大値<br>StaminaModel から解決され、オプションでプレイヤーの GS2-Experience ランクに基づく MaxStaminaTable でオーバーライドされるユーザーごとのスタミナ最大値。<br>オーバーフロー無効時は initialCapacity が下限となります。オーバーフロー有効時は maxCapacity が上限となります。<br>自然回復はこの値で停止します。 |
| timeOffsetToken | string |  | |  |  ~ 1024文字 | タイムオフセットトークン |




**JSON**
```json
{
    "action": "Gs2Stamina:SetMaxValueByUserId",
    "request": {
        "namespaceName": "[string]ネームスペース名",
        "staminaName": "[string]スタミナモデル名",
        "userId": "[string]ユーザーID",
        "maxValue": "[int]スタミナの最大値",
        "timeOffsetToken": "[string]タイムオフセットトークン"
    }
}
```

**YAML**
```yaml

action: Gs2Stamina:SetMaxValueByUserId
request:
  namespaceName: "[string]ネームスペース名"
  staminaName: "[string]スタミナモデル名"
  userId: "[string]ユーザーID"
  maxValue: "[int]スタミナの最大値"
  timeOffsetToken: "[string]タイムオフセットトークン"
```

**GS2-Script**
```lua

transaction.service("stamina").acquire.set_max_value_by_user_id({
    namespaceName="[string]ネームスペース名",
    staminaName="[string]スタミナモデル名",
    userId="[string]ユーザーID",
    maxValue="[int]スタミナの最大値",
    timeOffsetToken="[string]タイムオフセットトークン",
})
```


---

### Gs2Stamina:SetRecoverIntervalByUserId

ユーザーIDを指定してスタミナの回復間隔(分)を更新<br>

スタミナの回復間隔を指定された値（分）に設定します。監査目的で変更前のスタミナ状態がレスポンスに保持されます。スタミナが自動的に回復する頻度を制御します。

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

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

|  | 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128文字 | ネームスペース名<br>ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 |
| staminaName | string |  | ✓|  |  ~ 128文字 | スタミナモデル名<br>このスタミナインスタンスの回復パラメータ、容量、テーブル参照を定義する StaminaModel の名前。<br>ユーザーごとのスタミナ状態を対応するモデル定義に紐づけます。 |
| userId | string |  | ✓|  |  ~ 128文字 | ユーザーID<br>`#{userId}` と設定することでログイン中のユーザーIDに置換されます。 |
| recoverIntervalMinutes | int |  | ✓|  | 1 ~ 2147483646 | スタミナの回復間隔(分) |
| timeOffsetToken | string |  | |  |  ~ 1024文字 | タイムオフセットトークン |




**JSON**
```json
{
    "action": "Gs2Stamina:SetRecoverIntervalByUserId",
    "request": {
        "namespaceName": "[string]ネームスペース名",
        "staminaName": "[string]スタミナモデル名",
        "userId": "[string]ユーザーID",
        "recoverIntervalMinutes": "[int]スタミナの回復間隔(分)",
        "timeOffsetToken": "[string]タイムオフセットトークン"
    }
}
```

**YAML**
```yaml

action: Gs2Stamina:SetRecoverIntervalByUserId
request:
  namespaceName: "[string]ネームスペース名"
  staminaName: "[string]スタミナモデル名"
  userId: "[string]ユーザーID"
  recoverIntervalMinutes: "[int]スタミナの回復間隔(分)"
  timeOffsetToken: "[string]タイムオフセットトークン"
```

**GS2-Script**
```lua

transaction.service("stamina").acquire.set_recover_interval_by_user_id({
    namespaceName="[string]ネームスペース名",
    staminaName="[string]スタミナモデル名",
    userId="[string]ユーザーID",
    recoverIntervalMinutes="[int]スタミナの回復間隔(分)",
    timeOffsetToken="[string]タイムオフセットトークン",
})
```


---

### Gs2Stamina:SetRecoverValueByUserId

ユーザーIDを指定してスタミナの回復量を設定<br>

スタミナの回復量を指定された値に設定します。監査目的で変更前のスタミナ状態がレスポンスに保持されます。回復間隔ごとに回復するスタミナ量を制御します。

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

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

|  | 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128文字 | ネームスペース名<br>ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 |
| staminaName | string |  | ✓|  |  ~ 128文字 | スタミナモデル名<br>このスタミナインスタンスの回復パラメータ、容量、テーブル参照を定義する StaminaModel の名前。<br>ユーザーごとのスタミナ状態を対応するモデル定義に紐づけます。 |
| userId | string |  | ✓|  |  ~ 128文字 | ユーザーID<br>`#{userId}` と設定することでログイン中のユーザーIDに置換されます。 |
| recoverValue | int |  | ✓|  | 1 ~ 2147483646 | スタミナの回復量 |
| timeOffsetToken | string |  | |  |  ~ 1024文字 | タイムオフセットトークン |




**JSON**
```json
{
    "action": "Gs2Stamina:SetRecoverValueByUserId",
    "request": {
        "namespaceName": "[string]ネームスペース名",
        "staminaName": "[string]スタミナモデル名",
        "userId": "[string]ユーザーID",
        "recoverValue": "[int]スタミナの回復量",
        "timeOffsetToken": "[string]タイムオフセットトークン"
    }
}
```

**YAML**
```yaml

action: Gs2Stamina:SetRecoverValueByUserId
request:
  namespaceName: "[string]ネームスペース名"
  staminaName: "[string]スタミナモデル名"
  userId: "[string]ユーザーID"
  recoverValue: "[int]スタミナの回復量"
  timeOffsetToken: "[string]タイムオフセットトークン"
```

**GS2-Script**
```lua

transaction.service("stamina").acquire.set_recover_value_by_user_id({
    namespaceName="[string]ネームスペース名",
    staminaName="[string]スタミナモデル名",
    userId="[string]ユーザーID",
    recoverValue="[int]スタミナの回復量",
    timeOffsetToken="[string]タイムオフセットトークン",
})
```


---



