【解決済み】オーグメントと追加パラメータの競合対策

mac
記事: 11
登録日時: 2018年5月01日(火) 00:00

【解決済み】オーグメントと追加パラメータの競合対策

投稿記事by mac » 2019年2月08日(金) 21:09

vxaceで
RGSS3スクリプト倉庫さんの追加パラメータスクリプトと
やなさんのオーグメントスクリプトを導入しましたが競合が起きました。
装備画面でオーグメントの強化した値が反映されません。

【やったこと】
新規プロジェクトで両スクリプトを導入
スクリプトには変更なし
武器「ハンドアックス」のメモに「<オーグメント:100%,攻撃力+1~50>」と記入
自動実行イベントでオーグメントのスイッチをONにする
ハンドアッスを数個もらう
装備画面を開く
オーグメントに攻撃力+●●となっているのを確認
ステータスは通常のハンドアックスの攻撃力のまま
追加パラメータのスクリプトを外すとうまく動くことを確認

【やりたいこと】
装備画面でオーグメントで強化された値が反映されるようにしたい。
追加パラメータで追加した値はオーグメントで強化されなくてもよい。(反映できるとうれしい)
追加パラメータは4個を予定

オーグメントシステム本体の702行目から708行目の武器の能力値に
オーグメントの値が足されていないところまではわかりましたがうまくいきません。

どなたか対策方法を考えていただけないでしょうか。
よろしくお願いいたします。

やなさんのTwitter:https://twitter.com/yanatsuki_
RGSSスクリプト倉庫さん:http://blog.livedoor.jp/kuremente-rgssscript/


追記
白の魔さんのアイテム図鑑にされないのも困ってます
最後に編集したユーザー mac on 2019年2月18日(月) 03:22 [ 編集 1 回目 ]

mac
記事: 11
登録日時: 2018年5月01日(火) 00:00

Re: オーグメントと追加パラメータの競合対策

投稿記事by mac » 2019年2月14日(木) 18:24

お世話になります。

やなさんのオーグメント
RGSSスクリプト倉庫さんの追加パラメータ
白の魔さんのアイテム図鑑
のスクリプトを入れたサンプルプロジェクトを用意しました。

これは、二次配布になるのでしょうか?
問題があるようでしたらご連絡ください。
削除いたします。
https://www.axfc.net/u/3959592
pass:vxace
faida
記事: 250
登録日時: 2015年12月17日(木) 16:44

Re: オーグメントと追加パラメータの競合対策

投稿記事by faida » 2019年2月17日(日) 16:40

遅ればせながら。

そもそも「オーグメント」の能力値加減算は「データベースで設定したパラメータを書き換える」という方法で
能力値を再設定しています。この時、RPG::EquipItemの@paramsを書き換えています。
通常であれば@paramsはattr_accessorによって「直接」アクセスできるので、
外部のメソッドから書き換えることが可能なのですが、「追加パラメータ」ではそのメソッドをエイリアスしており、
それによってパラメータを追加しています。
したがって@paramsに「直接」アクセスすることができず、オーグメントが反映されません。
ちょうど鉛筆で書いた文書をプリンタでコピーすると消しゴムで消して書き直せないのと同じです。

なので、なんとかして@paramsに直接アクセスするか、オーグメントの仕組み自体を変更する必要が生じます。
が、後者は面倒なので前者をざっくり解説します。
「追加パラメータ」では直接アクセスするメソッドをエイリアスしているので、エイリアス前のメソッドなら@paramsに
直接アクセスできます。
というわけで、705および707行目の「params」をエイリアスした名前の「k_add_param_before_params」に書き換える
だけで動くはずです。簡単ですね。

ちなみに追加したパラメータにオーグメントを適用したい場合、
「if var.index(pr) > 7」といった分岐を用いてパラメータIDで分岐し、
new_itemの@new_paramになんとかしてアクセスして書き換えます。
アクセスする方法はattr_accessorを用いるのが手っ取り早いでしょう。

アイテム図鑑の件に移ります。
至極基本的なことなんですが、「オーグメント」では生成されたアイテムは
$data_itemsなどのデータベースから読み込んだデータの末尾に追加されます。
なので、武器を生成後、武器図鑑の下の方を見ると生成したアイテムが追加されているのが分かります。当たり前ですね。
アイテム図鑑自体も、$data_itemsなどからデータの数を数え、メモ欄で弾く、などの処理を行っています。
というわけで、
①アイテム図鑑の「gain_item」か「t_dictionary_switch_on」で元アイテムのデータを図鑑に登録する
②アイテム図鑑の「print_dictionary?」をいじってオーグメントで生成したアイテムを表示しない
という2つの課題があります。

①は「item.base_item_id」で元アイテムのIDを取得することができるので、
なんとかして$data_itemsか$data_weaponsか$data_armorsかを取得し、
元アイテムにアクセスして登録すればできます。
ちなみにオーグメントがないとitem.base_item_idは-1になります。注意しましょう。

②は色々な方法がありますが、item.augmented?を用いると楽ですね。


長くなりましたがこんな感じです。
不明点等ございましたら遠慮なくどうぞ。
---------------------------------------------
自作の(改造でない)スクリプト素材に
関しては、リードミーもしくは作中に
「faida」と記名していただければ
利用可能です。
mac
記事: 11
登録日時: 2018年5月01日(火) 00:00

Re: オーグメントと追加パラメータの競合対策

投稿記事by mac » 2019年2月17日(日) 18:19

faidaさん、出来ました。
あきらめかけていたのが解決しました。
ありがとうございました。

“VX / Ace:質問” へ戻る