【RGSS3】逃走すると確率で所持金の10%を落とすスクリプト

たかな
記事: 49
登録日時: 2020年4月26日(日) 11:17

【RGSS3】逃走すると確率で所持金の10%を落とすスクリプト

投稿記事by たかな » 2020年8月08日(土) 21:35

RGSS3で敵から逃げているとお金を落としてしまうというペナルティを着けたいです。
どなたかよろしくお願いします。

TOMO
記事: 343
登録日時: 2015年11月16日(月) 20:12
連絡を取る:

Re: 【RGSS3】逃走すると確率で所持金の10%を落とすスクリプト

投稿記事by TOMO » 2020年8月09日(日) 16:33

メッセージありだと多分こんな感じです

コード: 全て選択

module BattleManager
  #--------------------------------------------------------------------------
  # ● 逃走の処理
  #--------------------------------------------------------------------------
  def self.process_escape
    $game_message.add(sprintf(Vocab::EscapeStart, $game_party.name))
    success = @preemptive ? true : (rand < @escape_ratio)
    Sound.play_escape
    if success
      # 追加
      n = $game_party.gold / 10 # 現在所持金の10%
      $game_message.add("%s達は%d\\G落とした。", $game_party.name, n)
      $game_party.lose_gold(n)  # 所持金減少
      # ここまで
      process_abort
    else
      @escape_ratio += 0.1
      $game_message.add('\.' + Vocab::EscapeFailure)
      $game_party.clear_actions
    end
    wait_for_message
    return success
  end
end
仕様上、競合対策は出来ません


メッセージなしだと多分こんな感じです

コード: 全て選択

class << BattleManager
  #--------------------------------------------------------------------------
  # ● 逃走の処理
  #--------------------------------------------------------------------------
  alias tomo_escape_lose_gold_process_escape process_escape
  def process_escape
    success = tomo_escape_lose_gold_process_escape
    $game_party.lose_gold($game_party.gold / 10) if success
    success
  end
end
こっちは競合対策が可能です
たかな
記事: 49
登録日時: 2020年4月26日(日) 11:17

Re: 【RGSS3】逃走すると確率で所持金の10%を落とすスクリプト

投稿記事by たかな » 2020年8月09日(日) 22:46

TOMO様、ご対応ありがとうございます。
確率を変える場合はどうしたら良いですか?
TOMO
記事: 343
登録日時: 2015年11月16日(月) 20:12
連絡を取る:

Re: 【RGSS3】逃走すると確率で所持金の10%を落とすスクリプト

投稿記事by TOMO » 2020年8月10日(月) 02:21

「確率を変える場合」って、
パーティの誰かが特定の装備をしてると、落とすお金の割合が変わるとかですか?

もうちょっと詳しく書いて下さい

※例
・所持金の10%前後でランダムにする
・特定の装備をしていると落とさなくなる(0%固定)
・特定の装備をしていると落とす割合が変わる(割合を指定)
etc
たかな
記事: 49
登録日時: 2020年4月26日(日) 11:17

Re: 【RGSS3】逃走すると確率で所持金の10%を落とすスクリプト

投稿記事by たかな » 2020年8月10日(月) 22:09

説明不足ですみません。
逃げた時に所持金を落とす確率です。
TOMO
記事: 343
登録日時: 2015年11月16日(月) 20:12
連絡を取る:

Re: 【RGSS3】逃走すると確率で所持金の10%を落とすスクリプト

投稿記事by TOMO » 2020年8月10日(月) 22:44

メッセージありは

コード: 全て選択

module BattleManager
  #--------------------------------------------------------------------------
  # ● 逃走の処理
  #--------------------------------------------------------------------------
  def self.process_escape
    $game_message.add(sprintf(Vocab::EscapeStart, $game_party.name))
    success = @preemptive ? true : (rand < @escape_ratio)
    Sound.play_escape
    if success
      # 追加
      if rand < 0.5
        n = $game_party.gold / 10 # 現在所持金の10%
        $game_message.add("%s達は%d\\G落とした。", $game_party.name, n)
        $game_party.lose_gold(n)  # 所持金減少
      end
      # ここまで
      process_abort
    else
      @escape_ratio += 0.1
      $game_message.add('\.' + Vocab::EscapeFailure)
      $game_party.clear_actions
    end
    wait_for_message
    return success
  end
end

メッセージなしは

コード: 全て選択

class << BattleManager
  #--------------------------------------------------------------------------
  # ● 逃走の処理
  #--------------------------------------------------------------------------
  alias tomo_escape_lose_gold_process_escape process_escape
  def process_escape
    success = tomo_escape_lose_gold_process_escape
    $game_party.lose_gold($game_party.gold / 10) if success && rand < 0.5
    success
  end
end
とすれば可能なはずです
(50%の確率で所持金の10%を落とすようになります)

※他の割合にする人用
10%という事で

コード: 全て選択

$game_party.gold / 10
としてますが、3%とかだと

コード: 全て選択

$game_party.gold * 3 / 100

コード: 全て選択

($game_party.gold * 0.03).truncate
となります
(「* 3 / 100」は、逆順だと計算結果がズレる可能性があります)

小数を掛けると計算結果も小数になるので、
truncate等で整数に戻す必要があります

“VX / Ace:スクリプト素材のリクエスト” へ戻る