设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2666|回复: 9
打印 上一主题 下一主题

[有事请教] 如何实现弹出窗口,然后出现几个按钮?

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1495
在线时间
241 小时
注册时间
2017-10-24
帖子
209
跳转到指定楼层
1
发表于 2017-10-25 12:30:12 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
如题。事件触发窗口,然后出现几个按钮。按钮负责触发更多的事件。

Lv4.逐梦者

梦石
0
星屑
12157
在线时间
4435 小时
注册时间
2014-4-11
帖子
5955

开拓者

2
发表于 2017-10-25 12:36:12 | 只看该作者
用选项不行吗
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
7427
在线时间
948 小时
注册时间
2017-9-27
帖子
583
3
发表于 2017-10-25 17:55:15 | 只看该作者
单独设计一个map,做成一个窗口的外观,里面就画出你需要的按钮,把每个按钮绑定好公共事件(需要用插件,YEP里面就有)。
再设计一个传送到这个map的事件就行了。
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
22973
在线时间
8639 小时
注册时间
2011-12-31
帖子
3367
4
发表于 2017-10-25 19:29:37 | 只看该作者
ピクチャのボタン化プラグイン
http://tm.lucky-duet.com/viewtopic.php?f=5&t=90
アイコンをマップにイベントとして配置するプラグイン
http://tm.lucky-duet.com/viewtopic.php?f=5&t=4348
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
31000
在线时间
608 小时
注册时间
2014-7-18
帖子
729

开拓者

5
发表于 2017-10-25 22:27:17 | 只看该作者
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1495
在线时间
241 小时
注册时间
2017-10-24
帖子
209
6
 楼主| 发表于 2017-10-26 08:50:03 | 只看该作者
xjzsq 发表于 2017-10-25 22:27
这个:
https://rpg.blue/thread-398713-1-1.html
或是这个?

感谢大神
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1495
在线时间
241 小时
注册时间
2017-10-24
帖子
209
7
 楼主| 发表于 2017-10-26 08:50:48 | 只看该作者
tseyik 发表于 2017-10-25 19:29
ピクチャのボタン化プラグイン
http://tm.lucky-duet.com/viewtopic.php?f=5&t=90
アイコンをマップにイベ ...

日文总感觉 怪怪的,但是很感谢你的帮助,谢谢
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1495
在线时间
241 小时
注册时间
2017-10-24
帖子
209
8
 楼主| 发表于 2017-10-26 08:52:49 | 只看该作者
