【解決済】レーネ様の零の軌跡風料理システム RGSS3で製作者に経験値を加算するようにしたい

イシモチ
記事: 12
登録日時: 2022年1月17日(月) 05:28

【解決済】レーネ様の零の軌跡風料理システム RGSS3で製作者に経験値を加算するようにしたい

投稿記事by イシモチ » 2022年1月17日(月) 05:41

タイトル通りです よろしくおねがいします

スクリプトですが 以下のサイト様にて委託配布されているものです
http://declarewar.blog.fc2.com/blog-entry-6.html

零の軌跡風料理システム RGSS3において
合成するキャラクターを選択できるのですが
そのときに合成結果が3タイプ(通常、大成功、失敗)あるのですが
それぞれに加算される経験値を設定できるようにしたいです

わからないスクリプトを眺めておりましたが
やはりいくら眺めても解決の糸口すら見つからない有様です
規約がなくなったということなのでこちらでお願いしたいと思いました
どうかお力をおかし願えないでしょうか

スクリプトのレシピの横に取得できる経験値を表記するイメージです
最後に編集したユーザー イシモチ on 2022年3月03日(木) 03:58 [ 編集 3 回目 ]

名無し蛙
記事: 302
登録日時: 2015年11月23日(月) 02:46

Re: レーネ様の零の軌跡風料理システム RGSS3で製作者に経験値を加算するようにしたい

投稿記事by 名無し蛙 » 2022年1月18日(火) 09:27

軽く弄ってみたんですけど追加仕様がイマイチよく分からないです。

経験値の設定について
①.大成功、成功、予想外、失敗の4パターンで経験値を設定する(全料理共通)
②.レシピ毎に経験値を設定する
③レシピ毎、かつ成功3段階に応じて経験値を設定する
のどれでしょうか?

また、リザルト画面の表示領域がカツカツなんですけど獲得経験値の表示等はするのでしょうか?
するとしたらどこに加えるのでしょう?
イシモチ
記事: 12
登録日時: 2022年1月17日(月) 05:28

Re: レーネ様の零の軌跡風料理システム RGSS3で製作者に経験値を加算するようにしたい

投稿記事by イシモチ » 2022年1月18日(火) 15:11

返信ありがとうございます
3番を想定していました
が、書き込んだ後自分でも取得した経験値を表示できないなと思いました

作成前の成功率のウインドウを右に伸ばしてそこに追加できるといいなと思いました
画像のようにできますでしょうか?

自分ではどの程度改造できるのかわかっておらず
そんなことできないぞというようなことを言っていたら申し訳ありませんが
よろしくおねがいします
添付ファイル
無題.png
名無し蛙
記事: 302
登録日時: 2015年11月23日(月) 02:46

Re: レーネ様の零の軌跡風料理システム RGSS3で製作者に経験値を加算するようにしたい

投稿記事by 名無し蛙 » 2022年1月18日(火) 23:06

適当に弄るならこんな感じですかね
他人のコードなので理解が甘いところがあるかもしれません
544*416だとこのくらいが限界だと思いますけど
640*480やそれ以上の解像度ならもう少し余裕を持たせられますね

コード: 全て選択

#==============================================================================
# ■ 零の軌跡風料理システム拡張
#------------------------------------------------------------------------------
# 「零の軌跡風料理システム」よりも下のセクションに追加してください
#==============================================================================
module RENNE::COOKING 
  #--------------------------------------------------------------------------
  # ◆ 設定項目
  #--------------------------------------------------------------------------
  # ITEMS[レシピID][:exp] = [大成功経験値, 成功経験値, 予想外経験値]
  ITEMS[2][:exp]   = [99999, 500, 200]
  ITEMS[7][:exp]   = [128, 64, 8]
 
  STR_22 = "#{STR_14}【経験値】"
  STR_23 = "levelup!"
   
  module_function
  #--------------------------------------------------------------------------
  # ● レシピに対応した獲得経験値の取得
  #--------------------------------------------------------------------------
  def exp(recepe_id, idx)
    ITEMS[recepe_id][:exp] ? (ITEMS[recepe_id][:exp][idx] || 0) : 0
  end
end

class Game_Party < Game_Unit
  #--------------------------------------------------------------------------
  # ○ 料理開始
  #--------------------------------------------------------------------------
  alias :_old_go_cooking :go_cooking
  def go_cooking(actor, item, number)
    _old_go_cooking(actor, item, number)
    gain_cooking_exp #
  end
  #--------------------------------------------------------------------------
  # ● 料理による経験値獲得
  #--------------------------------------------------------------------------
  def gain_cooking_exp
    actor = @cooking[:a]
    exp_total = 0
    @cooking[:oc].each_with_index do |item, i|
      exp_total += RENNE::COOKING::exp(@cooking[:i].id, i) * item.size
    end
   
    last_level = actor.level
    actor.change_exp(actor.exp + exp_total, false)   
    @cooking[:level_up] = last_level < actor.level
  end
end

