アイテムなどの所持できる数を重量制にするプラグイン
Re: アイテムなどの所持できる数を重量制にするプラグイン
MEIKOI様
特殊なプラグインを使用して…となると自分のできる範疇を超えてしまうため難しいのですが、
先ずDreamX_RandomPrefixesSuffixesの使い方が英文のためそもそもよくわからず
グーグル先生で翻訳してもいまいち意味がわかりませんでした。
その現象を再現するにはどうすればよいでしょうか?
実際の動作を確かめれば良い方法が思い浮かぶかもしれません。
とりあえずプラグインリストにはItemCoreとともに加えました。
それではよろしくおねがいします。
特殊なプラグインを使用して…となると自分のできる範疇を超えてしまうため難しいのですが、
先ずDreamX_RandomPrefixesSuffixesの使い方が英文のためそもそもよくわからず
グーグル先生で翻訳してもいまいち意味がわかりませんでした。
その現象を再現するにはどうすればよいでしょうか?
実際の動作を確かめれば良い方法が思い浮かぶかもしれません。
とりあえずプラグインリストにはItemCoreとともに加えました。
それではよろしくおねがいします。
Re: アイテムなどの所持できる数を重量制にするプラグイン
にゃたま様
サンプルを作りましたのでアップしました。
https://drive.google.com/file/d/1xR0nJ- ... sp=sharing
DreamX_RandomPrefixesSuffixesの//※でコメントアウトしているところで
$gameVariables.value(1)に入手武器名を代入していますが
この場所で正しいのかは私にはわかりません(汗、ただ、結果的にここかなぁという感じであります。
データーベースの武器の1番をベースとして、11番から15番までが接頭語となるようにしています。
メモ欄に接頭語が付与される確率をタグ記載しています。
時間は、いいのでまたゆっくり考察くださいませ。
PS
手に入れた武器が格納されているところが捨てられてnullとか0とかになったら
条件分岐でメッセージを表示しないって感じになるのかなと、素人ながらに考えてました。
サンプルを作りましたのでアップしました。
https://drive.google.com/file/d/1xR0nJ- ... sp=sharing
DreamX_RandomPrefixesSuffixesの//※でコメントアウトしているところで
$gameVariables.value(1)に入手武器名を代入していますが
この場所で正しいのかは私にはわかりません(汗、ただ、結果的にここかなぁという感じであります。
データーベースの武器の1番をベースとして、11番から15番までが接頭語となるようにしています。
メモ欄に接頭語が付与される確率をタグ記載しています。
時間は、いいのでまたゆっくり考察くださいませ。
PS
手に入れた武器が格納されているところが捨てられてnullとか0とかになったら
条件分岐でメッセージを表示しないって感じになるのかなと、素人ながらに考えてました。
-----------------------------------------
https://twitter.com/meikoimv
-----------------------------------------
https://twitter.com/meikoimv
-----------------------------------------
Re: アイテムなどの所持できる数を重量制にするプラグイン
MEIKOI様
とりあえずできました。
以下のようにアイテム増減処理のアイテム画面表示のスクリプトSceneManager.push(Scene_Item);
をコメント化します。
いわゆる重量超過してても増減処理を行うだけ行います。
アイテム増減の後、同時にアイテム画面を開いて行う検査をスルーさせます。
そしてメッセージ表示後に「所持可能な残りの重量」をチェックして
重量オーバーしていたらアイテム画面を強制的に開きます。
以下のようにイベントを作ってください。
尚、変数2は「所持可能な残りの重量」となります。
これでできませんでしょうか?
とりあえずできました。
以下のようにアイテム増減処理のアイテム画面表示のスクリプトSceneManager.push(Scene_Item);
をコメント化します。
いわゆる重量超過してても増減処理を行うだけ行います。
アイテム増減の後、同時にアイテム画面を開いて行う検査をスルーさせます。
コード: 全て選択
//アイテム増減処理の書き換え---------------------------------------------------------------
var _Game_Party_gainItem = Game_Party.prototype.gainItem;
Game_Party.prototype.gainItem = function(item, amount, includeEquip) {
if (amount > 0) {
if (canHaveItem(item, amount)) {
//増減可能
_Game_Party_gainItem.call(this, item, amount, includeEquip);
}
// 2019/05/17 Add start by nyatama
else{
//重量超過
if(isChoice_GainItem) {
//増減可能
_Game_Party_gainItem.call(this, item, amount, includeEquip);
//アイテム画面
//SceneManager.push(Scene_Item);
}
}
// 2019/05/17 Add start by nyatama
} else {
_Game_Party_gainItem.call(this, item, amount, includeEquip);
}
};
重量オーバーしていたらアイテム画面を強制的に開きます。
以下のようにイベントを作ってください。
尚、変数2は「所持可能な残りの重量」となります。
これでできませんでしょうか?
Re: アイテムなどの所持できる数を重量制にするプラグイン
にゃたま様
今日は少しお酒を飲んでたのですが、丁寧な説明なので理解できました^^;
説明どおりに(コピペですが汗
書き換えましたら、完璧です。
武器は、ちゃんと一旦入手してから捨てられるようになりました。
ほんとすごいです。読み解いて考える力を鍛えたいと思いましたm(_ _)m
ありがとうございます!!!!!
今日は少しお酒を飲んでたのですが、丁寧な説明なので理解できました^^;
説明どおりに(コピペですが汗
書き換えましたら、完璧です。
武器は、ちゃんと一旦入手してから捨てられるようになりました。
ほんとすごいです。読み解いて考える力を鍛えたいと思いましたm(_ _)m
ありがとうございます!!!!!
Re: アイテムなどの所持できる数を重量制にするプラグイン
MEIKOI様
うまくいってよかったです!
この手法ならイベントが終了するまでに先程のスクリプトを実行することで
任意のタイミングでアイテム画面を開いて重量チェックできて便利ですね。
これなら入手メッセージをアイテムの増減の手前にもってくる必要もありません。
もしかするとこの方法のほうが需要があるのかもしれませんね(^^;
追記
余談ですが上記の方法だとゲーム内変数を一つ使ってしまうので
使わない方法では以下のコードを本体の一番下に記述されている
プラグインコマンドリストに追加してやると良いです。
プラグインコマンド「PNDK_LC overCpShowItemWindow」を実行するだけです。
ただこのコマンド名がこれでいいのか?って感じがします。
他にわかりやすいコマンド名があったらそちらを使ってください。
うまくいってよかったです!
この手法ならイベントが終了するまでに先程のスクリプトを実行することで
任意のタイミングでアイテム画面を開いて重量チェックできて便利ですね。
これなら入手メッセージをアイテムの増減の手前にもってくる必要もありません。
もしかするとこの方法のほうが需要があるのかもしれませんね(^^;
追記
余談ですが上記の方法だとゲーム内変数を一つ使ってしまうので
使わない方法では以下のコードを本体の一番下に記述されている
プラグインコマンドリストに追加してやると良いです。
プラグインコマンド「PNDK_LC overCpShowItemWindow」を実行するだけです。
ただこのコマンド名がこれでいいのか?って感じがします。
他にわかりやすいコマンド名があったらそちらを使ってください。
コード: 全て選択
case 'overCpShowItemWindow':
if (getSurplusCP() < 0) SceneManager.push(Scene_Item);
break;
Re: アイテムなどの所持できる数を重量制にするプラグイン
ドラムカン様
当プラグインを開発したのは私ではなくパンダコ様です。
私は改造案を提案しただけに過ぎません。
利用規約で配布範囲にゲーム内のみと限定している以上
私の方から改変版を再配布することは出来ません。
従いまして私の方からはパンダコ様が本家に対応されるか
本家に上記の変更箇所を見て利用者様がご自分で改変して下さいとしか言えません。
この様な案内しか出来ずご期待に添えることが出来なくて申し訳ありません。
ご理解頂けましたら幸いです。
追記
尚上記改変項目を正しく置き換えれば動作する筈です。
私はもちろん他の方も動作がとれています。
もう一度置き換え箇所をよく読んでイチからやってみてはいかがでしょうか?
当プラグインを開発したのは私ではなくパンダコ様です。
私は改造案を提案しただけに過ぎません。
利用規約で配布範囲にゲーム内のみと限定している以上
私の方から改変版を再配布することは出来ません。
従いまして私の方からはパンダコ様が本家に対応されるか
本家に上記の変更箇所を見て利用者様がご自分で改変して下さいとしか言えません。
この様な案内しか出来ずご期待に添えることが出来なくて申し訳ありません。
ご理解頂けましたら幸いです。
追記
尚上記改変項目を正しく置き換えれば動作する筈です。
私はもちろん他の方も動作がとれています。
もう一度置き換え箇所をよく読んでイチからやってみてはいかがでしょうか?
Re: アイテムなどの所持できる数を重量制にするプラグイン
ここまでご愛顧いただいているのだから、作者もなにかしないとね。
ということで、にゃたまさんの改変案を参考に、いろいろな機能を追加した ver 1.4.0 を公開しました。
主な変更点は以下のとおりです。
・イベントによるアイテム入手時にも破棄か整理かを選択できるようになりました。
・重量オーバーしている時の総重量の文字色が変更できるようになりました。
・重量オーバーしていると、アイテムウィンドウを開いたときと、閉じようとしたときに
警告ウィンドウが表示されるようになりました。
・重量オーバーしている時はアイテムウィンドウが開くコマンドが追加されました。
・強制的な入手が設定できるようになりました。
追加された機能の殆どは、にゃたまさんのお力によるものです。
この場を借りてお礼申し上げます。
なお、ドロップアイテムは破棄で、イベント入手はアイテム画面、という設定だと(あり得るのか?^-^;)期待したとおりに動作しない点の修正や、設定項目の追加、英語対応、などなど多少改修しております。
また、ご指摘いただいたライセンスの件、MIT licence としておきながら、当フォーラムでは再配布を限定する表示となっていたため修正しました。
以上です。
不具合等ございましたらお知らせいただけると幸いです。
ではでは~ヽ(=´▽`=)ノ
(久々のツクールだったから、なんだかんだで丸1日かかってしまったw)
ということで、にゃたまさんの改変案を参考に、いろいろな機能を追加した ver 1.4.0 を公開しました。
主な変更点は以下のとおりです。
・イベントによるアイテム入手時にも破棄か整理かを選択できるようになりました。
・重量オーバーしている時の総重量の文字色が変更できるようになりました。
・重量オーバーしていると、アイテムウィンドウを開いたときと、閉じようとしたときに
警告ウィンドウが表示されるようになりました。
・重量オーバーしている時はアイテムウィンドウが開くコマンドが追加されました。
・強制的な入手が設定できるようになりました。
追加された機能の殆どは、にゃたまさんのお力によるものです。
この場を借りてお礼申し上げます。
なお、ドロップアイテムは破棄で、イベント入手はアイテム画面、という設定だと(あり得るのか?^-^;)期待したとおりに動作しない点の修正や、設定項目の追加、英語対応、などなど多少改修しております。
また、ご指摘いただいたライセンスの件、MIT licence としておきながら、当フォーラムでは再配布を限定する表示となっていたため修正しました。
以上です。
不具合等ございましたらお知らせいただけると幸いです。
ではでは~ヽ(=´▽`=)ノ
(久々のツクールだったから、なんだかんだで丸1日かかってしまったw)
Re: アイテムなどの所持できる数を重量制にするプラグイン
パンダコ様
最新バージョンにて当改変バージョンを反映いただきありがとうございます。
より素晴らしいプラグインになったのではないかと思います。
また強制入手のプラグインパラメータを追加いただきありがとうございます。
そして警告画面の文章まで変更できるようにしていただいてより
カスタマイズでき柔軟になりましたね。
重量オーバー時にアイテム画面を開くコマンドは色々考えて
コマンドの機能を説明しすぎたあまりあの長ったらしいコマンドにしてしまいましたが、
パンダコ様がサクッと気持ちよい響きのコマンドにしていただいたおかげで
なにか引っかかっていたモヤモヤが晴れてスッキリした気分になりました(^^
潔さがとてもステキです!そのセンス羨ましいです。あれならコマンド覚えられますw
コマンドは短く簡潔のほうがよいことを改めて思い知らされました(反省)
ヘルプもわかりやすく追記されており、より使い方がわかりやすくなったと思います。
これからもより一層、このプラグインの認知度が高まりそうですね!
追記
尚、前回投稿した改変の説明はパンダコ様が最新バージョンに反映のため
用なしと判断して公開を終了しました。
【オマケ】(11/23追記)
以下はオマケです。アイテムや武器、防具の名前を取得するスクリプトです。
需要があるかわかりませんが置いておきます。
* $dataItems[<アイテムID>].name
* $dataWeapons[<武器ID>].name
* $dataArmors[<防具ID>].name
*
* ゲーム変数の値を利用するなら以下
* $dataItems[$gameVariables.value(<アイテムIDが入っているゲーム変数番号>)].name
* $dataWeapons[$gameVariables.value(<武器IDが入っているゲーム変数番号>)].name
* $dataArmors[$gameVariables.value(<防具IDが入っているゲーム変数番号>)].name
プラグインも作ってみました。
どうしてもプラグインコマンドを利用したい場合用。 * ・使い方
* <プラグインコマンド>
* ・ID5のアイテムの名前を変数0010へ代入します。
* PNDK_LC getItemName 10 5
* getItemName 10 5
*
* ・変数0010に格納された武器IDの武器の名前を変数0011へ代入します。
* (注:アイテムID及びアイテム数には制御文字が使えます)
* PNDK_LC getWeaponName 11 \V[10]
* getWeaponName 11 \V[10]
*
* ・ID15の防具の名前を変数0012へ代入します。
* PNDK_LC getArmorName 12 15
* getArmorName 12 15
*
* <スクリプト>
* ・ID5のアイテムの名前を取得します。
* $gameSystem.getItemName(5);
*
* ・変数0010に格納された武器IDの武器の名前を取得します。
* $gameSystem.getWeaponName('\\V[10]'));
* $gameSystem.getWeaponName($gameVariables.value(10));
*
* ・ID15の防具の名前を取得します。
* $gameSystem.getArmorName(15);
以下は追加するとスクリプトから呼べて便利集です(^^;
○アイテムオブジェクトの重量をスクリプトから取得
の下に
を追加すればスクリプトから$gameSystem. getWeight()で重量を取得できます。
○アイテム重量をスクリプトから取得
の下に
を追加で$gameSystem.getItemWeights(アイテムID, 数)でアイテムの重量を取得できます
○武器重量をスクリプトから取得
の下に
を追加で$gameSystem.getWeaponWeights(武器ID, 数)で武器の重量を取得できます
○防具重量をスクリプトから取得
の下に
を追加で$gameSystem.getArmorWeights(防具ID, 数)で防具の重量を取得できます
○総重量をスクリプトから取得
の下に
を追加で$gameSystem.getAllItemWeights()で総重量を取得できます
○最大積載量をスクリプトから取得
の下に
を追加で$gameSystem.getCP()で最大積載量を取得できます
○余剰積載量をスクリプトから取得
の下に
を追加で$gameSystem.getSurplusCP()で最大積載量を取得できます
全ての動作を確認しているわけではないので万一動作しないなどありましたらご返信ください。
スミマセン、オマケなのに思いのほか長文になってしまいました…orz
最新バージョンにて当改変バージョンを反映いただきありがとうございます。
より素晴らしいプラグインになったのではないかと思います。
また強制入手のプラグインパラメータを追加いただきありがとうございます。
そして警告画面の文章まで変更できるようにしていただいてより
カスタマイズでき柔軟になりましたね。
重量オーバー時にアイテム画面を開くコマンドは色々考えて
コマンドの機能を説明しすぎたあまりあの長ったらしいコマンドにしてしまいましたが、
パンダコ様がサクッと気持ちよい響きのコマンドにしていただいたおかげで
なにか引っかかっていたモヤモヤが晴れてスッキリした気分になりました(^^
潔さがとてもステキです!そのセンス羨ましいです。あれならコマンド覚えられますw
コマンドは短く簡潔のほうがよいことを改めて思い知らされました(反省)
ヘルプもわかりやすく追記されており、より使い方がわかりやすくなったと思います。
これからもより一層、このプラグインの認知度が高まりそうですね!
追記
尚、前回投稿した改変の説明はパンダコ様が最新バージョンに反映のため
用なしと判断して公開を終了しました。
【オマケ】(11/23追記)
以下はオマケです。アイテムや武器、防具の名前を取得するスクリプトです。
需要があるかわかりませんが置いておきます。
* $dataItems[<アイテムID>].name
* $dataWeapons[<武器ID>].name
* $dataArmors[<防具ID>].name
*
* ゲーム変数の値を利用するなら以下
* $dataItems[$gameVariables.value(<アイテムIDが入っているゲーム変数番号>)].name
* $dataWeapons[$gameVariables.value(<武器IDが入っているゲーム変数番号>)].name
* $dataArmors[$gameVariables.value(<防具IDが入っているゲーム変数番号>)].name
プラグインも作ってみました。
どうしてもプラグインコマンドを利用したい場合用。 * ・使い方
* <プラグインコマンド>
* ・ID5のアイテムの名前を変数0010へ代入します。
* PNDK_LC getItemName 10 5
* getItemName 10 5
*
* ・変数0010に格納された武器IDの武器の名前を変数0011へ代入します。
* (注:アイテムID及びアイテム数には制御文字が使えます)
* PNDK_LC getWeaponName 11 \V[10]
* getWeaponName 11 \V[10]
*
* ・ID15の防具の名前を変数0012へ代入します。
* PNDK_LC getArmorName 12 15
* getArmorName 12 15
*
* <スクリプト>
* ・ID5のアイテムの名前を取得します。
* $gameSystem.getItemName(5);
*
* ・変数0010に格納された武器IDの武器の名前を取得します。
* $gameSystem.getWeaponName('\\V[10]'));
* $gameSystem.getWeaponName($gameVariables.value(10));
*
* ・ID15の防具の名前を取得します。
* $gameSystem.getArmorName(15);
以下は追加するとスクリプトから呼べて便利集です(^^;
○アイテムオブジェクトの重量をスクリプトから取得
コード: 全て選択
function getWeight(item, amount){
if (item) {
var w = item.meta.weight;
if (w !== undefined) {
w = Number(Window_Base.prototype.convertEscapeCharacters(w));
return w * amount;
} else {
return defW * amount;
}
//return item.meta.weight !== undefined ? (item.meta.weight * amount) : defW * amount;
}
//itemがnullの場合もある(装備していない時や全部解除したときなど)
return 0;
}
コード: 全て選択
//getWeightを$gameSystemに登録
Game_System.prototype.getWeight = function(item, amount) {
return getWeight(item, amount);
}
○アイテム重量をスクリプトから取得
コード: 全て選択
//アイテム重量取得
function getItemWeights(value, num) {
var itemId = Number(Window_Base.prototype.convertEscapeCharacters(value));
var item = $dataItems[itemId];
if(num == null) num = 1;
else num = Number(Window_Base.prototype.convertEscapeCharacters(num));
return getWeight(item, num);
}
コード: 全て選択
//getItemWeightsを$gameSystemに登録
Game_System.prototype.getItemWeights = function(value, num) {
return getItemWeights(String(value), String(num));
}
○武器重量をスクリプトから取得
コード: 全て選択
//武器重量取得
function getWeaponWeights(value, num) {
var weaponId = Number(Window_Base.prototype.convertEscapeCharacters(value));
var weapon = $dataWeapons[weaponId];
if(num == null) num = 1;
else num = Number(Window_Base.prototype.convertEscapeCharacters(num));
return getWeight(weapon, num);
}
コード: 全て選択
//getWeaponWeightsを$gameSystemに登録
Game_System.prototype.getWeaponWeights = function(value, num) {
return getWeaponWeights(String(value), String(num));
}
○防具重量をスクリプトから取得
コード: 全て選択
//防具重量取得
function getArmorWeights(value, num) {
var armorId = Number(Window_Base.prototype.convertEscapeCharacters(value));
var armor = $dataArmors[armorId];
if(num == null) num = 1;
else num = Number(Window_Base.prototype.convertEscapeCharacters(num));
return getWeight(armor, num);
}
コード: 全て選択
//getArmorWeightsを$gameSystemに登録
Game_System.prototype.getArmorWeights = function(value, num) {
return getArmorWeights(String(value), String(num));
}
○総重量をスクリプトから取得
コード: 全て選択
//総重量取得
function getAllItemWeights() {
var w = 0;
//アイテム・武器・防具
$gameParty.allItems().forEach(function(item){
var n = $gameParty.numItems(item);
w += getWeight(item, n);
});
//全アクターの装備品
$gameParty.allMembers().forEach(function(actor) {
actor.equips().forEach(function(item){
w += getWeight(item, 1);
});
});
return w;
}
コード: 全て選択
//getAllItemWeightsを$gameSystemに登録
Game_System.prototype.getAllItemWeights = function() {
return getAllItemWeights();
}
○最大積載量をスクリプトから取得
コード: 全て選択
//最大積載量の取得
function getCP() {
return Number(Window_Base.prototype.convertEscapeCharacters(cp));
}
コード: 全て選択
//getCPを$gameSystemに登録
Game_System.prototype.getCP = function() {
return getCP();
}
○余剰積載量をスクリプトから取得
コード: 全て選択
//余剰積載量
function getSurplusCP() {
return getCP() - getAllItemWeights();
}
コード: 全て選択
//getSurplusCPを$GameSystemに登録
Game_System.prototype.getSurplusCP = function() {
return getSurplusCP();
}
全ての動作を確認しているわけではないので万一動作しないなどありましたらご返信ください。
スミマセン、オマケなのに思いのほか長文になってしまいました…orz
最後に編集したユーザー にゃたま [ 2020年3月24日(火) 01:48 ], 累計 43 回
Re: アイテムなどの所持できる数を重量制にするプラグイン
パンダコ様
にゃたま様
こんにちは。プラグインの配布ありがとうございます^^
早速、最新版に入れ替えさせていただきました。
とても快適です、ありがとうございます!!(笑)
にゃたま様の最後の返信に、お返事したつもりだったのですが
返事できてなかったようでスミマセンでした。
プラグインコマンド使えるようになって幸せです。
このプラグインも手放せないアイテムとなってます。感謝です(^^)
にゃたま様
こんにちは。プラグインの配布ありがとうございます^^
早速、最新版に入れ替えさせていただきました。
とても快適です、ありがとうございます!!(笑)
にゃたま様の最後の返信に、お返事したつもりだったのですが
返事できてなかったようでスミマセンでした。
プラグインコマンド使えるようになって幸せです。
このプラグインも手放せないアイテムとなってます。感謝です(^^)
-----------------------------------------
https://twitter.com/meikoimv
-----------------------------------------
https://twitter.com/meikoimv
-----------------------------------------