梦想家大魔王 发表于 2017-10-25 17:55
单独设计一个map,做成一个窗口的外观,里面就画出你需要的按钮,把每个按钮绑定好公共事件(需要用插件,Y ...

这个思路很好,谢谢大神
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
22973
在线时间
8639 小时
注册时间
2011-12-31
帖子
3367
9
发表于 2017-10-26 11:27:32 | 只看该作者
本帖最后由 tseyik 于 2017-10-26 11:29 编辑

MKR_MapItemSlot

JAVASCRIPT 代码复制
  1. //===============================================================================
  2. // MKR_MapItemSlot.js
  3. //===============================================================================
  4. // Copyright (c) 2016-2017 マンカインド
  5. // This software is released under the MIT License.
  6. // [url]http://opensource.org/licenses/mit-license.php[/url]
  7. // ------------------------------------------------------------------------------
  8. // Version
  9. // 1.1.4 2017/10/12 ・アイテムスロットに背景設定時、
  10. //                    ウィンドウ枠が消去されていなかったため修正。
  11. //
  12. // 1.1.3 2017/10/11 ・一部プラグインとの競合問題を修正。
  13. //                  ・メニューアイテムスロット画面の不透明度指定により他画面の
  14. //                    ウィンドウに影響が出ていた問題を修正。
  15. //                  ・プラグインパラメーターの指定方法を変更。
  16. //                  ・一部プラグインパラメータのデフォルト値を変更。
  17. //                  ・アイテムスロットの拡大表示に対応。
  18. //                  ・アイテムスロットの余白を設定可能に。
  19. //                  ・アイテムスロットウィンドウ及び画面について背景画像を
  20. //                    設定できるように修正。
  21. //                  ・スロットからアイテムを使用後、$gameParty.lastItem()で
  22. //                    最後に使用したアイテムを取得できるように。
  23. //                  ・アイテムスロット画面呼び出し用のプラグインコマンドを追加。
  24. //
  25. // 1.1.2 2017/08/30 ・余計なコードを削除。
  26. //
  27. // 1.1.1 2017/08/30 ・プラグインパラメーターの指定方法を変更。
  28. //                  ・プラグインヘルプを修正。
  29. //
  30. // 1.1.0 2017/08/30 ・一部プラグインとの競合問題を修正。
  31. //                  ・ウィンドウ不透明度を指定可能に。
  32. //                  ・スロット選択カーソルを非表示にする機能を追加。
  33. //                  ・アイテムを自動的にスロットに追加する機能を無効化可能に。
  34. //                  ・アイテム選択、アイテム使用のキーアサインを変更可能に。
  35. //                  ・プラグインパラメーターの指定方法を変更。
  36. //
  37. // 1.0.0 2017/08/15 初版公開。
  38. // ------------------------------------------------------------------------------
  39. // [Twitter] [url]https://twitter.com/mankind_games/[/url]
  40. //  [GitHub] [url]https://github.com/mankindGames/[/url]
  41. //    [Blog] [url]http://mankind-games.blogspot.jp/[/url]
  42. //===============================================================================
  43.  
  44. /*:
  45.  *
  46.  * @plugindesc (v1.1.4) マップアイテムスロットプラグイン
  47.  * @author マンカインド
  48.  *
  49.  * @help = マップアイテムスロットプラグイン ver 1.1.4 =
  50.  * MKR_MapItemSlot.js - マンカインド
  51.  *
  52.  * マップ画面上に表示したアイテムスロットからアイテムの使用/装備を
  53.  * することができるようになります。
  54.  *
  55.  * アイテムスロットの選択は
  56.  *   ・キーボードの1~9,0キー(デフォルト設定)
  57.  *   ・ゲーム画面上でマウスホイール操作
  58.  * で可能です。
  59.  *
  60.  * スロット数を10としたとき、スロット番号は以下のようになります。
  61.  * (デフォルトでキーボードの数字キーに対応しています。
  62.  *  0キーはスロット番号10として扱います)
  63.  * アイテムスロット:[1] [2] [3] [4] [5] [6] [7] [8] [9] [10]
  64.  * キーボードキー  : 1   2   3   4   5   6   7   8   9   0
  65.  *
  66.  * 選択したスロットにアイテム(道具)が登録されていた場合、
  67.  * 画面上をマウスで左クリック、または指定したキーを押すことで
  68.  * 選択されたアイテムを使用することができます。
  69.  * (範囲が[味方単体]、[使用者]の場合は先頭のアクターに使用。
  70.  *  [味方全体]の場合はパーティ全体に効果を発揮します)
  71.  *
  72.  * アイテムの使用をマウス、またはキーボード、どちらの方法で
  73.  * 行うかは選択可能です。
  74.  *
  75.  * なお、アイテム使用方法にマウスクリックを選択した場合、
  76.  * マップ上を移動するためにマウスクリック/タッチ操作を
  77.  * 使うことはできなくなります。
  78.  *
  79.  * 同じアイテムを複数個所持している場合、
  80.  * その個数がスロット右下に数字として表示されます。
  81.  * アイテム個数が0になったとき、
  82.  * アイテムスロットからそのアイテムを削除するか、
  83.  * グレーアウトさせた状態で残しておくかはプラグインパラメータから設定可能です。
  84.  *
  85.  * 選択したスロットに武器が登録されていた場合、
  86.  * 装備可能なものであれば選択と同時にパーティ先頭のアクターに装備されます。
  87.  * なお、選択カーソルが武器の登録されたスロットから外れると
  88.  * アクターの装備も外れます。
  89.  *
  90.  * 装備中武器(=選択カーソルが武器の登録されているスロット上にある)の場合、
  91.  * スロット左上に E と表示されます。
  92.  *
  93.  * なお、プラグインパラメータ[武器登録可否]がONのとき、
  94.  * メニューの装備画面から先頭アクターの武器変更をすることができなくなります。
  95.  * (アイテムスロットの選択によって武器の変更を行ってください)
  96.  *
  97.  * アイテムスロットは先頭から、
  98.  * 既に所持しているアイテム、または入手したアイテムが自動的に
  99.  * 登録されていきます。
  100.  * (スロットが空いている場合のみ。ゲーム開始時に武器を装備済みの場合は
  101.  * その武器がスロットの先頭に登録されます)
  102.  * プラグインパラメータ:[アイテム自動使用機能]をOFFにすることで
  103.  * この機能を無効にすることができます。
  104.  *
  105.  * メニュー画面の項目[アイテムスロット]からスロットに
  106.  * 登録するアイテム、武器を変更可能です。
  107.  *
  108.  * [登録]はアイテムスロットにアイテムを登録します。
  109.  * マップ画面で選択されているスロットに
  110.  * 武器を登録した場合は自動的に装備されます。
  111.  *
  112.  * [削除]は選択したスロットを空にします。
  113.  * 装備していた武器をアイテムスロットから削除した場合、
  114.  * アクターから装備が外れます。
  115.  *
  116.  *
  117.  * プラグインパラメータによる動作について:
  118.  *   アイテムスロットに対する操作はプラグインパラメータにより変更できます。
  119.  *
  120.  *     ・マウス使用モード.アイテム使用(Mouse_Mode.Use_Enable)
  121.  *         マウスクリック(画面タッチ)でアイテムの使用が可能になります。
  122.  *
  123.  *     ・マウス使用モード.スロット選択(Mouse_Mode.Select_Enable)
  124.  *         マウスホイールでスロットの選択が可能になります。
  125.  *
  126.  *     ・キーボード使用モード.アイテム使用(Keyboard_Mode.Use_Enable)
  127.  *         キーボードでアイテムの使用が可能になります。
  128.  *
  129.  *     ・キーボード使用モード.スロット選択(Keyboard_Mode.Select_Enable)
  130.  *         キーボードでスロットの選択が可能になります。
  131.  *
  132.  *   以下のプラグインパラメータによりアイテムスロットの挙動が変化します。
  133.  *
  134.  *     ・アイテム登録モード(Slot_Add_Mode)
  135.  *       ONの場合、入手したアイテムは自動的にスロットへと登録されます。
  136.  *       自動で登録させたくない場合はOFFにするか、後述するメモ欄の設定を
  137.  *       行ってください。
  138.  *
  139.  *     ・アイテム使用モード(Item_Use_Mode)
  140.  *       ONの場合、アイテムが登録されたスロットにカーソルが移動すると、
  141.  *       自動的にそのアイテムが使用されます。
  142.  *       マウスホイールでのカーソル操作でも自動使用されてしまうため、
  143.  *       このモードをONにするときは[マウス使用モード.スロット選択]を
  144.  *       OFFにするのを推奨します。
  145.  *
  146.  *     ・武器登録可否(Slot_Set_Weapon)
  147.  *       ONの場合、スロットに武器が登録可能になります。
  148.  *       また、装備画面から武器の変更が行えなくなります。
  149.  *       アイテムのみ登録させたい、武器は自由に変更したい場合は
  150.  *       OFFにしてください。
  151.  *
  152.  *     ・アイテム削除モード(Item_Remove_Mode)
  153.  *       ONの場合、スロットにセットされたアイテムの個数が0個になると
  154.  *       スロットからアイテムが自動的に削除されます。
  155.  *       OFFにすると、アイテムは個数0の状態でグレー表示になります。
  156.  *       アイテム個数が0のため、使用することはできません。
  157.  *
  158.  *
  159.  * スロットサイズ倍率について:
  160.  *   プラグインパラメータ[スロットサイズ倍率]からスロットの大きさを
  161.  *   変更することができます。(1.0倍~2.0倍まで)
  162.  *
  163.  *   サイズ倍率と最大スロット数によってはスロットが画面外へと
  164.  *   飛び出してしまう可能性があります。
  165.  *   (例えばスロット10個でサイズを2.0倍にすると、
  166.  *    デフォルトのゲーム画面の横サイズである816pxより大きくなってしまいます)
  167.  *
  168.  *   自動的にゲーム画面内に収まるよう超過サイズを調整する機能はありませんので、
  169.  *   ゲーム画面内に収まるよう設定の考慮をお願いします。
  170.  *
  171.  *
  172.  * 武器・アイテムメモ欄:
  173.  *   <itemslot:noadd>
  174.  *     ・このメモを設定された武器、アイテムはアイテムスロットへの登録が
  175.  *       できなくなります。
  176.  *
  177.  *
  178.  * プラグインコマンド:
  179.  *   itemslot hide
  180.  *     ・アイテムスロットを非表示にします。
  181.  *
  182.  *   itemslot show
  183.  *     ・アイテムスロットを表示します。パラメータ:Slot_Visibleが
  184.  *       OFFの場合、このコマンドを使い任意のタイミングでアイテムスロットを
  185.  *       表示させる必要があります。
  186.  *
  187.  *   itemslot set [スロット番号] [アイテムタイプ] [アイテムID] [装備フラグ]
  188.  *     ・指定したアイテムスロットに指定したアイテムを登録します。
  189.  *
  190.  *     ・[スロット番号]は1~スロット最大数までの番号を指定します。
  191.  *       自動的に空きスロットを探してアイテムを登録したい場合は 0 を
  192.  *       指定します。(空きスロットが存在しない場合は登録されません)
  193.  *
  194.  *     ・[アイテムタイプ]は登録したいアイテムの種類を指定します。
  195.  *       (item か weapon)
  196.  *       データベース【アイテム】のアイテムを登録したい場合は item を、
  197.  *       データベース【武器】のアイテムを登録したい場合は weapon を
  198.  *       指定してください。
  199.  *
  200.  *     ・[アイテムID]はアイテムのIDを指定します。
  201.  *       例えば、初期登録されている【ポーション】はID:1となります。
  202.  *       初期登録されている【弓】はID:4となります。
  203.  *
  204.  *     ・[装備フラグ]は、登録した武器を
  205.  *       すぐに装備(カーソル選択)させる場合に true を指定します。
  206.  *       アイテムを登録する場合は true を設定しても意味はありません。
  207.  *
  208.  *   itemslot remove [スロット番号]
  209.  *     ・指定した[スロット番号]のスロットに登録されているアイテムを
  210.  *       スロットから削除します。
  211.  *
  212.  *     ・[スロット番号]は1~スロット最大数までの番号を指定します。
  213.  *
  214.  *     ・スロットからは削除されますが、
  215.  *       所持アイテムを失うわけではありません。
  216.  *
  217.  *     ・装備中の武器をスロットから削除した場合、
  218.  *       アクターから装備が外れますのでご注意ください、
  219.  *
  220.  *   itemslot clear
  221.  *     ・アイテムスロットに登録されているアイテムを全て削除します。
  222.  *
  223.  *   itemslot menu [方式番号]
  224.  *     ・メニュー項目[アイテムスロット]の表示方式を変更します。
  225.  *       番号と方式の対応は以下のとおりです。
  226.  *       0 : メニューに追加しない
  227.  *       1 : メニューに追加し選択有効状態
  228.  *       2 : メニューに追加するが選択不能状態
  229.  *
  230.  *   itemslot use [スロット番号]
  231.  *     ・指定したスロットに登録されているアイテムを使用します。
  232.  *
  233.  *     ・[スロット番号]は1~スロット最大数までの番号を指定します。
  234.  *
  235.  *     ・指定したスロットに武器、または使用条件を満たさないアイテムが
  236.  *       登録されている場合は使用することができません。
  237.  *
  238.  *   itemslot select [スロット番号 / left / right]
  239.  *     ・アイテムスロットの選択カーソルを移動します。
  240.  *
  241.  *     ・スロット番号を数値で指定した場合、カーソルは指定した番号の
  242.  *       スロットへと移動します。
  243.  *
  244.  *     ・leftを指定した場合、カーソルは一つ左に移動します。
  245.  *       カーソルがスロット先頭を選択していた場合は末端に移動します。
  246.  *
  247.  *     ・rightを指定した場合、カーソルは一つ右に移動します。
  248.  *       カーソルがスロット末端を選択していた場合は先頭に移動します。
  249.  *
  250.  *   itemslot edit
  251.  *     ・アイテムスロット編集画面を開きます。
  252.  *
  253.  *
  254.  * スクリプトコマンド:
  255.  *   $gameParty.getItemSlotFreeNumber();
  256.  *     ・アイテムが登録されていない(=空いている)スロット番号を返します。
  257.  *       空いているスロットが存在しない場合は-1を返します。
  258.  *
  259.  *
  260.  * 補足:
  261.  *   ・このプラグインに関するメモ欄の設定、プラグインコマンド/パラメーター、
  262.  *     制御文字は大文字/小文字を区別していません。
  263.  *
  264.  *   ・プラグインパラメーターの説明に、[初期値]と書かれているものは
  265.  *     プラグインコマンドで個別に設定変更が可能です。
  266.  *     変更した場合、[初期値]より変更後の設定が
  267.  *     優先されますのでご注意ください。
  268.  *
  269.  *   ・プラグインパラメータの説明に、[制御文字可]と書かれているものは
  270.  *     設定値に制御文字を使用可能です。
  271.  *     (例えば、変数を表示する\v[n]や、文章の改行を行う\nなどです)
  272.  *
  273.  *   ・変数を設定した場合、そのパラメータの利用時に変数の値を
  274.  *     参照するため、パラメータの設定をゲーム中に変更できます。
  275.  *
  276.  *
  277.  * 利用規約:
  278.  *   ・作者に無断で本プラグインの改変、再配布が可能です。
  279.  *     (ただしヘッダーの著作権表示部分は残してください。)
  280.  *
  281.  *   ・利用形態(フリーゲーム、商用ゲーム、R-18作品等)に制限はありません。
  282.  *     ご自由にお使いください。
  283.  *
  284.  *   ・本プラグインを使用したことにより発生した問題について作者は一切の責任を
  285.  *     負いません。
  286.  *
  287.  *   ・要望などがある場合、本プラグインのバージョンアップを行う
  288.  *     可能性がありますが、
  289.  *     バージョンアップにより本プラグインの仕様が変更される可能性があります。
  290.  *     ご了承ください。
  291.  *
  292.  * ==============================================================================
  293.  *
  294.  * @param Slot_Number
  295.  * @text 最大スロット数
  296.  * @desc アイテムスロットの最大数を指定してください。(1~10までの数字。デフォルト:10)
  297.  * @type number
  298.  * @min 1
  299.  * @max 10
  300.  * @default 10
  301.  *
  302.  * @param Slot_Set_Weapon
  303.  * @text 武器登録可否
  304.  * @desc アイテムスロットに武器を登録可能にするか選択します。(デフォルト:登録する)
  305.  * @type boolean
  306.  * @on 登録する
  307.  * @off 登録しない
  308.  * @default true
  309.  *
  310.  * @param Mouse_Mode
  311.  * @text マウスモード
  312.  * @desc マウスでのアイテムスロット操作設定
  313.  * @type struct<Mode>
  314.  * @default {"Use_Enable":"true","Select_Enable":"true"}
  315.  *
  316.  * @param Keyboard_Mode
  317.  * @text キーボードモード
  318.  * @desc キーボードでのアイテムスロット操作設定
  319.  * @type struct<Mode>
  320.  * @default {"Use_Enable":"true","Select_Enable":"true"}
  321.  *
  322.  *
  323.  * @param map_setting
  324.  * @text スロット(マップ)設定
  325.  * @default ====================================
  326.  *
  327.  * @param Slot_Visible
  328.  * @text アイテムスロットの表示
  329.  * @desc [初期値] アイテムスロットを初期状態で表示するか選択します。(デフォルト:表示)
  330.  * @type boolean
  331.  * @default true
  332.  * @on 表示
  333.  * @off 非表示
  334.  * @parent map_setting
  335.  *
  336.  * @param Slot_Background
  337.  * @text アイテムスロットの背景
  338.  * @desc アイテムスロットの背景画像を指定します。(デフォルト設定での必要画像サイズ:横384px,高さ60px)
  339.  * @type file
  340.  * @require 1
  341.  * @dir img/pictures
  342.  * @parent map_setting
  343.  *
  344.  * @param Slot_X
  345.  * @text アイテムスロットX座標
  346.  * @desc アイテムスロットを画面描画するためのX座標を指定してください。(数字/left/center/rightのいずれか。デフォルト:center)
  347.  * @type combo
  348.  * @option left
  349.  * @option center
  350.  * @option right
  351.  * @default center
  352.  * @parent map_setting
  353.  *
  354.  * @param Slot_Y
  355.  * @text アイテムスロットY座標
  356.  * @desc アイテムスロットを画面描画するためのY座標を指定してください。(数字/top/center/bottomのいずれか。デフォルト:bottom)
  357.  * @type combo
  358.  * @option top
  359.  * @option center
  360.  * @option bottom
  361.  * @default bottom
  362.  * @parent map_setting
  363.  *
  364.  * @param Map_Slot_Window
  365.  * @text ウィンドウ設定(マップ)
  366.  * @desc マップ画面のスロットウィンドウに関する設定です。(デフォルト:1.0 / 12 / 6)
  367.  * @type struct<SlotWindow>
  368.  * @default {"Size_Rate":"1.0","Padding":"12","Spacing":"6"}
  369.  * @parent map_setting
  370.  *
  371.  * @param Hide_Message
  372.  * @text 文章表示中のスロット表示
  373.  * @desc 文章の表示中、アイテムスロットを非表示にするか選択します。(デフォルト:非表示)
  374.  * @type boolean
  375.  * @on 非表示
  376.  * @off 表示
  377.  * @default true
  378.  * @parent map_setting
  379.  *
  380.  * @param Slot_Add_Mode
  381.  * @text スロット登録モード
  382.  * @desc 入手したアイテムを自動的にアイテムスロットに登録するか選択します。(デフォルト:登録する)
  383.  * @type boolean
  384.  * @on 登録する
  385.  * @off 登録しない
  386.  * @default true
  387.  * @parent map_setting
  388.  *
  389.  * @param Item_Use_Mode
  390.  * @text アイテム使用モード
  391.  * @desc アイテムの登録されたスロットにカーソルを移動後、自動的に使用するか選択します。(デフォルト:使用しない)
  392.  * @type boolean
  393.  * @on 使用する
  394.  * @off 使用しない
  395.  * @default false
  396.  * @parent map_setting
  397.  *
  398.  * @param Item_Remove_Mode
  399.  * @text アイテム削除モード
  400.  * @desc スロットに登録されたアイテムが0個になったとき、スロットから消去するか選択します。(デフォルト:削除する)
  401.  * @type boolean
  402.  * @on 削除する
  403.  * @off 削除しない
  404.  * @default true
  405.  * @parent map_setting
  406.  *
  407.  * @param Slot_Cursor_Visible
  408.  * @text カーソルの表示
  409.  * @desc アイテムスロットの選択カーソルを表示するか選択します。(デフォルト:表示する)
  410.  * @type boolean
  411.  * @on 表示する
  412.  * @off 表示しない
  413.  * @default true
  414.  * @parent map_setting
  415.  *
  416.  * @param Map_Slot_Opacity
  417.  * @text 不透明度(マップ)
  418.  * @desc マップ画面に表示されたアイテムスロットの不透明度を数値で指定します。0で完全に透明になります。(デフォルト:255)
  419.  * @type number
  420.  * @max 255
  421.  * @min 0
  422.  * @default 255
  423.  * @parent map_setting
  424.  *
  425.  *
  426.  * @param key_config
  427.  * @text キーコンフィグ
  428.  * @default ====================================
  429.  *
  430.  * @param Item_Use_Key
  431.  * @text アイテム使用キー
  432.  * @desc スロットに登録されたアイテムを使用するためのキーを指定してください。(デフォルト:Control) ※括弧内はキー名
  433.  * @type struct<Key>
  434.  * @default {"Key":"control"}
  435.  * @parent key_config
  436.  *
  437.  * @param Slot_1_Key
  438.  * @text スロット1選択キー
  439.  * @desc アイテムスロット1番を選択するキーを指定してください。(デフォルト:1) ※括弧内はキー名
  440.  * @type struct<Key>
  441.  * @default {"Key":"1"}
  442.  * @parent key_config
  443.  *
  444.  * @param Slot_2_Key
  445.  * @text スロット2選択キー
  446.  * @desc アイテムスロット2番を選択するキーを指定してください。(デフォルト:2) ※括弧内はキー名
  447.  * @type struct<Key>
  448.  * @default {"Key":"2"}
  449.  * @parent key_config
  450.  *
  451.  * @param Slot_3_Key
  452.  * @text スロット3選択キー
  453.  * @desc アイテムスロット3番を選択するキーを指定してください。(デフォルト:3) ※括弧内はキー名
  454.  * @type struct<Key>
  455.  * @default {"Key":"3"}
  456.  * @parent key_config
  457.  *
  458.  * @param Slot_4_Key
  459.  * @text スロット4選択キー
  460.  * @desc アイテムスロット4番を選択するキーを指定してください。(デフォルト:4) ※括弧内はキー名
  461.  * @type struct<Key>
  462.  * @default {"Key":"4"}
  463.  * @parent key_config
  464.  *
  465.  * @param Slot_5_Key
  466.  * @text スロット5選択キー
  467.  * @desc アイテムスロット5番を選択するキーを指定してください。(デフォルト:5) ※括弧内はキー名
  468.  * @type struct<Key>
  469.  * @default {"Key":"5"}
  470.  * @parent key_config
  471.  *
  472.  * @param Slot_6_Key
  473.  * @text スロット6選択キー
  474.  * @desc アイテムスロット6番を選択するキーを指定してください。(デフォルト:6) ※括弧内はキー名
  475.  * @type struct<Key>
  476.  * @default {"Key":"6"}
  477.  * @parent key_config
  478.  *
  479.  * @param Slot_7_Key
  480.  * @text スロット7選択キー
  481.  * @desc アイテムスロット7番を選択するキーを指定してください。(デフォルト:7) ※括弧内はキー名
  482.  * @type struct<Key>
  483.  * @default {"Key":"7"}
  484.  * @parent key_config
  485.  *
  486.  * @param Slot_8_Key
  487.  * @text スロット8選択キー
  488.  * @desc アイテムスロット8番を選択するキーを指定してください。(デフォルト:8) ※括弧内はキー名
  489.  * @type struct<Key>
  490.  * @default {"Key":"8"}
  491.  * @parent key_config
  492.  *
  493.  * @param Slot_9_Key
  494.  * @text スロット9選択キー
  495.  * @desc アイテムスロット9番を選択するキーを指定してください。(デフォルト:9) ※括弧内はキー名
  496.  * @type struct<Key>
  497.  * @default {"Key":"9"}
  498.  * @parent key_config
  499.  *
  500.  * @param Slot_10_Key
  501.  * @text スロット10選択キー
  502.  * @desc アイテムスロット10番を選択するキーを指定してください。(デフォルト:0) ※括弧内はキー名
  503.  * @type struct<Key>
  504.  * @default {"Key":"0"}
  505.  * @parent key_config
  506.  *
  507.  *
  508.  * @param menu_setting
  509.  * @text スロット(メニュー)設定
  510.  * @default ====================================
  511.  *
  512.  * @param Menu_Slot_Mode
  513.  * @text メニュー表示モード
  514.  * @desc [初期値]アイテムスロット画面コマンドをメニューに追加する方式を指定してください。(デフォルト:コマンド有効状態で追加)
  515.  * @type select
  516.  * @option 追加しない
  517.  * @value 0
  518.  * @option コマンド有効状態で追加
  519.  * @value 1
  520.  * @option コマンド無効状態で追加
  521.  * @value 2
  522.  * @default 1
  523.  * @parent menu_setting
  524.  *
  525.  * @param Menu_Background
  526.  * @text スロットメニューの背景
  527.  * @desc スロットメニュー画面の背景画像を指定します。(デフォルトのゲーム画面サイズ:横816px,高さ624px)
  528.  * @type file
  529.  * @require 1
  530.  * @dir img/pictures
  531.  * @parent menu_setting
  532.  *
  533.  * @param Menu_Slot_Window
  534.  * @text ウィンドウ設定(メニュー)
  535.  * @desc アイテムスロット画面のスロットウィンドウに関する設定です。(デフォルト:1.3 / 12 / 6)
  536.  * @type struct<SlotWindow>
  537.  * @default {"Size_Rate":"1.3","Padding":"12","Spacing":"6"}
  538.  * @parent menu_setting
  539.  *
  540.  * @param Menu_Slot_Name
  541.  * @text スロットコマンド名
  542.  * @desc メニューに追加する、アイテムスロット画面へ飛ぶためのコマンド名を指定してください。(デフォルト:アイテムスロット)
  543.  * @type text
  544.  * @default アイテムスロット
  545.  * @parent menu_setting
  546.  *
  547.  * @param Slot_Set_Name
  548.  * @text スロット登録コマンド名
  549.  * @desc アイテムスロット画面で、アイテムをスロットへ登録するためのコマンド名を指定してください。(デフォルト:登録)
  550.  * @type text
  551.  * @default 登録
  552.  * @parent menu_setting
  553.  *
  554.  * @param Slot_Remove_Name
  555.  * @text スロット削除コマンド名
  556.  * @desc アイテムスロット画面で、スロットに登録されたアイテムをクリアするためのコマンド名を指定してください。(デフォルト:削除)
  557.  * @type text
  558.  * @default 解除
  559.  * @parent menu_setting
  560.  *
  561.  * @param Slot_Set_Desc
  562.  * @text スロット登録説明文
  563.  * @desc [制御文字可]アイテムスロット画面で、スロットにアイテムを登録する際の説明文を指定してください。
  564.  * @type note
  565.  * @default "アイテムを登録したいスロットを選択し、\n登録するアイテムを選択してください。"
  566.  * @parent menu_setting
  567.  *
  568.  * @param Slot_Remove_Desc
  569.  * @text スロット削除説明文
  570.  * @desc [制御文字可]アイテムスロット画面で、スロットに登録されたアイテムを解除するスロットを選択する際の説明文を指定してください。
  571.  * @type note
  572.  * @default "アイテムの登録を解除するスロットを選択してください。"
  573.  * @parent menu_setting
  574.  *
  575.  * @param Menu_Slot_Opacity
  576.  * @text 不透明度(メニュー)
  577.  * @desc アイテムスロット画面のウィンドウの不透明度を数値で指定します。0で完全に透明になります。(デフォルト:255)
  578.  * @type number
  579.  * @max 255
  580.  * @min 0
  581.  * @default 255
  582.  * @parent menu_setting
  583.  *
  584. */
  585.  
  586. /*~struct~Key:
  587.  *
  588.  * @param Key
  589.  * @text キーコンフィグ
  590.  * @desc キーを指定してください。※括弧内はキー名など補足
  591.  * @type select
  592.  * @option なし
  593.  * @value null
  594.  * @option ダッシュ(Shift)
  595.  * @value shift
  596.  * @option Control(Ctrl/Alt/Command/Option)
  597.  * @value control
  598.  * @option A
  599.  * @option B
  600.  * @option C
  601.  * @option D
  602.  * @option E
  603.  * @option F
  604.  * @option G
  605.  * @option H
  606.  * @option I
  607.  * @option J
  608.  * @option K
  609.  * @option L
  610.  * @option N
  611.  * @option M
  612.  * @option O
  613.  * @option P
  614.  * @option R
  615.  * @option S
  616.  * @option T
  617.  * @option U
  618.  * @option V
  619.  * @option Y
  620.  * @option 1
  621.  * @option 2
  622.  * @option 3
  623.  * @option 4
  624.  * @option 5
  625.  * @option 6
  626.  * @option 7
  627.  * @option 8
  628.  * @option 9
  629.  * @option 0
  630.  *
  631.  */
  632. /*~struct~Mode:
  633.  *
  634.  * @param Use_Enable
  635.  * @text アイテム使用
  636.  * @desc このモードでスロットに登録されたアイテムの使用が可能か選択します。(デフォルト:使用可能)
  637.  * @type boolean
  638.  * @on 使用可能
  639.  * @off 使用不可
  640.  *
  641.  * @param Select_Enable
  642.  * @text スロット選択
  643.  * @desc このモードでスロットの選択が可能か選択します。(デフォルト:選択可能)
  644.  * @type boolean
  645.  * @on 選択可能
  646.  * @off 選択不可
  647.  *
  648.  */
  649. /*~struct~SlotWindow:
  650.  *
  651.  * @param Size_Rate
  652.  * @text スロットサイズ倍率
  653.  * @desc スロットサイズ倍率を指定してください。サイズは1.0で100%(1倍)、2.0で200%(2倍)となります。(1.0~2.0までの数字)
  654.  * @type number
  655.  * @decimals 1
  656.  * @min 1.0
  657.  * @max 2.0
  658.  *
  659.  * @param Padding
  660.  * @text ウィンドウ内余白
  661.  * @desc スロットウィンドウとスロットアイコン間の余白を調整します。(7以上の数字)
  662.  * @type number
  663.  * @min 7
  664.  *
  665.  * @param Spacing
  666.  * @text アイコン間隔
  667.  * @desc スロットアイコンの配置間隔を調整します。(0以上の数字)
  668.  * @type number
  669.  * @min 0
  670.  *
  671.  * */
  672.  
  673. var Imported = Imported || {};
  674. Imported.MKR_MapItemSlot = true;
  675.  
  676. (function () {
  677.     'use strict';
  678.  
  679.     const PN = "MKR_MapItemSlot";
  680.  
  681.     const CheckParam = function(type, name, value, def, min, max, options) {
  682.         if(min == undefined || min == null) {
  683.             min = -Infinity;
  684.         }
  685.         if(max == undefined || max == null) {
  686.             max = Infinity;
  687.         }
  688.  
  689.         if(value == null) {
  690.             value = "";
  691.         } else {
  692.             value = String(value);
  693.         }
  694.  
  695.         value = value.replace(/\\/g, '\x1b');
  696.         value = value.replace(/\x1b\x1b/g, '\\');
  697.  
  698.         switch(type) {
  699.             case "bool":
  700.                 if(value == "") {
  701.                     value = (def)? true : false;
  702.                 }
  703.                 value = value.toUpperCase() === "ON" || value.toUpperCase() === "TRUE" || value.toUpperCase() === "1";
  704.                 break;
  705.             case "num":
  706.                 if(value == "") {
  707.                     value = (isFinite(def))? parseInt(def, 10) : 0;
  708.                 } else {
  709.                     value = (isFinite(value))? parseInt(value, 10) : (isFinite(def))? parseInt(def, 10) : 0;
  710.                     value = value.clamp(min, max);
  711.                 }
  712.                 break;
  713.             case "float":
  714.                 if(value == "") {
  715.                     value = (isFinite(def))? parseFloat(def) : 0.0;
  716.                 } else {
  717.                     value = (isFinite(value))? parseFloat(value) : (isFinite(def))? parseFloat(def) : 0.0;
  718.                     value = value.clamp(min, max);
  719.                 }
  720.                 break;
  721.             case "string":
  722.                 value = value.replace(/^\"/, "");
  723.                 value = value.replace(/\"$/, "");
  724.                 if(value != null && options && options.contains("lower")) {
  725.                     value = value.toLowerCase();
  726.                 }
  727.                 if(value != null && options && options.contains("upper")) {
  728.                     value = value.toUpperCase();
  729.                 }
  730.                 break;
  731.             default:
  732.                 throw new Error("[CheckParam] " + name + "のタイプが不正です: " + type);
  733.                 break;
  734.         }
  735.  
  736.         return [value, type, def, min, max];
  737.     };
  738.  
  739.     const CEC = function(params) {
  740.         let text, value, type, def, min, max;
  741.         type = params[1];
  742.         text = String(params[0]);
  743.         text = text.replace(/\\/g, '\x1b');
  744.         text = text.replace(/\x1b\x1b/g, '\\');
  745.         type = params[1];
  746.         def = params[2];
  747.         min = params[3];
  748.         max = params[4];
  749.  
  750.         text = convertEscapeCharacters(text)
  751.  
  752.         switch(type) {
  753.             case "bool":
  754.                 if(text == "") {
  755.                     value = (def)? true : false;
  756.                 } else {
  757.                     value = text.toUpperCase() === "ON" || text.toUpperCase() === "TRUE" || text.toUpperCase() === "1";
  758.                 }
  759.                 break;
  760.             case "num":
  761.                 value = (isFinite(text))? parseInt(text, 10) : (isFinite(def))? parseInt(def, 10) : 0;
  762.                 value = value.clamp(min, max);
  763.                 break;
  764.             case "float":
  765.                 value = (isFinite(text))? parseFloat(text) : (isFinite(def))? parseFloat(def) : 0.0;
  766.                 value = value.clamp(min, max);
  767.                 break;
  768.             case "string":
  769.             case "select":
  770.                 if(text == "") {
  771.                     value = (def != "")? def : value;
  772.                 } else {
  773.                     value = text;
  774.                 }
  775.                 break;
  776.             default:
  777.                 throw new Error("[CEC] " + param + "のタイプが不正です: " + type);
  778.                 break;
  779.         }
  780.  
  781.         return value;
  782.     };
  783.  
  784.     const convertEscapeCharacters = function(text) {
  785.         let windowChild;
  786.  
  787.         if(typeof text == "string") {
  788.             if(SceneManager._scene) {
  789.                 windowChild = SceneManager._scene._windowLayer.children[0];
  790.                 text = windowChild ? windowChild.convertEscapeCharacters(text) : text;
  791.             } else {
  792.                 text = ConvVb(text);
  793.             }
  794.         }
  795.  
  796.         return text;
  797.     };
  798.  
  799.     const ConvVb = function(text) {
  800.         let num;
  801.  
  802.         if(typeof text == "string") {
  803.             text = text.replace(/\x1bV\[(\d+)\]/i, function() {
  804.             // text = text.replace(/\\V\[(\d+)\]/i, function() {
  805.                 num = parseInt(arguments[1]);
  806.                 return $gameVariables.value(num);
  807.             }.bind(this));
  808.             text = text.replace(/\x1bV\[(\d+)\]/i, function() {
  809.             // text = text.replace(/\\V\[(\d+)\]/i, function() {
  810.                 num = parseInt(arguments[1]);
  811.                 return $gameVariables.value(num);
  812.             }.bind(this));
  813.         }
  814.  
  815.         return text;
  816.     };
  817.  
  818.     const GetMeta = function(meta, name, sep) {
  819.         let value, values, i, count;
  820.         value = "";
  821.         values = [];
  822.         name = name.toLowerCase().trim();
  823.  
  824.         Object.keys(meta).forEach(function(key) {
  825.             if(key.toLowerCase().trim() == name) {
  826.                 value = meta[key].trim();
  827.                 return false;
  828.             }
  829.         });
  830.  
  831.         if(sep !== undefined && sep != "" && value != "") {
  832.             values = value.split(sep);
  833.             count = values.length;
  834.             values = values.map(function(elem) {
  835.                 return elem.trim();
  836.             });
  837.  
  838.             return values;
  839.         }
  840.  
  841.         return value;
  842.     };
  843.  
  844.     const paramParse = function(obj) {
  845.         return JSON.parse(JSON.stringify(obj, paramReplace));
  846.     }
  847.  
  848.     const paramReplace = function(key, value) {
  849.         try {
  850.             return JSON.parse(value || null);
  851.         } catch (e) {
  852.             return value;
  853.         }
  854.     };
  855.  
  856.     const Parameters = paramParse(PluginManager.parameters(PN));
  857.     let Params = {};
  858.  
  859.     Params = {
  860.         "SlotVisible" : CheckParam("bool", "Slot_Visible", Parameters["Slot_Visible"], true),
  861.         "SlotBackground" : CheckParam("string", "Slot_Background", Parameters["Slot_Background"], ""),
  862.         "SlotBackgroundNo" : CheckParam("num", "Slot_Background_No", Parameters["Slot_Background_No"], 10, 1, 100),
  863.         "SlotNumber" : CheckParam("num", "Slot_Number", Parameters["Slot_Number"], 10, 1, 10),
  864.         "SlotX" : CheckParam("string", "Slot_X", Parameters["Slot_X"], "center"),
  865.         "SlotY" : CheckParam("string", "Slot_Y", Parameters["Slot_Y"], "bottom"),
  866.         "SlotSetW" : CheckParam("bool", "Slot_Set_Weapon", Parameters["Slot_Set_Weapon"], true),
  867.         "SlotCursorVisible" : CheckParam("bool", "Slot_Cursor_Visible", Parameters["Slot_Cursor_Visible"], true),
  868.         "MapSlotOpacity" : CheckParam("num", "Map_Slot_Opacity", Parameters["Map_Slot_Opacity"], 255, 0, 255),
  869.         "HideMess" : CheckParam("bool", "Hide_Message", Parameters["Hide_Message"], true),
  870.         "SlotAddMode" : CheckParam("bool", "Slot_Add_Mode", Parameters["Slot_Add_Mode"], true),
  871.         "ItemRemoveMode" : CheckParam("bool", "Item_Remove_Mode", Parameters["Item_Remove_Mode"], true),
  872.         "ItemUseMode" : CheckParam("bool", "Item_Use_Mode", Parameters["Item_Use_Mode"], false),
  873.         "MenuSlotMode" : CheckParam("num", "Menu_Slot_Mode", Parameters["Menu_Slot_Mode"], "コマンド有効状態で追加"),
  874.         "MenuBackground" : CheckParam("string", "Menu_Background", Parameters["Menu_Background"], ""),
  875.         "MenuSlotName" : CheckParam("string", "Menu_Slot_Name", Parameters["Menu_Slot_Name"], "アイテムスロット"),
  876.         "SlotSetName" : CheckParam("string", "Slot_Set_Name", Parameters["Slot_Set_Name"], "登録"),
  877.         // "SlotChangeName" : CheckParam("string", "Slot_Change_Name", Parameters["Slot_Change_Name"], "入れ替え"),
  878.         "SlotRemoveName" : CheckParam("string", "Slot_Remove_Name", Parameters["Slot_Remove_Name"], "削除"),
  879.         "SlotSetDesc" : CheckParam("string", "Slot_Set_Desc", Parameters["Slot_Set_Desc"], "アイテムを登録したいスロットを選択し、\n登録するアイテムを選択してください。"),
  880.         "SlotChangeDesc" : CheckParam("string", "Slot_Change_Desc", Parameters["Slot_Change_Desc"], "移動元のスロットを選択し、\n交換先のスロットを選択してください。"),
  881.         "SlotRemoveDesc" : CheckParam("string", "Slot_Remove_Desc", Parameters["Slot_Remove_Desc"], "アイテムの登録を解除するスロットを選択してください。"),
  882.         "MenuSlotOpacity" : CheckParam("num", "Menu_Slot_Opacity", Parameters["Menu_Slot_Opacity"], 255, 0, 255),
  883.         "MapSlotWindow" : {
  884.             "SizeRate" : CheckParam("float", "Map_Slot_Window.Size_Rate", Parameters["Map_Slot_Window"]["Size_Rate"], 1.0, 1.0, 2.0),
  885.             "Padding" : CheckParam("num", "Map_Slot_Window.Padding", Parameters["Map_Slot_Window"]["Padding"], 12, 7),
  886.             "Spacing" : CheckParam("num", "Map_Slot_Window.Spacing", Parameters["Map_Slot_Window"]["Spacing"], 6, 0),
  887.         },
  888.         "MenuSlotWindow" : {
  889.             "SizeRate" : CheckParam("float", "Menu_Slot_Window.Size_Rate", Parameters["Menu_Slot_Window"]["Size_Rate"], 1.0, 1.0, 2.0),
  890.             "Padding" : CheckParam("num", "Menu_Slot_Window.Padding", Parameters["Menu_Slot_Window"]["Padding"], 12, 7),
  891.             "Spacing" : CheckParam("num", "Menu_Slot_Window.Spacing", Parameters["Menu_Slot_Window"]["Spacing"], 6, 0),
  892.         },
  893.         "KeyConfig" : {
  894.             "ItemUseKey" : CheckParam("string", "Item_Use_Key", Parameters["Item_Use_Key"]["Key"], "control", null, null, ["lower"]),
  895.             "Slot1Key" : CheckParam("string", "Slot_1_Key", Parameters["Slot_1_Key"]["Key"], "1", null, null, ["lower"]),
  896.             "Slot2Key" : CheckParam("string", "Slot_2_Key", Parameters["Slot_2_Key"]["Key"], "2", null, null, ["lower"]),
  897.             "Slot3Key" : CheckParam("string", "Slot_3_Key", Parameters["Slot_3_Key"]["Key"], "3", null, null, ["lower"]),
  898.             "Slot4Key" : CheckParam("string", "Slot_4_Key", Parameters["Slot_4_Key"]["Key"], "4", null, null, ["lower"]),
  899.             "Slot5Key" : CheckParam("string", "Slot_5_Key", Parameters["Slot_5_Key"]["Key"], "5", null, null, ["lower"]),
  900.             "Slot6Key" : CheckParam("string", "Slot_6_Key", Parameters["Slot_6_Key"]["Key"], "6", null, null, ["lower"]),
  901.             "Slot7Key" : CheckParam("string", "Slot_7_Key", Parameters["Slot_7_Key"]["Key"], "7", null, null, ["lower"]),
  902.             "Slot8Key" : CheckParam("string", "Slot_8_Key", Parameters["Slot_8_Key"]["Key"], "8", null, null, ["lower"]),
  903.             "Slot9Key" : CheckParam("string", "Slot_9_Key", Parameters["Slot_9_Key"]["Key"], "9", null, null, ["lower"]),
  904.             "Slot10Key" : CheckParam("string", "Slot_10_Key", Parameters["Slot_10_Key"]["Key"], "0", null, null, ["lower"]),
  905.         },
  906.         "KeyboardMode" : {
  907.             "UseEnable" : CheckParam("bool", "KeyboardMode.Use_Enable", Parameters["Keyboard_Mode"]["Use_Enable"], true),
  908.             "SelectEnable" : CheckParam("bool", "KeyboardMode.Select_Enable", Parameters["Keyboard_Mode"]["Select_Enable"], true),
  909.         },
  910.         "MouseMode" : {
  911.             "UseEnable" : CheckParam("bool", "MouseMode.Use_Enable", Parameters["Mouse_Mode"]["Use_Enable"], true),
  912.             "SelectEnable" : CheckParam("bool", "MouseMode.Select_Enable", Parameters["Mouse_Mode"]["Select_Enable"], true),
  913.         },
  914.     };
  915.  
  916.     const ITEM = "item";
  917.     const WEAPON = "weapon";
  918.     const ARMOR = "armor";
  919.  
  920.  
  921.     //=========================================================================
  922.     // Input
  923.     //  ・キー判定処理を再定義します。
  924.     //
  925.     //=========================================================================
  926.     let _Input_onKeyDown = Input._onKeyDown;
  927.     Input._onKeyDown = function(event) {
  928.         _Input_onKeyDown.call(this, event);
  929.  
  930.         let name;
  931.         name = codeToName(event);
  932.  
  933.         // console.log(event);
  934.         if(!Input.keyMapper[event.keyCode]) {
  935.             // console.log("name:"+name);
  936.             if(name) {
  937.                 this._currentState[name] = true;
  938.             }
  939.         }
  940.     };
  941.  
  942.     let _Input_onKeyUp = Input._onKeyUp;
  943.     Input._onKeyUp = function(event) {
  944.         _Input_onKeyUp.call(this, event);
  945.  
  946.         let name;
  947.         name = codeToName(event);
  948.  
  949.         if(!Input.keyMapper[event.keyCode]) {
  950.             if(name) {
  951.                 this._currentState[name] = false;
  952.             }
  953.         }
  954.     };
  955.  
  956.  
  957.     //=========================================================================
  958.     // Game_Interpreter
  959.     //  ・アイテムスロットを操作するプラグインコマンドを定義します。
  960.     //
  961.     //=========================================================================
  962.     let _Game_Interpreter_pluginCommand = Game_Interpreter.prototype.pluginCommand;
  963.     Game_Interpreter.prototype.pluginCommand = function(command, args) {
  964.         _Game_Interpreter_pluginCommand.call(this, command, args);
  965.  
  966.         let index, id, type, item, equip, i, cnt, itemSlot, actor, scene;
  967.         index = -1;
  968.         id = 0;
  969.         type = null;
  970.         item = null;
  971.         equip = false;
  972.         itemSlot = [];
  973.         actor = $gameParty.leader();
  974.         scene = SceneManager._scene;
  975.  
  976.         if (command.toLowerCase() === "itemslot") {
  977.             switch (args[0].toLowerCase()) {
  978.                 case "show":
  979.                     $gameParty.setItemSlotVisible(true);
  980.                     break;
  981.                 case "hide":
  982.                     $gameParty.setItemSlotVisible(false);
  983.                     break;
  984.                 case "edit":
  985.                     SceneManager.push(Scene_ItemSlot);
  986.                     break;
  987.                 case "set":
  988.                     if(args[1] != null && isFinite(args[1])) {
  989.                         index = parseInt(args[1], 10) - 1;
  990.                     }
  991.                     if(args[2]) {
  992.                         if((args[2].toLowerCase() == WEAPON && Params.SlotSetW[0]) || (args[2].toLowerCase() == ITEM)) {
  993.                             type = args[2].toLowerCase();
  994.                         }
  995.                     }
  996.                     if(args[3] != null && isFinite(args[3])) {
  997.                         id = parseInt(args[3], 10);
  998.                     }
  999.                     if(args[4]) {
  1000.                         equip = args[4].toLowerCase() === "true" ? true : false;
  1001.                         if(type == ITEM) {
  1002.                             equip = false;
  1003.                         }
  1004.                     }
  1005.  
  1006.                     if(index < -1 || index >= Params.SlotNumber[0] || !type || id < 1) {
  1007.                         break;
  1008.                     }
  1009.  
  1010.                     item = DataManager.getItemByIdType(id, type);
  1011.  
  1012.                     if(type == WEAPON && !actor.isEquipWtypeOk(item.wtypeId)) {
  1013.                         equip = false;
  1014.                     }
  1015.  
  1016.                     if(item && $gameParty.hasItemType(item)) {
  1017.                         $gameParty.setItemSlot(index, item, equip);
  1018.                         // if(!equip) {
  1019.                             $gameParty.gainItem(item, 1, false);
  1020.                         // }
  1021.                     }
  1022.                     break;
  1023.                 case "remove":
  1024.                     if(args[1] != null && isFinite(args[1])) {
  1025.                         index = parseInt(args[1], 10) - 1;
  1026.                     }
  1027.  
  1028.                     if(index >= 0) {
  1029.                         // アイテムスロットのアイテム削除判定
  1030.                         $gameParty.removeItemSlot(index);
  1031.                         if(scene && scene.constructor == Scene_Map) {
  1032.                             scene._mapItemSlotWindow.redrawItem(index);
  1033.                         }
  1034.                     }
  1035.                     break;
  1036.                 case "clear":
  1037.                     itemSlot = $gameParty.getItemSlot(-1);
  1038.                     cnt = itemSlot.length;
  1039.                     for(i = 0; i < cnt; i++) {
  1040.                         // アイテムスロットのアイテム削除判定
  1041.                         $gameParty.removeItemSlot(i);
  1042.                         if(scene && scene.constructor == Scene_Map) {
  1043.                             scene._mapItemSlotWindow.redrawItem(i);
  1044.                         }
  1045.                     }
  1046.                     break;
  1047.                 case "menu":
  1048.                     $gameParty.setMenuSlotStatus(args[1]);
  1049.                     break;
  1050.                 case "use":
  1051.                     if(args[1] != null && isFinite(args[1])) {
  1052.                         index = parseInt(args[1], 10) - 1;
  1053.                     }
  1054.                     if(index >= 0) {
  1055.                         itemSlot = $gameParty.getItemSlot(index);
  1056.                         if(itemSlot && itemSlot.type == ITEM) {
  1057.                             item = DataManager.getItemByIdType(itemSlot.id, itemSlot.type);
  1058.                             $gameParty.useItemSlot(item);
  1059.  
  1060.                             // アイテムスロットのアイテム削除判定
  1061.                             if(item && Params.ItemRemoveMode[0] && $gameParty.numItems(item) <= 0) {
  1062.                                 $gameParty.removeItemSlot(index);
  1063.                                 if(scene && scene.constructor == Scene_Map) {
  1064.                                     scene._mapItemSlotWindow.redrawItem(index);
  1065.                                 }
  1066.                             }
  1067.                         }
  1068.                     }
  1069.                     break;
  1070.                 case "select":
  1071.                     if(args[1] != "") {
  1072.                         if(slotToIndex(args[1].toLowerCase()) != -1) {
  1073.                             if(scene && scene.constructor == Scene_Map) {
  1074.                                 scene._mapItemSlotWindow.select(slotToIndex(args[1].toLowerCase()));
  1075.                             }
  1076.                         }
  1077.                     }
  1078.                     break;
  1079.             }
  1080.         }
  1081.     };
  1082.  
  1083.  
  1084.     //=========================================================================
  1085.     // Game_Party
  1086.     //  ・アイテムスロットの内容を定義します。
  1087.     //
  1088.     //=========================================================================
  1089.     let _Game_Party_initialize = Game_Party.prototype.initialize;
  1090.     Game_Party.prototype.initialize = function() {
  1091.         _Game_Party_initialize.call(this);
  1092.  
  1093.         this.initItemSlot();
  1094.     };
  1095.  
  1096.     Game_Party.prototype.initItemSlot = function() {
  1097.         let i, j, items, cnt, actor;
  1098.         i = 0;
  1099.         j = 0;
  1100.  
  1101.         if(this._itemSlot == undefined || this._itemSlot == null) {
  1102.             this._itemSlot = [];
  1103.             items = this.allItems();
  1104.             cnt = Params.SlotNumber[0];
  1105.             // アクターが武器を装備済みの場合、先にスロットに登録する。
  1106.             if($gameParty && Params.SlotAddMode[0]) {
  1107.                 actor = $gameParty.leader();
  1108.                 if(actor.weapons().length > 0) {
  1109.                     actor.weapons().forEach(function(item) {
  1110.                         this.setItemSlot(i, item);
  1111.                         i++;
  1112.                     }, this);
  1113.                 }
  1114.             }
  1115.             for(; i < cnt; i++) {
  1116.                 if(items && items[j] && Params.SlotAddMode[0]) {
  1117.                     this.setItemSlot(i, items[j]);
  1118.                     j++;
  1119.                 } else {
  1120.                     this._itemSlot[i] = null;
  1121.                 }
  1122.             }
  1123.         }
  1124.  
  1125.         this._itemSlotLastIndex = -1;
  1126.         this._itemSlotSetIndex = -1;
  1127.         this._itemSlotVisible = true;
  1128.         if(this._menuSlotStatus == undefined || this._menuSlotStatus == null) {
  1129.             this._menuSlotStatus = Params.MenuSlotMode[0];
  1130.         }
  1131.         this._slotEquipItem = null;
  1132.     };
  1133.  
  1134.     Game_Party.prototype.updateItemSlot = function() {
  1135.         let i, cnt;
  1136.  
  1137.         if(this._itemSlot != undefined && this._itemSlot != null) {
  1138.             cnt = Params.SlotNumber[0];
  1139.             for(i = this._itemSlot.length; i < cnt; i++) {
  1140.                 this._itemSlot[i] = null;
  1141.             }
  1142.         }
  1143.     };
  1144.  
  1145.     let _Game_Party_gainItem = Game_Party.prototype.gainItem;
  1146.     Game_Party.prototype.gainItem = function(item, amount, includeEquip) {
  1147.         let type, index, i, cnt, container, actor, meta;
  1148.  
  1149.         meta = "";
  1150.         if(item && item.meta) {
  1151.             meta = GetMeta(item.meta, "itemslot");
  1152.         }
  1153.         if(Params.SlotAddMode[0] && meta.toLowerCase() != "noadd") {
  1154.             container = this.itemContainer(item);
  1155.             if(container && this.hasItemType(item) && this.getSlotEquipItem() != item) {
  1156.                 cnt = this._itemSlot.length;
  1157.                 type = DataManager.getItemType(item);
  1158.                 index = this.getItemSlotNumber(type, item.id);
  1159.  
  1160.                 if(index == -1) {
  1161.                     this.setItemSlot(index, item);
  1162.                 }
  1163.             }
  1164.         }
  1165.  
  1166.         _Game_Party_gainItem.apply(this, arguments);
  1167.     };
  1168.  
  1169.     Game_Party.prototype.setItemSlot = function(index, item, equip) {
  1170.         let equipFlg, actor, win, cnt, i;
  1171.  
  1172.         if(equip == undefined || equip == null) {
  1173.             equip = false;
  1174.         }
  1175.  
  1176.         if(index == -1) {
  1177.             index = this.getItemSlotFreeNumber() - 1;
  1178.         }
  1179.  
  1180.         // アイテムが登録済みの場合は新たに登録させない
  1181.         if(DataManager.isItem(item) && this.getItemSlotNumber(ITEM, item.id) >= 0) {
  1182.             index = -1;
  1183.         } else if(DataManager.isWeapon(item) && this.getItemSlotNumber(WEAPON, item.id) >= 0) {
  1184.             index = -1;
  1185.         }
  1186.  
  1187.         actor = $gameParty.leader();
  1188.         if(item && index >= 0 && index < Params.SlotNumber[0]) {
  1189.             if(DataManager.isItem(item)) {
  1190.                 this._itemSlot[index] = {};
  1191.                 this._itemSlot[index].id = item.id;
  1192.                 this._itemSlot[index].type = ITEM;
  1193.             } else if(DataManager.isWeapon(item) && actor.isEquipWtypeOk(item.wtypeId)) {
  1194.                 equipFlg = actor.isEquipped(item);
  1195.                 this._itemSlot[index] = {};
  1196.                 this._itemSlot[index].id = item.id;
  1197.                 this._itemSlot[index].type = WEAPON;
  1198.                 this._itemSlot[index].kind = item.wtypeId;
  1199.                 this._itemSlot[index].equip = equipFlg;
  1200.  
  1201.                 if(equip) {
  1202.                     $gameParty.setItemSlotLastIndex(index);
  1203.                     this._itemSlot[index].equip = true;
  1204.                     actor.changeEquip(0, item);
  1205.                 }
  1206.             }
  1207.         }
  1208.     };
  1209.  
  1210.     Game_Party.prototype.removeItemSlot = function(index) {
  1211.         let cnt;
  1212.         cnt = this._itemSlot.length;
  1213.  
  1214.         if(index >= 0 && index < cnt) {
  1215.             if(this._itemSlot[index] && this._itemSlot[index].type == WEAPON) {
  1216.                 this.leader().changeEquip(0, null);
  1217.             }
  1218.             this._itemSlot[index] = null
  1219.         }
  1220.     };
  1221.  
  1222.     Game_Party.prototype.clearItemSlot = function() {
  1223.         let cnt;
  1224.         cnt = this._itemSlot.length;
  1225.  
  1226.         for (i = 0; i < cnt; i++) {
  1227.             this._itemSlot[i] = null;
  1228.         }
  1229.     };
  1230.  
  1231.     Game_Party.prototype.swapItemSlot = function(index1, index2) {
  1232.         let temp;
  1233.         temp = this._itemSlot[index1];
  1234.  
  1235.         this._itemSlot[index1] = this._itemSlot[index2];
  1236.         this._itemSlot[index2] = temp;
  1237.     };
  1238.  
  1239.     Game_Party.prototype.hasItemType = function(item) {
  1240.         let type;
  1241.         type = DataManager.getItemType(item);
  1242.  
  1243.         if(type == WEAPON && !Params.SlotSetW[0]) {
  1244.             return false;
  1245.         } else if(type == ARMOR) {
  1246.             return false;
  1247.         }
  1248.  
  1249.         return true;
  1250.     };
  1251.  
  1252.     Game_Party.prototype.setEquipStatus = function(index, equip) {
  1253.         let equipFlg, actor, itemSlot;
  1254.         itemSlot = this.getItemSlot(index);
  1255.  
  1256.         if(itemSlot && (itemSlot.type == WEAPON || itemSlot.type == ARMOR)) {
  1257.             this._itemSlot[index].equip = equip;
  1258.         }
  1259.     };
  1260.  
  1261.     Game_Party.prototype.getItemSlot = function(index) {
  1262.         if(this._itemSlot && isFinite(index)) {
  1263.             if(index == -1) {
  1264.                 return this._itemSlot;
  1265.             } else if(index >= 0 && index < this._itemSlot.length) {
  1266.                 return this._itemSlot[index];
  1267.             }
  1268.         }
  1269.         return null;
  1270.     };
  1271.  
  1272.     Game_Party.prototype.getItemSlotNumber = function(type, id) {
  1273.         let cnt, i, ret, itemSlot;
  1274.         cnt = this._itemSlot.length;
  1275.         ret = -1;
  1276.  
  1277.         for(i = 0; i < cnt; i++) {
  1278.             itemSlot = this._itemSlot[i];
  1279.             if(itemSlot) {
  1280.                 if(itemSlot.type == type && itemSlot.id == id) {
  1281.                     ret = i;
  1282.                     break;
  1283.                 }
  1284.             }
  1285.         }
  1286.         return ret;
  1287.     };
  1288.  
  1289.     Game_Party.prototype.getItemSlotFreeNumber = function() {
  1290.         let cnt, i, ret;
  1291.         cnt = this._itemSlot.length;
  1292.         ret = -1;
  1293.  
  1294.         cnt = this._itemSlot.length;
  1295.         for(i = 0; i < cnt; i++) {
  1296.             if(this._itemSlot[i] == null) {
  1297.                 ret = i;
  1298.                 break;
  1299.             }
  1300.         }
  1301.  
  1302.         return ++ret;
  1303.     };
  1304.  
  1305.     Game_Party.prototype.getItemSlotLastIndex = function() {
  1306.         return this._itemSlotLastIndex;
  1307.     };
  1308.  
  1309.     Game_Party.prototype.setItemSlotLastIndex = function(index) {
  1310.         this._itemSlotLastIndex = index;
  1311.     };
  1312.  
  1313.     Game_Party.prototype.getItemSlotForceIndex = function() {
  1314.         return this._itemSlotForceIndex;
  1315.     };
  1316.  
  1317.     Game_Party.prototype.setItemSlotForceIndex = function(index) {
  1318.         this._itemSlotForceIndex = index;
  1319.     };
  1320.  
  1321.     Game_Party.prototype.isItemSlotHide = function() {
  1322.         return !this._itemSlotVisible;
  1323.     };
  1324.  
  1325.     Game_Party.prototype.setItemSlotVisible = function(visible) {
  1326.         this._itemSlotVisible = visible;
  1327.     };
  1328.  
  1329.     Game_Party.prototype.getMenuSlotStatus = function() {
  1330.         return this._menuSlotStatus;
  1331.     };
  1332.  
  1333.     Game_Party.prototype.setMenuSlotStatus = function(status) {
  1334.         if(status != null && isFinite(status)) {
  1335.             status = parseInt(status, 10);
  1336.             if(status >= 0 && status <= 2) {
  1337.                 this._menuSlotStatus = status;
  1338.             }
  1339.         }
  1340.     };
  1341.  
  1342.     Game_Party.prototype.getSlotEquipItem = function() {
  1343.         return this._slotEquipItem;
  1344.     };
  1345.  
  1346.     Game_Party.prototype.setSlotEquipItem = function(item) {
  1347.         if(item) {
  1348.             if(DataManager.getItemType(item) == WEAPON) {
  1349.                 this._slotEquipItem = item;
  1350.             } else {
  1351.                 this._slotEquipItem = null;
  1352.             }
  1353.         }
  1354.     };
  1355.  
  1356.     Game_Party.prototype.useItemSlot = function(item) {
  1357.         let actor, action, i;
  1358.         actor = this.leader();
  1359.  
  1360.         if (item && actor.canUse(item) && (item.scope === 0 || this.isItemEffectsValid(item))) {
  1361.             $gameParty.setLastItem(item);
  1362.             actor.useItem(item);
  1363.             action = new Game_Action(actor);
  1364.             action.setItemObject(item);
  1365.             this.itemTargetActors(item).forEach(function(target) {
  1366.                 for (i = 0; i < action.numRepeats(); i++) {
  1367.                     action.apply(target);
  1368.                 }
  1369.             }, this);
  1370.             $gamePlayer.requestAnimation(item.animationId);
  1371.             action.applyGlobal();
  1372.             // this._mapItemSlotWindow.redrawCurrentItem();
  1373.             return true;
  1374.         } else if(item && DataManager.getItemType(item) == ITEM ) {
  1375.             SoundManager.playBuzzer();
  1376.         }
  1377.  
  1378.         return false;
  1379.     };
  1380.  
  1381.     Game_Party.prototype.isItemEffectsValid = function(item) {
  1382.         let actor, action;
  1383.         actor = $gameParty.leader();
  1384.         action = new Game_Action(actor);
  1385.         action.setItemObject(item);
  1386.  
  1387.         return this.itemTargetActors(item).some(function(target) {
  1388.             return action.testApply(target);
  1389.         }, this);
  1390.     };
  1391.  
  1392.     Game_Party.prototype.itemTargetActors = function(item) {
  1393.         let actor, action;
  1394.         actor = $gameParty.leader();
  1395.         action = new Game_Action(actor);
  1396.         action.setItemObject(item);
  1397.  
  1398.         if (!action.isForFriend()) {
  1399.             return [];
  1400.         } else if (action.isForAll()) {
  1401.             return $gameParty.members();
  1402.         } else {
  1403.             return [actor];
  1404.         }
  1405.     };
  1406.  
  1407.  
  1408.     //=========================================================================
  1409.     // Game_Actor
  1410.     //  ・リーダーアクターの武器変更処理を再定義します。
  1411.     //
  1412.     //=========================================================================
  1413.     let _Game_Actor_isEquipChangeOk = Game_Actor.prototype.isEquipChangeOk;
  1414.     Game_Actor.prototype.isEquipChangeOk = function(slotId) {
  1415.         let ret = _Game_Actor_isEquipChangeOk.call(this, slotId);
  1416.  
  1417.         if(Params.SlotSetW[0] && this == $gameParty.leader() && slotId == 0 && ret) {
  1418.             ret = false;
  1419.         }
  1420.  
  1421.         return ret;
  1422.     };
  1423.  
  1424.     let _Game_Actor_changeEquip = Game_Actor.prototype.changeEquip;
  1425.     Game_Actor.prototype.changeEquip = function(slotId, item) {
  1426.         let index;
  1427.  
  1428.         if(Params.SlotSetW[0] && this == $gameParty.leader() && slotId == 0 && DataManager.getItemType(item) == WEAPON) {
  1429.             index = $gameParty.getItemSlotNumber(WEAPON, item.id);
  1430.             if(index == -1) {
  1431.                 index = $gameParty.getItemSlotFreeNumber() - 1;
  1432.                 if(index >= 0) {
  1433.                     $gameParty.setItemSlotForceIndex(index);
  1434.                     _Game_Actor_changeEquip.apply(this, arguments);
  1435.                 }
  1436.             } else {
  1437.                 $gameParty.setItemSlotForceIndex(index);
  1438.                 _Game_Actor_changeEquip.apply(this, arguments);
  1439.             }
  1440.         } else {
  1441.             _Game_Actor_changeEquip.apply(this, arguments);
  1442.         }
  1443.     };
  1444.  
  1445.  
  1446.     //=========================================================================
  1447.     // Window_ItemSlotBase
  1448.     //  ・アイテムスロットウィンドウを定義します。
  1449.     //
  1450.     //=========================================================================
  1451.     function Window_ItemSlotBase() {
  1452.         this.initialize.apply(this, arguments);
  1453.     }
  1454.  
  1455.     Window_ItemSlotBase.prototype = Object.create(Window_Selectable.prototype);
  1456.     Window_ItemSlotBase.prototype.constructor = Window_ItemSlotBase;
  1457.  
  1458.  
  1459.     Window_ItemSlotBase.prototype.initialize = function(x, y, kind) {
  1460.         x = this.stringToPoint(x, "x");
  1461.         y = this.stringToPoint(y, "y");
  1462.  
  1463.         Window_Selectable.prototype.initialize.call(this, x, y, this.windowWidth(), this.windowHeight());
  1464.         this._type = [];
  1465.         this._num = [];
  1466.         this._kind = kind;
  1467.         this._lastIndex = $gameParty.getItemSlotLastIndex();
  1468.  
  1469.         // GALV_GursorImage.jsへの対応
  1470.         if(Imported.Galv_CursorImage) {
  1471.             this.removeChild(this._galvCursor);
  1472.         }
  1473.  
  1474.         this.refresh();
  1475.         this.show();
  1476.     };
  1477.  
  1478.     // Window_ItemSlotBase.prototype.standardPadding = function() {
  1479.     //     return 12;
  1480.     // };
  1481.  
  1482.     // Window_ItemSlotBase.prototype.spacing = function() {
  1483.     //     return 0;
  1484.     // };
  1485.  
  1486.     Window_ItemSlotBase.prototype.maxCols = function() {
  1487.         return Params.SlotNumber[0];
  1488.     };
  1489.  
  1490.     Window_ItemSlotBase.prototype.maxItems = function() {
  1491.         return Params.SlotNumber[0];
  1492.     };
  1493.  
  1494.     Window_ItemSlotBase.prototype.windowWidth = function() {
  1495.         // return this.maxCols() * (this.lineHeight() + this.standardPadding() * 2);
  1496.         return this.maxCols() * this.lineHeight() + this.standardPadding() * 2;
  1497.     };
  1498.  
  1499.     Window_ItemSlotBase.prototype.windowHeight = function() {
  1500.         return this.fittingHeight(1);
  1501.     };
  1502.  
  1503.     Window_ItemSlotBase.prototype.itemHeight = function() {
  1504.         let val = this.contentsHeight();
  1505.         val = val > this.contentsWidth() ? this.contentsWidth() : val;
  1506.         return val;
  1507.     };
  1508.  
  1509.     Window_ItemSlotBase.prototype.lastIndex = function() {
  1510.         return this._lastIndex;
  1511.     };
  1512.  
  1513.     Window_ItemSlotBase.prototype.item = function(index) {
  1514.         let itemSlot;
  1515.  
  1516.         if(index == undefined || index == null || index < 0) {
  1517.             index = this.index();
  1518.         }
  1519.  
  1520.         itemSlot = $gameParty.getItemSlot(index);
  1521.  
  1522.         if(itemSlot) {
  1523.             if(itemSlot.type == ITEM) {
  1524.                 return $dataItems[itemSlot.id];
  1525.             } else if(itemSlot.type == WEAPON) {
  1526.                 return $dataWeapons[itemSlot.id];
  1527.             } else if(itemSlot.type == ARMOR) {
  1528.                 return $dataArmors[itemSlot.id];
  1529.             }
  1530.         }
  1531.  
  1532.         return null;
  1533.     };
  1534.  
  1535.     Window_ItemSlotBase.prototype.isHide = function() {
  1536.         return !this.visible;
  1537.     };
  1538.  
  1539.     Window_ItemSlotBase.prototype.update = function() {
  1540.         Window_Selectable.prototype.update.call(this);
  1541.     };
  1542.  
  1543.     Window_ItemSlotBase.prototype.drawItem = function(index) {
  1544.         Window_Selectable.prototype.drawItem.call(this, index);
  1545.  
  1546.         let item, rect, num, type, id, itemSlot, equipFlg, actor, fontSize, x, y,
  1547.             sizeRate;
  1548.         itemSlot = $gameParty.getItemSlot(index);
  1549.         actor = $gameParty.leader();
  1550.         sizeRate = this._kind ? Params.MapSlotWindow.SizeRate[0] : Params.MenuSlotWindow.SizeRate[0];
  1551.  
  1552.         if(itemSlot) {
  1553.             type = itemSlot.type;
  1554.             id = itemSlot.id;
  1555.             item = this.item(index);
  1556.             if (item) {
  1557.                 rect = this.itemRect(index);
  1558.                 num = $gameParty.numItems(item);
  1559.  
  1560.                 if(type == WEAPON && actor.isEquipped(item)) {
  1561.                     this.changePaintOpacity(true);
  1562.                 } else {
  1563.                     this.changePaintOpacity(num > 0);
  1564.                 }
  1565.  
  1566.                 x = rect.x + rect.width / 2 - Window_Base._iconWidth * sizeRate / 2;
  1567.                 y = rect.y + rect.height / 2 - Window_Base._iconHeight * sizeRate / 2;
  1568.                 this.drawIconEx(item.iconIndex, x, y, sizeRate);
  1569.  
  1570.                 if(type == ITEM) {
  1571.                     fontSize = this.contents.fontSize;
  1572.                     this.contents.fontSize = 20;
  1573.                     this.contents.drawText("" + num, rect.x, rect.height - 20, rect.width - 2, 24, 'right');
  1574.                     this.contents.fontSize = fontSize;
  1575.                     this._type[index] = ITEM;
  1576.                 } else if(type == WEAPON) {
  1577.                     this._type[index] = WEAPON;
  1578.                 }
  1579.                 this._num[index] = num;
  1580.             } else {
  1581.                 this._type[index] = "";
  1582.                 this._num[index] = 0;
  1583.             }
  1584.         }
  1585.     };
  1586.  
  1587.     Window_ItemSlotBase.prototype.drawIconEx = function(iconIndex, x, y, sizeRate) {
  1588.         let bitmap, pw, ph, sx, sy, dw, dh;
  1589.         if(sizeRate == "" || sizeRate <= 1) {
  1590.             sizeRate = 1.0;
  1591.         }
  1592.         bitmap = ImageManager.loadSystem('IconSet');
  1593.         pw = Window_Base._iconWidth;
  1594.         ph = Window_Base._iconHeight;
  1595.         sx = iconIndex % 16 * pw;
  1596.         sy = Math.floor(iconIndex / 16) * ph;
  1597.         dw = pw * sizeRate;
  1598.         dh = ph * sizeRate;
  1599.  
  1600.         this.contents.blt(bitmap, sx, sy, pw, ph, x, y, dw, dh);
  1601.     };
  1602.  
  1603.     Window_ItemSlotBase.prototype.stringToPoint = function(text, type) {
  1604.         let val = 0;
  1605.  
  1606.         if(isFinite(text)) {
  1607.             val = parseInt(text, 10);
  1608.         } else {
  1609.             switch(text.toLowerCase()) {
  1610.                 case "right":
  1611.                     if(type == "x") {
  1612.                         val = Graphics.boxWidth - this.windowWidth();
  1613.                     }
  1614.                     break;
  1615.                 case "left":
  1616.                     if(type == "x") {
  1617.                         val = 0;
  1618.                     }
  1619.                     break;
  1620.                 case "top":
  1621.                     if(type == "y") {
  1622.                         val = 0;
  1623.                     }
  1624.                     break;
  1625.                 case "bottom":
  1626.                     if(type == "y") {
  1627.                         val = Graphics.boxHeight - this.windowHeight();
  1628.                     }
  1629.                     break;
  1630.                 case "center":
  1631.                     if(type == "x") {
  1632.                         val = Graphics.boxWidth / 2 - this.windowWidth() / 2;
  1633.                     } else if(type == "y") {
  1634.                         val = Graphics.boxHeight / 2 - this.windowHeight() / 2;
  1635.                     }
  1636.                     break;
  1637.             }
  1638.         }
  1639.  
  1640.         return val;
  1641.     }
  1642.  
  1643.     Window_ItemSlotBase.prototype.select = function(index) {
  1644.         if(index < Params.SlotNumber[0]) {
  1645.             Window_Selectable.prototype.select.call(this, index);
  1646.         }
  1647.     };
  1648.  
  1649.     Window_ItemSlotBase.prototype.selectLast = function() {
  1650.         if(this._lastIndex <= -1) {
  1651.             this.select(0);
  1652.         } else {
  1653.             this.select(this._lastIndex);
  1654.         }
  1655.     };
  1656.  
  1657.  
  1658.     //=========================================================================
  1659.     // Window_MapItemSlot
  1660.     //  ・マップ画面のアイテムスロットウィンドウを定義します。
  1661.     //
  1662.     //=========================================================================
  1663.     function Window_MapItemSlot() {
  1664.         this.initialize.apply(this, arguments);
  1665.     }
  1666.  
  1667.     Window_MapItemSlot.prototype = Object.create(Window_ItemSlotBase.prototype);
  1668.     Window_MapItemSlot.prototype.constructor = Window_MapItemSlot;
  1669.  
  1670.     Window_MapItemSlot.prototype.initialize = function(x, y, kind) {
  1671.         Window_ItemSlotBase.prototype.initialize.call(this, x, y, kind);
  1672.         this.selectLast();
  1673.     };
  1674.  
  1675.     Window_MapItemSlot.prototype.standardPadding = function() {
  1676.         return Params.MapSlotWindow.Padding[0];
  1677.     };
  1678.  
  1679.     Window_MapItemSlot.prototype.spacing = function() {
  1680.         return Params.MapSlotWindow.Spacing[0];
  1681.     };
  1682.  
  1683.     Window_MapItemSlot.prototype.windowWidth = function() {
  1684.         let val, windowWidth, sizeRate, spacing;
  1685.         windowWidth = Window_ItemSlotBase.prototype.windowWidth.call(this);
  1686.         sizeRate = Params.MapSlotWindow.SizeRate[0];
  1687.         spacing = this.spacing() * (this.maxCols() - 1);
  1688.         val = windowWidth * sizeRate + spacing;
  1689.         // val = Graphics.boxWidth < val ? Graphics.boxWidth : val;
  1690.  
  1691.         return val;
  1692.     };
  1693.  
  1694.     Window_MapItemSlot.prototype.windowHeight = function() {
  1695.         let val;
  1696.         val = Window_ItemSlotBase.prototype.windowHeight.call(this) * Params.MapSlotWindow.SizeRate[0];
  1697.         // val = Graphics.boxHeight < val ? Graphics.boxHeight : val;
  1698.  
  1699.         return val;
  1700.     };
  1701.  
  1702.     Window_MapItemSlot.prototype.update = function() {
  1703.         Window_ItemSlotBase.prototype.update.call(this);
  1704.  
  1705.         let index;
  1706.         index = Graphics.frameCount % Params.SlotNumber[0];
  1707.  
  1708.         // 再描画判定
  1709.         if(this.checkRedraw(index)) {
  1710.             this.redrawItem(index);
  1711.         }
  1712.  
  1713.         this._lastIndex = this.index();
  1714.     };
  1715.  
  1716.     Window_MapItemSlot.prototype.checkRedraw = function(index) {
  1717.         let itemSlot, item, equipFlg, actor;
  1718.         itemSlot = $gameParty.getItemSlot(index);
  1719.         actor = $gameParty.leader();
  1720.  
  1721.         if(itemSlot) {
  1722.             item = this.item(index);
  1723.             if(item) {
  1724.                 if(this._type[index] != itemSlot.type || this._num[index] != $gameParty.numItems(item)) {
  1725.                     return true;
  1726.                 }
  1727.                 // if(itemSlot.type == WEAPON) {
  1728.                 //     if(itemSlot.equip != actor.isEquipped(item)) {
  1729.                 //         console.log("itemSlot equip:"+itemSlot.equip);
  1730.                 //         console.log("actor equip:"+actor.isEquipped(item));
  1731.                 //         return true;
  1732.                 //     }
  1733.                 // }
  1734.             }
  1735.         }
  1736.  
  1737.         return false;
  1738.     };
  1739.  
  1740.     Window_MapItemSlot.prototype.drawItem = function(index) {
  1741.         Window_ItemSlotBase.prototype.drawItem.call(this, index);
  1742.  
  1743.         let item, rect, num, type, id, itemSlot, equipFlg, actor, fontSize;
  1744.         itemSlot = $gameParty.getItemSlot(index);
  1745.         actor = $gameParty.leader();
  1746.  
  1747.         // 装備状態を表示&変更
  1748.         if(itemSlot) {
  1749.             type = itemSlot.type;
  1750.             id = itemSlot.id;
  1751.             item = this.item(index);
  1752.             if (item) {
  1753.                 rect = this.itemRect(index);
  1754.                 if(type == WEAPON) {
  1755.                     equipFlg = actor.isEquipped(item);
  1756.                     if(equipFlg) {
  1757.                         fontSize = this.contents.fontSize;
  1758.                         this.contents.fontSize = 20;
  1759.                         this.contents.drawText("E", rect.x, rect.y, rect.width - 2, 24, 'right');
  1760.                         this.contents.fontSize = fontSize;
  1761.                     }
  1762.                     if(itemSlot.equip != equipFlg) {
  1763.                         $gameParty.setEquipStatus(index, equipFlg);
  1764.                     }
  1765.                 }
  1766.             }
  1767.         }
  1768.     };
  1769.  
  1770.     Window_MapItemSlot.prototype.isCursorVisible = function() {
  1771.         if(Params.SlotCursorVisible[0]) {
  1772.             return Window_Selectable.prototype.isCursorVisible.call(this);
  1773.         } else {
  1774.             return false;
  1775.         }
  1776.     };
  1777.  
  1778.  
  1779.     //=========================================================================
  1780.     // Window_ItemSlotHelp
  1781.     //  ・アイテムスロット画面のヘルプウィンドウを再定義します。
  1782.     //
  1783.     //=========================================================================
  1784.     function Window_ItemSlotHelp() {
  1785.         this.initialize.apply(this, arguments);
  1786.     }
  1787.  
  1788.     Window_ItemSlotHelp.prototype = Object.create(Window_Help.prototype);
  1789.     Window_ItemSlotHelp.prototype.constructor = Window_ItemSlotHelp;
  1790.  
  1791.     Window_ItemSlotHelp.prototype.initialize = function(numLines) {
  1792.         Window_Help.prototype.initialize.call(this, numLines);
  1793.         // this.height += this.fittingHeight(0);
  1794.     };
  1795.  
  1796.     Window_ItemSlotHelp.prototype.setItem = function(item) {
  1797.         this.setText(item ? item.name + "\n" + item.description : '');
  1798.     };
  1799.  
  1800.  
  1801.     //=========================================================================
  1802.     // Window_SlotCommand
  1803.     //  ・アイテムスロット画面のスロットコマンドウィンドウを定義します。
  1804.     //
  1805.     //=========================================================================
  1806.     function Window_SlotCommand() {
  1807.         this.initialize.apply(this, arguments);
  1808.     }
  1809.  
  1810.     Window_SlotCommand.prototype = Object.create(Window_Command.prototype);
  1811.     Window_SlotCommand.prototype.constructor = Window_SlotCommand;
  1812.  
  1813.     Window_SlotCommand.prototype.initialize = function(x, y) {
  1814.         Window_Command.prototype.initialize.call(this, x, y);
  1815.         this.selectLast();
  1816.     };
  1817.  
  1818.     Window_SlotCommand._lastCommandSymbol = null;
  1819.  
  1820.     Window_SlotCommand.initCommandPosition = function() {
  1821.         this._lastCommandSymbol = null;
  1822.     };
  1823.  
  1824.     Window_SlotCommand.prototype.windowWidth = function() {
  1825.         return 240;
  1826.     };
  1827.  
  1828.     Window_SlotCommand.prototype.numVisibleRows = function() {
  1829.         return this.maxItems();
  1830.     };
  1831.  
  1832.     Window_SlotCommand.prototype.makeCommandList = function() {
  1833.         this.addCommand(Params.SlotSetName[0],    "slotset");
  1834.         // this.addCommand(Params.SlotChangeName[0], "slotchange");
  1835.         this.addCommand(Params.SlotRemoveName[0], "slotremove");
  1836.     };
  1837.  
  1838.     Window_SlotCommand.prototype.processOk = function() {
  1839.         Window_SlotCommand._lastCommandSymbol = this.currentSymbol();
  1840.         Window_Command.prototype.processOk.call(this);
  1841.     };
  1842.  
  1843.     Window_SlotCommand.prototype.updateHelp = function() {
  1844.         switch(this.currentSymbol()) {
  1845.             case "slotset":
  1846.                 this._helpWindow.setText(Params.SlotSetDesc[0]);
  1847.                 break;
  1848.             case "slotchange":
  1849.                 this._helpWindow.setText(Params.SlotChangeDesc[0]);
  1850.                 break;
  1851.             case "slotremove":
  1852.                 this._helpWindow.setText(Params.SlotRemoveDesc[0]);
  1853.                 break;
  1854.         }
  1855.     };
  1856.  
  1857.     Window_SlotCommand.prototype.selectLast = function() {
  1858.         this.selectSymbol(Window_SlotCommand._lastCommandSymbol);
  1859.     };
  1860.  
  1861.  
  1862.     //=========================================================================
  1863.     // Window_ItemSlot
  1864.     //  ・アイテムスロット画面のアイテムスロットウィンドウを定義します。
  1865.     //
  1866.     //=========================================================================
  1867.     function Window_ItemSlot() {
  1868.         this.initialize.apply(this, arguments);
  1869.     }
  1870.  
  1871.     Window_ItemSlot.prototype = Object.create(Window_ItemSlotBase.prototype);
  1872.     Window_ItemSlot.prototype.constructor = Window_ItemSlot;
  1873.  
  1874.     Window_ItemSlot.prototype.initialize = function(x, y, w, h, kind) {
  1875.         let x2, y2;
  1876.         x2 = x + w / 2 - this.windowWidth() / 2;
  1877.         y2 = y;
  1878.  
  1879.         Window_ItemSlotBase.prototype.initialize.call(this, x2, y2, kind);
  1880.         this._slotType = null;
  1881.         this._swapTemp = -1;
  1882.         this.resetLastIndex();
  1883.     };
  1884.  
  1885.     Window_ItemSlot.prototype.standardPadding = function() {
  1886.         return Params.MenuSlotWindow.Padding[0];
  1887.     };
  1888.  
  1889.     Window_ItemSlot.prototype.spacing = function() {
  1890.         return Params.MenuSlotWindow.Spacing[0];
  1891.     };
  1892.  
  1893.     Window_ItemSlot.prototype.windowWidth = function() {
  1894.         let val, windowWidth, sizeRate, spacing;
  1895.         windowWidth = Window_ItemSlotBase.prototype.windowWidth.call(this);
  1896.         sizeRate = Params.MenuSlotWindow.SizeRate[0];
  1897.         spacing = this.spacing() * (this.maxCols() - 1);
  1898.         val = windowWidth * sizeRate + spacing;
  1899.         // val = Graphics.boxWidth < val ? Graphics.boxWidth : val;
  1900.  
  1901.         return val;
  1902.     };
  1903.  
  1904.     Window_ItemSlot.prototype.windowHeight = function() {
  1905.         let val;
  1906.         val = Window_ItemSlotBase.prototype.windowHeight.call(this) * Params.MenuSlotWindow.SizeRate[0];
  1907.         // val = Graphics.boxHeight < val ? Graphics.boxHeight : val;
  1908.  
  1909.         return val;
  1910.     };
  1911.  
  1912.     Window_ItemSlot.prototype.update = function() {
  1913.         Window_ItemSlotBase.prototype.update.call(this);
  1914.  
  1915.         let index;
  1916.         index = Graphics.frameCount % Params.SlotNumber[0];
  1917.  
  1918.         // 再描画判定
  1919.         if(this.checkRedraw(index)) {
  1920.             this.redrawItem(index);
  1921.         }
  1922.  
  1923.         // this._lastIndex = this.index();
  1924.     };
  1925.  
  1926.     Window_ItemSlot.prototype.checkRedraw = function(index) {
  1927.         let itemSlot, item, equipFlg, actor;
  1928.         itemSlot = $gameParty.getItemSlot(index);
  1929.         actor = $gameParty.leader();
  1930.  
  1931.         if(itemSlot) {
  1932.             item = this.item(index);
  1933.             if(item) {
  1934.                 if(this._type[index] != itemSlot.type || this._num[index] != $gameParty.numItems(item)) {
  1935.                     return true;
  1936.                 }
  1937.                 // if(itemSlot.type == WEAPON) {
  1938.                 //     if(itemSlot.equip != actor.isEquipped(item)) {
  1939.                 //         console.log("itemSlot equip:"+itemSlot.equip);
  1940.                 //         console.log("actor equip:"+actor.isEquipped(item));
  1941.                 //         return true;
  1942.                 //     }
  1943.                 // }
  1944.             }
  1945.         }
  1946.  
  1947.         return false;
  1948.     };
  1949.  
  1950.     Window_ItemSlot.prototype.drawItem = function(index) {
  1951.         Window_ItemSlotBase.prototype.drawItem.call(this, index);
  1952.  
  1953.         let item, rect, num, type, id, itemSlot, equipFlg, actor, fontSize;
  1954.         itemSlot = $gameParty.getItemSlot(index);
  1955.         actor = $gameParty.leader();
  1956.  
  1957.         // 装備状態を表示
  1958.         if(itemSlot) {
  1959.             type = itemSlot.type;
  1960.             id = itemSlot.id;
  1961.             item = this.item(index);
  1962.             if (item) {
  1963.                 rect = this.itemRect(index);
  1964.                 if(type == WEAPON) {
  1965.                     equipFlg = actor.isEquipped(item);
  1966.                     if(equipFlg) {
  1967.                         fontSize = this.contents.fontSize;
  1968.                         this.contents.fontSize = 20;
  1969.                         this.contents.drawText("E", rect.x, rect.y, rect.width - 2, 24, 'right');
  1970.                         this.contents.fontSize = fontSize;
  1971.                     }
  1972.                 }
  1973.             }
  1974.         }
  1975.     };
  1976.  
  1977.     Window_ItemSlot.prototype.isCurrentItemEnabled = function() {
  1978.         let ret, item, actor;
  1979.         item = this.item();
  1980.         actor = $gameParty.leader();
  1981.         ret = true;
  1982.  
  1983.         if(item) {
  1984.             // if(DataManager.getItemType(item) == WEAPON) {
  1985.             //     ret = !actor.isEquipped(item);
  1986.             // }
  1987.         } else {
  1988.             if(!this._slotType || this._slotType == "slotremove") {
  1989.                 ret = false;
  1990.             }
  1991.         }
  1992.  
  1993.         return ret;
  1994.     };
  1995.  
  1996.     Window_ItemSlot.prototype.updateHelp = function() {
  1997.         this.setHelpWindowItem(this.item());
  1998.     };
  1999.  
  2000.     Window_ItemSlot.prototype.processOk = function() {
  2001.         if (this.isCurrentItemEnabled() && !this.hasLastIndex()) {
  2002.             this._lastIndex = this.index();
  2003.         }
  2004.  
  2005.         Window_ItemSlotBase.prototype.processOk.call(this);
  2006.     };
  2007.  
  2008.     Window_ItemSlot.prototype.setSlotType = function(type) {
  2009.         this._slotType = type;
  2010.     };
  2011.  
  2012.     Window_ItemSlot.prototype.hasLastIndex = function() {
  2013.         return this._lastIndex != -1;
  2014.     };
  2015.  
  2016.     Window_ItemSlot.prototype.resetLastIndex = function() {
  2017.         this._lastIndex = -1;
  2018.     };
  2019.  
  2020.  
  2021.     //=========================================================================
  2022.     // Window_ItemSlotCategory
  2023.     //  ・アイテムスロット画面のカテゴリウィンドウを定義します。
  2024.     //
  2025.     //=========================================================================
  2026.     function Window_ItemSlotCategory() {
  2027.         this.initialize.apply(this, arguments);
  2028.     }
  2029.  
  2030.     Window_ItemSlotCategory.prototype = Object.create(Window_ItemCategory.prototype);
  2031.     Window_ItemSlotCategory.prototype.constructor = Window_ItemSlotCategory;
  2032.  
  2033.     Window_ItemSlotCategory.prototype.initialize = function(width) {
  2034.         this._windowWidth = width;
  2035.         Window_ItemCategory.prototype.initialize.call(this);
  2036.         this.deselect();
  2037.         this.deactivate();
  2038.     };
  2039.  
  2040.     Window_ItemSlotCategory.prototype.windowWidth = function() {
  2041.         return this._windowWidth;
  2042.     };
  2043.  
  2044.     Window_ItemSlotCategory.prototype.maxCols = function() {
  2045.         return 2;
  2046.     };
  2047.  
  2048.     Window_ItemSlotCategory.prototype.makeCommandList = function() {
  2049.         this.addCommand(TextManager.item,    'item');
  2050.         this.addCommand(TextManager.weapon,  'weapon');
  2051.     };
  2052.  
  2053.  
  2054.     //=========================================================================
  2055.     // Window_ItemSlotList
  2056.     //  ・アイテムスロット画面のアイテムリストウィンドウを定義します。
  2057.     //
  2058.     //=========================================================================
  2059.     function Window_ItemSlotList() {
  2060.         this.initialize.apply(this, arguments);
  2061.     }
  2062.  
  2063.     Window_ItemSlotList.prototype = Object.create(Window_ItemList.prototype);
  2064.     Window_ItemSlotList.prototype.constructor = Window_ItemSlotList;
  2065.  
  2066.     Window_ItemSlotList.prototype.initialize = function(x, y, width, height) {
  2067.         Window_ItemList.prototype.initialize.call(this, x, y, width, height);
  2068.     };
  2069.  
  2070.     Window_ItemSlotList.prototype.includes = function(item) {
  2071.         let ret, meta;
  2072.         ret = true;
  2073.  
  2074.         meta = "";
  2075.         if(item && item.meta) {
  2076.             meta = GetMeta(item.meta, "itemslot");
  2077.         }
  2078.  
  2079.         switch (this._category) {
  2080.             case 'item':
  2081.                 ret = DataManager.isItem(item) && item.itypeId === 1 && meta.toLowerCase() != "noadd";
  2082.                 break;
  2083.             case 'weapon':
  2084.                 ret = DataManager.isWeapon(item) && meta.toLowerCase() != "noadd";
  2085.                 break;
  2086.             default:
  2087.                 ret = false;
  2088.                 break;
  2089.         }
  2090.  
  2091.         return ret;
  2092.     };
  2093.  
  2094.     Window_ItemSlotList.prototype.isEnabled = function(item) {
  2095.         let ret, type, actor;
  2096.         actor = $gameParty.leader();
  2097.         ret = false;
  2098.  
  2099.         if(item && $gameParty.hasItemType(item)) {
  2100.             type = DataManager.getItemType(item);
  2101.             // ret = $gameParty.getItemSlotNumber(type, item.id) == -1 ? true : false;
  2102.             ret = $gameParty.getItemSlotNumber(type, item.id) == -1;
  2103.  
  2104.             if(type == WEAPON && !actor.isEquipWtypeOk(item.wtypeId)) {
  2105.                 ret = false;
  2106.             }
  2107.         }
  2108.  
  2109.         return ret;
  2110.         // return $gameParty.canUse(item);
  2111.     };
  2112.  
  2113.     Window_ItemSlotList.prototype.isCurrentItemEnabled = function() {
  2114.         return this.isEnabled(this.item());
  2115.         // let ret, item, type;
  2116.         // item = this.item();
  2117.         // ret = false;
  2118.  
  2119.         // if(item && $gameParty.hasItemType(item)) {
  2120.         //     type = DataManager.getItemType(item);
  2121.         //     ret = $gameParty.getItemSlotNumber(type, item.id) == -1 ? true : false;
  2122.         // }
  2123.  
  2124.         // return ret;
  2125.     };
  2126.  
  2127.  
  2128.     //=========================================================================
  2129.     // Window_MenuCommand
  2130.     //  ・メニュー画面にアイテムスロットコマンドを定義します。
  2131.     //
  2132.     //=========================================================================
  2133.     let _Window_MenuCommand_addOriginalCommands = Window_MenuCommand.prototype.addOriginalCommands;
  2134.     Window_MenuCommand.prototype.addOriginalCommands = function() {
  2135.         _Window_MenuCommand_addOriginalCommands.call(this);
  2136.  
  2137.         let status;
  2138.         status = $gameParty.getMenuSlotStatus();
  2139.  
  2140.         if(status == 1) {
  2141.             this.addCommand(Params.MenuSlotName[0], 'itemslot', true);
  2142.         } else if(status == 2) {
  2143.             this.addCommand(Params.MenuSlotName[0], 'itemslot', false);
  2144.         }
  2145.     };
  2146.  
  2147.  
  2148.     //=========================================================================
  2149.     // Window_Base
  2150.     //  ・制御文字を再定義します。
  2151.     //
  2152.     //=========================================================================
  2153.     let _Window_Base_processEscapeCharacter = Window_Base.prototype.processEscapeCharacter;
  2154.     Window_Base.prototype.processEscapeCharacter = function(code, textState) {
  2155.         _Window_Base_processEscapeCharacter.call(this, code, textState);
  2156.         switch (code.toLowerCase()) {
  2157.             case 'n':
  2158.                 this.processNewLine(textState);
  2159.                 textState.index--;
  2160.                 break;
  2161.         }
  2162.     };
  2163.  
  2164.  
  2165.     //=========================================================================
  2166.     // Scene_Map
  2167.     //  ・マップ画面にアイテムスロットを定義します。
  2168.     //
  2169.     //=========================================================================
  2170.     let _Scene_Map_createDisplayObjects = Scene_Map.prototype.createDisplayObjects;
  2171.     Scene_Map.prototype.createDisplayObjects = function() {
  2172.         _Scene_Map_createDisplayObjects.call(this);
  2173.         this.createMapItemSlotWindow();
  2174.     };
  2175.  
  2176.     Scene_Map.prototype.createMapItemSlotWindow = function() {
  2177.         let kind;
  2178.         kind = 1; // マップ用は1
  2179.  
  2180.         this._mapItemSlotWindow = new Window_MapItemSlot(Params.SlotX[0], Params.SlotY[0], kind);
  2181.         this._mapItemSlotWindow.setHandler("ok", this.onItemSlotOk.bind(this));
  2182.         this._mapItemSlotWindow.opacity = Params.MapSlotOpacity[0];
  2183.         if(Params.SlotBackground[0] != "") {
  2184.             this._mapItemSlotWindow._windowSpriteContainer.removeChild(this._mapItemSlotWindow._windowBackSprite);
  2185.             this._mapItemSlotWindow._windowSpriteContainer.removeChild(this._mapItemSlotWindow._windowFrameSprite);
  2186.             this._mapItemSlotWindow._windowBackSprite = new Sprite();
  2187.             this._mapItemSlotWindow._windowBackSprite.bitmap = ImageManager.loadPicture(Params.SlotBackground[0]);
  2188.             this._mapItemSlotWindow._windowSpriteContainer.addChild(this._mapItemSlotWindow._windowBackSprite);
  2189.         }
  2190.         this.addChild(this._mapItemSlotWindow);
  2191.         if(this._mapItemSlotWindow.lastIndex() <= -1 && !Params.SlotVisible[0]) {
  2192.             $gameParty.setItemSlotVisible(false);
  2193.         }
  2194.         this._mapItemSlotWindow.selectLast();
  2195.     };
  2196.  
  2197.     let _Scene_Map_update = Scene_Map.prototype.update;
  2198.     Scene_Map.prototype.update = function() {
  2199.         _Scene_Map_update.call(this);
  2200.  
  2201.         // 表示判定
  2202.         if($gameParty.isItemSlotHide() || ( Params.HideMess[0] &&
  2203.                 (this._messageWindow.isOpening() || this._messageWindow.openness ||
  2204.                 this._scrollTextWindow.visible))) {
  2205.             this._mapItemSlotWindow.hide();
  2206.         } else {
  2207.             this._mapItemSlotWindow.show();
  2208.         }
  2209.  
  2210.         if(!$gameParty.isItemSlotHide() && !this._mapItemSlotWindow.isHide()) {
  2211.             this.updateItemSlot();
  2212.         }
  2213.     };
  2214.  
  2215.     Scene_Map.prototype.updateItemSlot = function() {
  2216.         let pressKey, index, itemSlot, actor, lastIndex, item, action, win, paramKey,
  2217.             mouseMode, keyboardMode;
  2218.         actor = $gameParty.leader();
  2219.         win = this._mapItemSlotWindow;
  2220.         index = win.index();
  2221.         lastIndex = win.lastIndex();
  2222.         paramKey = getUseKey();
  2223.         mouseMode = Params.MouseMode;
  2224.         keyboardMode = Params.KeyboardMode;
  2225.  
  2226.         if(index < 0) {
  2227.             win.selectLast();
  2228.         }
  2229.  
  2230.         // アイテムスロット選択
  2231.         updateSlotSelect(win, index, true);
  2232.         index = win.index();
  2233.  
  2234.         // アイテム使用
  2235.         if(mouseMode.UseEnable[0] && TouchInput.isTriggered() ||
  2236.                 keyboardMode.UseEnable[0] && paramKey && Input.isTriggered(paramKey)) {
  2237.             win.callHandler("ok");
  2238.         }
  2239.  
  2240.         // 装備アイテム
  2241.         itemSlot = $gameParty.getItemSlot(lastIndex);
  2242.         if(itemSlot && itemSlot.type == WEAPON) {
  2243.             // lastIndex の装備を先に外すこと
  2244.             if(lastIndex != index) {
  2245.                 item = win.item(lastIndex);
  2246.                 if(itemSlot && itemSlot.type == WEAPON && actor.isEquipped(item)) {
  2247.                     actor.changeEquip(0, null);
  2248.                     win.redrawItem(lastIndex);
  2249.                 }
  2250.             }
  2251.         }
  2252.         itemSlot = $gameParty.getItemSlot(index);
  2253.         if(itemSlot && itemSlot.type == WEAPON) {
  2254.             item = win.item();
  2255.             if(itemSlot && itemSlot.type == WEAPON && !actor.isEquipped(item)) {
  2256.                 actor.changeEquipById(1, itemSlot.id);
  2257.                 $gameParty.setSlotEquipItem(item);
  2258.                 win.redrawCurrentItem();
  2259.             }
  2260.         }
  2261.         if((itemSlot == null || itemSlot.type == ITEM) && actor.weapons().length > 0) {
  2262.             // 武器以外のスロット選択時に装備を確実に外す
  2263.             actor.changeEquip(0, null);
  2264.         }
  2265.  
  2266.         // アイテムスロットのアイテム削除判定
  2267.         if(Params.ItemRemoveMode[0]) {
  2268.             itemSlot = $gameParty.getItemSlot(index);
  2269.             item = win.item();
  2270.             if(itemSlot) {
  2271.                 if((itemSlot.type == ITEM && $gameParty.numItems(item) <= 0) || (itemSlot.type == WEAPON && !actor.isEquipped(item))) {
  2272.                     $gameParty.removeItemSlot(index);
  2273.                     win.redrawCurrentItem();
  2274.                 }
  2275.             }
  2276.         }
  2277.  
  2278.         $gameParty.setItemSlotLastIndex(index);
  2279.     };
  2280.  
  2281.     Scene_Map.prototype.onItemSlotOk = function() {
  2282.         let item;
  2283.         item = this._mapItemSlotWindow.item();
  2284.  
  2285.         if($gameParty.useItemSlot(item)){
  2286.             this._mapItemSlotWindow.redrawCurrentItem();
  2287.         }
  2288.     };
  2289.  
  2290.     let _Scene_Map_isMapTouchOk = Scene_Map.prototype.isMapTouchOk;
  2291.     Scene_Map.prototype.isMapTouchOk = function() {
  2292.         let mouseMode = Params.MouseMode;
  2293.         if(mouseMode.UseEnable[0]) {
  2294.             return false;
  2295.         } else {
  2296.             return _Scene_Map_isMapTouchOk.call(this);
  2297.         }
  2298.     };
  2299.  
  2300.     let _Scene_Map_terminate = Scene_Map.prototype.terminate;
  2301.     Scene_Map.prototype.terminate = function() {
  2302.         if (!SceneManager.isNextScene(Scene_Battle)) {
  2303.             this._mapItemSlotWindow.hide();
  2304.             // $gameParty.setItemSlotVisible(false);
  2305.         }
  2306.         _Scene_Map_terminate.call(this);
  2307.     };
  2308.  
  2309.  
  2310.     //=========================================================================
  2311.     // Scene_ItemSlot
  2312.     //  ・メニューから遷移するアイテムスロット画面を定義します。
  2313.     //
  2314.     //=========================================================================
  2315.     function Scene_ItemSlot() {
  2316.         this.initialize.apply(this, arguments);
  2317.     }
  2318.  
  2319.     Scene_ItemSlot.prototype = Object.create(Scene_ItemBase.prototype);
  2320.     Scene_ItemSlot.prototype.constructor = Scene_ItemSlot;
  2321.  
  2322.     Scene_ItemSlot.prototype.initialize = function() {
  2323.         Scene_ItemBase.prototype.initialize.call(this);
  2324.     };
  2325.  
  2326.     Scene_ItemSlot.prototype.create = function() {
  2327.         Scene_ItemBase.prototype.create.call(this);
  2328.         this.createHelpWindow();
  2329.         this.createCommandWindow();
  2330.         this.createItemSlotWindow();
  2331.         this.createCategoryWindow();
  2332.         this.createItemWindow();
  2333.     };
  2334.  
  2335.     Scene_ItemSlot.prototype.createBackground = function(){
  2336.         if(Params.MenuBackground[0]){
  2337.             this._backgroundSprite = new Sprite();
  2338.             this._backgroundSprite.bitmap = ImageManager.loadPicture(Params.MenuBackground[0]);
  2339.             this.addChild(this._backgroundSprite);
  2340.             return;
  2341.         }
  2342.     };
  2343.  
  2344.     Scene_ItemSlot.prototype.createHelpWindow = function() {
  2345.         this._helpWindow = new Window_ItemSlotHelp();
  2346.         this._helpWindow.opacity = Params.MenuSlotOpacity[0];
  2347.         this.addWindow(this._helpWindow);
  2348.     };
  2349.  
  2350.     Scene_ItemSlot.prototype.createCommandWindow = function() {
  2351.         this._commandWindow = new Window_SlotCommand(0, this._helpWindow.height);
  2352.         this._commandWindow.setHandler("slotset",    this.commandItemSlot.bind(this));
  2353.         // this._commandWindow.setHandler("slotchange", this.commandItemSlot.bind(this));
  2354.         this._commandWindow.setHandler("slotremove", this.commandItemSlot.bind(this));
  2355.         this._commandWindow.setHandler("cancel",     this.popScene.bind(this));
  2356.         this._commandWindow.opacity = Params.MenuSlotOpacity[0];
  2357.         this._commandWindow.setHelpWindow(this._helpWindow);
  2358.         this.addWindow(this._commandWindow);
  2359.     };
  2360.  
  2361.     Scene_ItemSlot.prototype.createItemSlotWindow = function() {
  2362.         let x, y, w, h, kind;
  2363.         x = this._commandWindow.width;
  2364.         y = this._commandWindow.y;
  2365.         w = Graphics.boxWidth - x;
  2366.         h = this._commandWindow.height;
  2367.         kind = 0; // スロットシーン用は0
  2368.  
  2369.         this._itemSlotWindow = new Window_ItemSlot(x, y, w, y, kind);
  2370.         this._itemSlotWindow.setHelpWindow(this._helpWindow);
  2371.         this._itemSlotWindow.setHandler('ok',     this.onItemSlotOk.bind(this));
  2372.         this._itemSlotWindow.setHandler('cancel', this.onItemSlotCancel.bind(this));
  2373.         this._itemSlotWindow.opacity = Params.MenuSlotOpacity[0];
  2374.         this.addWindow(this._itemSlotWindow);
  2375.     };
  2376.  
  2377.     Scene_ItemSlot.prototype.createCategoryWindow = function() {
  2378.         let width;
  2379.         width = Graphics.boxWidth - this._commandWindow.width;
  2380.  
  2381.         this._categoryWindow = new Window_ItemSlotCategory(width);
  2382.         this._categoryWindow.x = this._commandWindow.width;
  2383.         // this._categoryWindow.y = this._commandWindow.y + this._commandWindow.height - this._categoryWindow.height;
  2384.         this._categoryWindow.y = this._itemSlotWindow.y + this._itemSlotWindow.height;
  2385.         this._categoryWindow.hide();
  2386.         this._categoryWindow.setHandler('ok',     this.onCategoryOk.bind(this));
  2387.         this._categoryWindow.setHandler('cancel', this.onCategoryCancel.bind(this));
  2388.         this._categoryWindow.opacity = Params.MenuSlotOpacity[0];
  2389.         this.addWindow(this._categoryWindow);
  2390.     };
  2391.  
  2392.     Scene_ItemSlot.prototype.createItemWindow = function() {
  2393.         let wy, wh;
  2394.         wy = this._categoryWindow.y + this._categoryWindow.height;
  2395.         wh = Graphics.boxHeight - wy;
  2396.  
  2397.         this._itemWindow = new Window_ItemSlotList(0, wy, Graphics.boxWidth, wh);
  2398.         this._itemWindow.hide();
  2399.         this._itemWindow.setHelpWindow(this._helpWindow);
  2400.         this._itemWindow.setHandler('ok',     this.onItemOk.bind(this));
  2401.         this._itemWindow.setHandler('cancel', this.onItemCancel.bind(this));
  2402.         this._itemWindow.opacity = Params.MenuSlotOpacity[0];
  2403.         this.addWindow(this._itemWindow);
  2404.         this._categoryWindow.setItemWindow(this._itemWindow);
  2405.     };
  2406.  
  2407.     Scene_ItemSlot.prototype.commandItemSlot = function() {
  2408.         let symbol;
  2409.         symbol = this._commandWindow.currentSymbol();
  2410.  
  2411.         this._itemSlotWindow.setSlotType(symbol);
  2412.         this._itemSlotWindow.activate();
  2413.         this._itemSlotWindow.selectLast();
  2414.     };
  2415.  
  2416.     Scene_ItemSlot.prototype.onItemSlotOk = function() {
  2417.         let index, lastIndex;
  2418.         lastIndex = this._itemSlotWindow.lastIndex();
  2419.         index = this._itemSlotWindow.index();
  2420.  
  2421.         switch (this._commandWindow.currentSymbol()) {
  2422.             case "slotset":
  2423.                 if(Params.SlotSetW[0]) {
  2424.                     this._categoryWindow.show();
  2425.                     this._categoryWindow.activate();
  2426.                     this._categoryWindow.select(0);
  2427.                     this._itemWindow.deselect();
  2428.                 } else {
  2429.                     this._categoryWindow.select(0);
  2430.                     this._itemWindow.activate();
  2431.                     this._itemWindow.selectLast();
  2432.                 }
  2433.                 this._itemWindow.show();
  2434.                 this._itemWindow.refresh();
  2435.                 this._itemSlotWindow.deactivate();
  2436.                 break;
  2437.             case "slotchange":
  2438.                 if(this._itemSlotWindow.hasLastIndex() && index != lastIndex) {
  2439.                     $gameParty.swapItemSlot(lastIndex, index);
  2440.                     this._itemSlotWindow.resetLastIndex();
  2441.                     this._itemSlotWindow.refresh();
  2442.                 }
  2443.                 this._itemSlotWindow.activate();
  2444.                 break;
  2445.             case "slotremove":
  2446.                 $gameParty.removeItemSlot(this._itemSlotWindow.index());
  2447.                 this._itemSlotWindow.refresh();
  2448.                 this._itemSlotWindow.activate();
  2449.                 break;
  2450.         }
  2451.     };
  2452.  
  2453.     Scene_ItemSlot.prototype.onItemSlotCancel = function() {
  2454.         this._itemSlotWindow.resetLastIndex();
  2455.         this._itemSlotWindow.deselect();
  2456.         this._commandWindow.activate();
  2457.         this._commandWindow.callUpdateHelp();
  2458.         this._itemSlotWindow.setSlotType(null);
  2459.     };
  2460.  
  2461.     Scene_ItemSlot.prototype.onCategoryOk = function() {
  2462.         this._itemWindow.activate();
  2463.         this._itemWindow.selectLast();
  2464.     };
  2465.  
  2466.     Scene_ItemSlot.prototype.onCategoryCancel = function() {
  2467.         this._categoryWindow.deselect();
  2468.         this._categoryWindow.hide();
  2469.         this._itemWindow.hide();
  2470.         this._itemSlotWindow.activate();
  2471.         // this._itemSlotWindow.selectLast();
  2472.     };
  2473.  
  2474.     Scene_ItemSlot.prototype.onItemOk = function() {
  2475.         let item;
  2476.         item = this.item();
  2477.  
  2478.         // setslot専用
  2479.         // $gameParty.setLastItem(this.item());
  2480.         $gameParty.setSlotEquipItem(this._itemSlotWindow.item());
  2481.         $gameParty.setItemSlot(this._itemSlotWindow.index(), this.item());
  2482.         $gameParty.setSlotEquipItem(this.item());
  2483.         this._itemSlotWindow.refresh();
  2484.         this._itemWindow.activate();
  2485.         this._itemWindow.refresh();
  2486.         // this.determineItem();
  2487.     };
  2488.  
  2489.     Scene_ItemSlot.prototype.onItemCancel = function() {
  2490.         this._itemWindow.deselect();
  2491.         this._itemWindow.deactivate();
  2492.         if(Params.SlotSetW[0]) {
  2493.             this._categoryWindow.activate();
  2494.         } else {
  2495.             this._itemSlotWindow.activate();
  2496.         }
  2497.         this._helpWindow.setItem(this._itemSlotWindow.item());
  2498.     };
  2499.  
  2500.     Scene_ItemSlot.prototype.update = function() {
  2501.         Scene_ItemBase.prototype.update.call(this);
  2502.         this.updateItemSlot();
  2503.     };
  2504.  
  2505.     Scene_ItemSlot.prototype.updateItemSlot = function() {
  2506.         let pressKey, index, win, itemSlot, item, actor, lastIndex;
  2507.         win = this._itemSlotWindow;
  2508.         index = win.index();
  2509.         lastIndex = win.lastIndex();
  2510.         actor = $gameParty.leader();
  2511.  
  2512.         // アイテムスロット選択
  2513.         updateSlotSelect(win, index, false);
  2514.         index = win.index();
  2515.  
  2516.         // 装備アイテム
  2517.         itemSlot = $gameParty.getItemSlot($gameParty.getItemSlotLastIndex());
  2518.         if(itemSlot) {
  2519.             if(itemSlot.type == WEAPON) {
  2520.                 if(!actor.isEquipped(win.item($gameParty.getItemSlotLastIndex()))) {
  2521.                     actor.changeEquipById(1, itemSlot.id);
  2522.                     win.redrawItem($gameParty.getItemSlotLastIndex());
  2523.                 }
  2524.             } else if(actor.weapons().length > 0) {
  2525.                 actor.changeEquipById(1, 0);
  2526.                 win.redrawItem($gameParty.getItemSlotLastIndex());
  2527.             }
  2528.         }
  2529.     };
  2530.  
  2531.  
  2532.     //=========================================================================
  2533.     // Scene_Menu
  2534.     //  ・メニュー画面にアイテムスロットコマンドを定義します。
  2535.     //
  2536.     //=========================================================================
  2537.     let _Scene_Menu_createCommandWindow = Scene_Menu.prototype.createCommandWindow;
  2538.     Scene_Menu.prototype.createCommandWindow = function() {
  2539.         _Scene_Menu_createCommandWindow.call(this);
  2540.         this._commandWindow.setHandler('itemslot', this.commandItemSlot.bind(this));
  2541.     };
  2542.  
  2543.     Scene_Menu.prototype.commandItemSlot = function() {
  2544.         SceneManager.push(Scene_ItemSlot);
  2545.     };
  2546.  
  2547.  
  2548.     //=========================================================================
  2549.     // DataManager
  2550.     //  ・プラグイン導入前のセーブデータをロードしたとき用の処理を定義します。
  2551.     //  ・アイテム用関数を定義します。
  2552.     //
  2553.     //=========================================================================
  2554.     let _DataManager_extractSaveContents = DataManager.extractSaveContents;
  2555.     DataManager.extractSaveContents = function(contents) {
  2556.         _DataManager_extractSaveContents.call(this, contents);
  2557.         // 処理を追記
  2558.  
  2559.         if($gameParty.getItemSlot(-1) == undefined || $gameParty.getItemSlot(-1) == null) {
  2560.             $gameParty.initItemSlot();
  2561.         } else if($gameParty.getItemSlot(-1).length != Params.SlotNumber[0]) {
  2562.             $gameParty.updateItemSlot();
  2563.         }
  2564.     };
  2565.  
  2566.     DataManager.getItemType = function(item) {
  2567.         if(this.isItem(item)) {
  2568.             return ITEM;
  2569.         } else if(this.isWeapon(item)) {
  2570.             return WEAPON;
  2571.         } else if(this.isArmor(item)) {
  2572.             return ARMOR;
  2573.         }
  2574.  
  2575.         return null;
  2576.     };
  2577.  
  2578.     DataManager.getItemByIdType = function(id, type) {
  2579.         if(!type) {
  2580.             return null;
  2581.         }
  2582.         if(!id || !isFinite(id)) {
  2583.             return null;
  2584.         }
  2585.  
  2586.         id = parseInt(id, 10);
  2587.         type = type.toLowerCase();
  2588.  
  2589.         if(id < 1) {
  2590.             return null;
  2591.         }
  2592.  
  2593.         if(type == ITEM && $dataItems.length > id) {
  2594.             return $dataItems[id];
  2595.         } else if(type == WEAPON && $dataWeapons.length > id) {
  2596.             return $dataWeapons[id];
  2597.         } else if(type == ARMOR && $dataArmors.length > id) {
  2598.             return $dataArmors[id];
  2599.         }
  2600.  
  2601.         return null;
  2602.     };
  2603.  
  2604.  
  2605.     //=========================================================================
  2606.     // Utility
  2607.     //  ・汎用的な処理を定義します。
  2608.     //
  2609.     //=========================================================================
  2610.     // キーイベントのkeyCodeからキー名を取得
  2611.     function codeToName(event) {
  2612.         let name, key;
  2613.         name = null;
  2614.  
  2615.         if(event.key != undefined && event.key != null) {
  2616.             name = event.key;
  2617.             // console.log("key name:"+name);
  2618.         } else if(event.keyIdentifier != undefined && event.keyIdentifier != null) {
  2619.             key = event.keyIdentifier;
  2620.             if(/^U\+/.test(key)) {
  2621.                 key = parseInt(key.substr(2), 16);
  2622.                 // console.log("key:"+key);
  2623.             }
  2624.             if(isFinite(key)) {
  2625.                 if (key >= 112 && key <= 123) {
  2626.                     name = 'f' + (key - 111);// ファンクションキー
  2627.                 } else if (key >= 96 && key <= 105) {
  2628.                     name = 'num' + (key - 96); // 0 ~ 9 (テンキー)
  2629.                 } else if (key >= 65 && key <= 90) {
  2630.                     name = String.fromCharCode(key); // A ~ Z キー
  2631.                 } else if (key >= 48 && key <= 57) {
  2632.                     name = (key - 48).toString(); // 0 ~ 9 キー
  2633.                 } else {
  2634.                     switch(key) {
  2635.                         case 32:
  2636.                             name = "space";
  2637.                             break;
  2638.                     }
  2639.                 }
  2640.             } else {
  2641.                 name = key;
  2642.             }
  2643.             // console.log(event);
  2644.             // console.log("keyIdentifier name:"+name);
  2645.         }
  2646.  
  2647.         if(name) {
  2648.             name = name.toLowerCase();
  2649.         }
  2650.  
  2651.         return name;
  2652.     }
  2653.  
  2654.     // スロット番号の指定をindexに変換する
  2655.     function slotToIndex(slot) {
  2656.         let ret;
  2657.         ret = -1;
  2658.  
  2659.         if(slot == "left") {
  2660.             ret = $gameParty.getItemSlotLastIndex() - 1;
  2661.             ret = ret < 0 ? Params.SlotNumber[0] - 1 : ret;
  2662.         } else if(slot == "right") {
  2663.             ret = $gameParty.getItemSlotLastIndex() + 1;
  2664.             ret = ret >= Params.SlotNumber[0] ? 0 : ret;
  2665.         } else if(slot != null && isFinite(slot)) {
  2666.             ret = parseInt(slot, 10);
  2667.             if(ret > Params.SlotNumber[0] || ret < 1) {
  2668.                 ret = -1;
  2669.             } else {
  2670.                 ret--;
  2671.             }
  2672.         }
  2673.  
  2674.         return ret;
  2675.     }
  2676.  
  2677.     // スロット使用キーを取得する
  2678.     function getUseKey() {
  2679.         let keys;
  2680.         keys = Params.KeyConfig;
  2681.  
  2682.         // console.log(keys);
  2683.         // return keys.ItemUseKey[0].toLowerCase();
  2684.         return keys.ItemUseKey[0];
  2685.     }
  2686.  
  2687.     // スロットウィンドウselect
  2688.     function updateSlotSelect(win, index, useFlg) {
  2689.         let i, key, item, pushFlg, keys, mouseMode, keyboardMode;
  2690.         pushFlg = false;
  2691.         keys = Params.KeyConfig;
  2692.         mouseMode = Params.MouseMode;
  2693.         keyboardMode = Params.KeyboardMode;
  2694.  
  2695.         // アイテムスロット選択
  2696.  
  2697.         // 強制選択
  2698.         if($gameParty.getItemSlotForceIndex() >= 0) {
  2699.             win.select($gameParty.getItemSlotForceIndex());
  2700.             $gameParty.setItemSlotForceIndex(-1);
  2701.             pushFlg = true;
  2702.         }
  2703.  
  2704.         // キーボード
  2705.         if(keyboardMode.SelectEnable[0]) {
  2706.             if(Input.isTriggered(keys.Slot1Key[0]) && slotToIndex(1) != -1) {
  2707.                 win.select(slotToIndex(1));
  2708.                 pushFlg = true;
  2709.             }
  2710.             if(Input.isTriggered(keys.Slot2Key[0]) && slotToIndex(2) != -1) {
  2711.                 win.select(slotToIndex(2));
  2712.                 pushFlg = true;
  2713.             }
  2714.             if(Input.isTriggered(keys.Slot3Key[0]) && slotToIndex(3) != -1) {
  2715.                 win.select(slotToIndex(3));
  2716.                 pushFlg = true;
  2717.             }
  2718.             if(Input.isTriggered(keys.Slot4Key[0]) && slotToIndex(4) != -1) {
  2719.                 win.select(slotToIndex(4));
  2720.                 pushFlg = true;
  2721.             }
  2722.             if(Input.isTriggered(keys.Slot5Key[0]) && slotToIndex(5) != -1) {
  2723.                 win.select(slotToIndex(5));
  2724.                 pushFlg = true;
  2725.             }
  2726.             if(Input.isTriggered(keys.Slot6Key[0]) && slotToIndex(6) != -1) {
  2727.                 win.select(slotToIndex(6));
  2728.                 pushFlg = true;
  2729.             }
  2730.             if(Input.isTriggered(keys.Slot7Key[0]) && slotToIndex(7) != -1) {
  2731.                 win.select(slotToIndex(7));
  2732.                 pushFlg = true;
  2733.             }
  2734.             if(Input.isTriggered(keys.Slot8Key[0]) && slotToIndex(8) != -1) {
  2735.                 win.select(slotToIndex(8));
  2736.                 pushFlg = true;
  2737.             }
  2738.             if(Input.isTriggered(keys.Slot9Key[0]) && slotToIndex(9) != -1) {
  2739.                 win.select(slotToIndex(9));
  2740.                 pushFlg = true;
  2741.             }
  2742.             if(Input.isTriggered(keys.Slot10Key[0]) && slotToIndex(10) != -1) {
  2743.                 win.select(slotToIndex(10));
  2744.                 pushFlg = true;
  2745.             }
  2746.         }
  2747.  
  2748.         // アイテム自動使用
  2749.         if(useFlg && pushFlg && Params.ItemUseMode[0]) {
  2750.             pushFlg = false;
  2751.             item = win.item();
  2752.             $gameParty.useItemSlot(item);
  2753.         }
  2754.  
  2755.         // マウスホイール
  2756.         if(mouseMode.SelectEnable[0]) {
  2757.             if(TouchInput.wheelY > 0) {
  2758.                 if(index <= 0) {
  2759.                     win.select(Params.SlotNumber[0] - 1);
  2760.                 } else {
  2761.                     win.select(index - 1);
  2762.                 }
  2763.             } else if(TouchInput.wheelY < 0) {
  2764.                 if(index >= Params.SlotNumber[0] - 1) {
  2765.                     win.select(0);
  2766.                 } else {
  2767.                     win.select(index + 1);
  2768.                 }
  2769.             }
  2770.             // if(TouchInput.wheelY > 0) {
  2771.             //     if(index >= Params.SlotNumber[0] - 1) {
  2772.             //         win.select(0);
  2773.             //     } else {
  2774.             //         win.select(index + 1);
  2775.             //     }
  2776.             // } else if(TouchInput.wheelY < 0) {
  2777.             //     if(index <= 0) {
  2778.             //         win.select(Params.SlotNumber[0] - 1);
  2779.             //     } else {
  2780.             //         win.select(index - 1);
  2781.             //     }
  2782.             // }
  2783.         }
  2784.     }
  2785.  
  2786. })();

评分

参与人数 1+1 收起 理由
Peekaboo + 1 我很赞同

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
133
在线时间
4 小时
注册时间
2017-9-27
帖子
7
10
发表于 2017-10-27 03:25:34 | 只看该作者
学习了,楼上几位大神
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-12-1 20:21

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表