class Window_Cooking_Member_Info < Window_Base
  #--------------------------------------------------------------------------
  # ○ オブジェクト初期化
  #--------------------------------------------------------------------------
  def initialize(mw_w)
    super(mw_w + 32, 48, 200 + 80, 144)
    hide
    draw_title
  end
  #--------------------------------------------------------------------------
  # ○ タイトルの描画
  #--------------------------------------------------------------------------
  def draw_title
    draw_text(0, 0, contents.width, 24, STR_22, 2)   
    draw_horz_line(24)
  end
  #--------------------------------------------------------------------------
  # ○ リフレッシュ
  #--------------------------------------------------------------------------
  alias :_old_refresh :refresh
  def refresh(actor)
    _old_refresh(actor)
    draw_gain_exp
  end
  #--------------------------------------------------------------------------
  # ○ 成功率の描画
  #--------------------------------------------------------------------------
  def draw_suc_rate
    [STR_8, STR_9, STR_10].each_with_index do |str, idx|
      draw_text(0, (idx+2)*24, 104, 24, str)
      draw_text(100, (idx+2)*24, 56, 24, suc_rate(idx).to_s + "%",2)
    end
  end
  #--------------------------------------------------------------------------
  # ● 取得経験値の描画
  #--------------------------------------------------------------------------
  def draw_gain_exp
    3.times do |idx|
      draw_text(160, (idx+2)*24, 88, 24, "#{exp(c_item.id, idx)}exp", 2)     
    end
  end
end 
 
class Window_Cooking_Result < Window_Base
  #--------------------------------------------------------------------------
  # ○ リフレッシュ
  #--------------------------------------------------------------------------
  alias :_old_refresh :refresh
  def refresh(data)
    @level_up = data[:level_up]
    _old_refresh(data)
  end 
  #--------------------------------------------------------------------------
  # ○ リザルトの描画
  #--------------------------------------------------------------------------
  alias :_old_draw_result :draw_result
  def draw_result
    _old_draw_result
    draw_level_up
  end
  #--------------------------------------------------------------------------
  # ● レベルアップの描画
  #--------------------------------------------------------------------------
  def draw_level_up
    return unless @level_up
    change_color(system_color)
    contents.font.size = 18
    draw_text(0, 12, contents.width, 20, STR_23, 2)
    reset_font_settings
  end
end

主に4点追加しています。
・レシピに対応した経験値の設定項目
・料理実行時に経験値の加算
・事前確認ウィンドウでの経験値表示
・リザルト画面でのレベルアップ簡易表示
4番目はデフォルトのレベルアップ表示だと違和感があったので勝手に追加しました
イシモチ
記事: 12
登録日時: 2022年1月17日(月) 05:28

Re: レーネ様の零の軌跡風料理システム RGSS3で製作者に経験値を加算するようにしたい

投稿記事by イシモチ » 2022年1月18日(火) 23:34

名無し蛙さま、ありがとうございます。
無事にできました
本当にありがとうございます

ほとんど諦めていたので本当に助かりました
お名前を表記させていただきます
イシモチ
記事: 12
登録日時: 2022年1月17日(月) 05:28

Re: レーネ様の零の軌跡風料理システム RGSS3で製作者に経験値を加算するようにしたい

投稿記事by イシモチ » 2022年3月01日(火) 23:49

すみません、もう一つお願いしたいのですが
取得した経験値の合計を表示する方法をお教え願いないでしょうか
名無し蛙
記事: 302
登録日時: 2015年11月23日(月) 02:46

Re: レーネ様の零の軌跡風料理システム RGSS3で製作者に経験値を加算するようにしたい

投稿記事by 名無し蛙 » 2022年3月02日(水) 00:54

既にもう忘れかけてるんですけど
取得予想経験値を個数に応じて変動させるならこんな感じですかね

・Window_Cooking_Member_Infoにnumber_windowの参照を持つように仕様変更
・及び取得経験値予想に個数反映

コード: 全て選択

#==============================================================================
# ■ 零の軌跡風料理システム拡張
#------------------------------------------------------------------------------
# 「零の軌跡風料理システム」よりも下のセクションに追加してください
#==============================================================================
module RENNE::COOKING 
  #--------------------------------------------------------------------------
  # ◆ 設定項目
  #--------------------------------------------------------------------------
  # ITEMS[レシピID][:exp] = [大成功経験値, 成功経験値, 予想外経験値]
  ITEMS[2][:exp]   = [99999, 500, 200]
  ITEMS[7][:exp]   = [128, 64, 8]
 
  STR_22 = "#{STR_14}【経験値】"
  STR_23 = "levelup!"
   
  module_function
  #--------------------------------------------------------------------------
  # ● レシピに対応した獲得経験値の取得
  #--------------------------------------------------------------------------
  def exp(recepe_id, idx)
    ITEMS[recepe_id][:exp] ? (ITEMS[recepe_id][:exp][idx] || 0) : 0
  end
end

class Game_Party < Game_Unit
  #--------------------------------------------------------------------------
  # ○ 料理開始
  #--------------------------------------------------------------------------
  alias :_old_go_cooking :go_cooking
  def go_cooking(actor, item, number)
    _old_go_cooking(actor, item, number)
    gain_cooking_exp #
  end
  #--------------------------------------------------------------------------
  # ● 料理による経験値獲得
  #--------------------------------------------------------------------------
  def gain_cooking_exp
    actor = @cooking[:a]
    exp_total = 0
    @cooking[:oc].each_with_index do |item, i|
      exp_total += RENNE::COOKING::exp(@cooking[:i].id, i) * item.size
    end
   
    last_level = actor.level
    actor.change_exp(actor.exp + exp_total, false)   
    @cooking[:level_up] = last_level < actor.level
  end
end

class Window_Cooking_Member_Info < Window_Base
  #--------------------------------------------------------------------------
  # ● 公開インスタンス変数
  #--------------------------------------------------------------------------
  attr_writer   :number_window
  #--------------------------------------------------------------------------
  # ○ オブジェクト初期化
  #--------------------------------------------------------------------------
  def initialize(mw_w)
    super(mw_w + 32, 48, 200 + 80, 144)
    hide
    draw_title
  end
  #--------------------------------------------------------------------------
  # ○ タイトルの描画
  #--------------------------------------------------------------------------
  def draw_title
    draw_text(0, 0, contents.width, 24, STR_22, 2)   
    draw_horz_line(24)
  end
  #--------------------------------------------------------------------------
  # ○ リフレッシュ
  #--------------------------------------------------------------------------
  alias :_old_refresh :refresh
  def refresh(actor)
    _old_refresh(actor)
    draw_gain_exp
  end
  #--------------------------------------------------------------------------
  # ○ 成功率の描画
  #--------------------------------------------------------------------------
  def draw_suc_rate
    [STR_8, STR_9, STR_10].each_with_index do |str, idx|
      draw_text(0, (idx+2)*24, 104, 24, str)
      draw_text(100, (idx+2)*24, 56, 24, suc_rate(idx).to_s + "%",2)
    end
  end
  #--------------------------------------------------------------------------
  # ● 取得経験値の描画
  #--------------------------------------------------------------------------
  def draw_gain_exp
    number = @number_window ? @number_window.number : 0
    3.times do |idx|
      draw_text(160, (idx+2)*24, 88, 24, "#{exp(c_item.id, idx) * number}exp", 2)     
    end
  end
end 
 
class Window_Cooking_Result < Window_Base
  #--------------------------------------------------------------------------
  # ○ リフレッシュ
  #--------------------------------------------------------------------------
  alias :_old_refresh :refresh
  def refresh(data)
    @level_up = data[:level_up]
    _old_refresh(data)
  end 
  #--------------------------------------------------------------------------
  # ○ リザルトの描画
  #--------------------------------------------------------------------------
  alias :_old_draw_result :draw_result
  def draw_result
    _old_draw_result
    draw_level_up
  end
  #--------------------------------------------------------------------------
  # ● レベルアップの描画
  #--------------------------------------------------------------------------
  def draw_level_up
    return unless @level_up
    change_color(system_color)
    contents.font.size = 18
    draw_text(0, 12, contents.width, 20, STR_23, 2)
    reset_font_settings
  end
end

class Scene_Cooking < Scene_MenuBase
  #--------------------------------------------------------------------------
  # ○ メンバーのインフォを表示するウィンドウの作成
  #--------------------------------------------------------------------------
  alias :_old_create_member_info_window :create_member_info_window
  def create_member_info_window
    _old_create_member_info_window
    @info_window.number_window = @number_window
  end 
end
イシモチ
記事: 12
登録日時: 2022年1月17日(月) 05:28

Re: レーネ様の零の軌跡風料理システム RGSS3で製作者に経験値を加算するようにしたい

投稿記事by イシモチ » 2022年3月02日(水) 01:41

ありがとうございます
実際に出来た(大成功、成功、予想外)経験値の合計は表示できないでしょうか?
名無し蛙
記事: 302
登録日時: 2015年11月23日(月) 02:46

Re: レーネ様の零の軌跡風料理システム RGSS3で製作者に経験値を加算するようにしたい

投稿記事by 名無し蛙 » 2022年3月02日(水) 01:53

そういえば失敗する可能性があるから予想時点で個数に合わせて調整しても紛らわしいだけですね
思い出しました
ボツにしときましょうか
イシモチ さんが書きました:実際に出来た(大成功、成功、予想外)経験値の合計は表示できないでしょうか?

出来ますけども前回も言いましたけど表示スペースに余裕がない事が一番の問題ですね。
以前聞き忘れたんですけど解像度は544*416,あるいは640*480のどちらでしょうか?
入れるとしたらどの辺に挿し込めば良いのでしょう
イシモチ
記事: 12
登録日時: 2022年1月17日(月) 05:28

Re: レーネ様の零の軌跡風料理システム RGSS3で製作者に経験値を加算するようにしたい

投稿記事by イシモチ » 2022年3月02日(水) 02:34

ありがとうございます
640*480です

こんな感じで一番上のところに合計が出るだけでもありがたいです
以前入れていただいたレベルアップ表示はなくてもかまいません
個別表示はあれば嬉しいですがなくてもかまいません
添付ファイル
無題.png

“VX / Ace:質問” へ戻る