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

Project1

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

[已经过期] 装备扩展脚本问题

[复制链接]

Lv1.梦旅人

梦石
0
星屑
80
在线时间
91 小时
注册时间
2017-2-4
帖子
20
跳转到指定楼层
1
发表于 2017-9-13 20:10:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 uoar 于 2017-9-13 20:13 编辑

小弟使用了以下扩展脚本,按照指示在防具上打上<装备タイプ:5>,可是新增的装备栏却没有可装备的防具,请问是什么原因呢?

RUBY 代码复制
  1. #==============================================================================
  2. # ■ RGSS3 新装備拡張&装備拡張画面 Ver1.04 by 星潟
  3. #------------------------------------------------------------------------------
  4. # 装備スロットの内容を変更すると共に、装備画面を大幅に変更して
  5. # 多数のステータスの表示に対応した物にします。
  6. # 拡張スクリプトを含めた旧版の機能を継承しつつ
  7. # 表示内容の拡張性を向上させています。
  8. #==============================================================================
  9. # 防具のメモ欄に記述。
  10. #------------------------------------------------------------------------------
  11. # <装備タイプ:5>
  12. #
  13. # この防具の装備タイプは5になります。(装飾品が4)
  14. # 以下の物にも言える事ですが、基本的に拡張部分に設定する為の機能です。
  15. #==============================================================================
  16. # 特徴を有する項目のメモ欄に記述。
  17. #------------------------------------------------------------------------------
  18. # <装備タイプ固定:6>
  19. #
  20. # 装備タイプ6の部位を固定します。
  21. #------------------------------------------------------------------------------
  22. # <装備タイプ固定:6,7>
  23. #
  24. # 装備タイプ6と7の部位を固定します。
  25. #------------------------------------------------------------------------------
  26. # <装備タイプ封印:8>
  27. #
  28. # 装備タイプ8の部位を封印します。
  29. #------------------------------------------------------------------------------
  30. # <装備タイプ封印:8,9,10>
  31. #
  32. # 装備タイプ8と9と10の部位を封印します。
  33. #==============================================================================
  34. # イベントコマンドのスクリプトで記述。
  35. #------------------------------------------------------------------------------
  36. # change_equip(1, 2, 3)
  37. #
  38. # アクターID1のスロット2番(0が最初)に該当する装備ID3の装備を試みます。
  39. #------------------------------------------------------------------------------
  40. # ch_eq(1, 2, 3)
  41. #
  42. # アクターID1のスロット2番(0が最初)に該当する装備ID3の装備を試みます。
  43. # (真上と同じです。旧バージョンから乗り換えた際に
  44. #  イベントを修正しないでいいように残してあります)
  45. #------------------------------------------------------------------------------
  46. # clear_equip(1)
  47. #
  48. # アクターID1の装備を全解除します。(装備画面の全解除コマンドと同じです)
  49. #------------------------------------------------------------------------------
  50. # ar_eq(1)
  51. #
  52. # アクターID1の装備を全解除します。(装備画面の全解除コマンドと同じです)
  53. # (真上と同じです。旧バージョンから乗り換えた際に
  54. #  イベントを修正しないでいいように残してあります)
  55. #------------------------------------------------------------------------------
  56. # optimize_equipments(1)
  57. #
  58. # アクターID1に最強装備を適用します。
  59. #==============================================================================
  60. # イベントコマンドの条件分岐のスクリプトで記述。
  61. #------------------------------------------------------------------------------
  62. # actor_equips_exist?(1,2)
  63. #
  64. # アクターID1のスロット2番に何かが装備されているかを判定します。
  65. #==============================================================================
  66. module SceneEquipNextType
  67.  
  68.   #空のハッシュ群を用意。(変更不要)
  69.  
  70.   BaseSlot = {}
  71.   ActorSlot = {}
  72.   Page = {}
  73.   XParam = {}
  74.   SParam = {}
  75.   Debuff = {}
  76.   Element = {}
  77.   State = {}
  78.  
  79.   #ステータス欄の最大ページ数指定。
  80.  
  81.   StatusPageMax       = 5
  82.  
  83.   #ページ数に応じたページデータを用意。(変更不要)
  84.  
  85.   StatusPageMax.times {|i|
  86.   Page[i] = {:col => 1,:line => 4,:title => 96,:space => 4,:ids => []}}
  87.  
  88.   #ステータス欄の最大行数指定。
  89.  
  90.   StatusLineMaxNumber = 4
  91.  
  92.   #ステータス欄のフォントサイズ指定。
  93.  
  94.   StatusFontSize      = 20
  95.  
  96.   #ステート無効の際の評価値を指定。(極端に大きい値を推奨)
  97.  
  98.   StateResist = 1000000000000
  99.  
  100.   #ステータス欄右上に表示する補助テキストを指定。
  101.  
  102.   StatusText = "Xボタン:前のページへ Yボタン:次のページへ"
  103.  
  104.   #ステータス欄右上に表示するテキストカラーIDを指定。
  105.  
  106.   StatusTextColor = 3
  107.  
  108.   #ステート無効の際の表示内容を指定。
  109.  
  110.   StateResistWord = "無効"
  111.  
  112.   #装備スロット欄の桁数を指定。
  113.  
  114.   SlotColMax  = 2
  115.  
  116.   #装備スロット欄の桁数2以上の時、横に項目が並ぶときの空白の幅を取得
  117.  
  118.   SlotSpacing = 16
  119.  
  120.   #スロット欄名称の描写幅を指定。
  121.  
  122.   SlotNameWidth = 72
  123.  
  124.   #装備タイプID5以降の名称を指定。
  125.  
  126.   SlotName = ["肩","靴","魔法書","技術書","宝珠"]
  127.  
  128.   #装備タイプ指定用キーワードを指定。
  129.  
  130.   ETypeWord1 = "装備タイプ"
  131.  
  132.   #装備固定用キーワードを指定。
  133.  
  134.   ETypeWord2 = "装備タイプ固定"
  135.  
  136.   #装備封印用キーワードを指定。
  137.  
  138.   ETypeWord3 = "装備タイプ封印"
  139.  
  140.   #コマンドウィンドウを削除するかを指定。
  141.   #戦闘中装備変更等のスクリプトと併用する場合はfalse推奨。
  142.  
  143.   CommandWindowDelete = true
  144.  
  145.   #ページ切り替え用ボタンシンボルを指定。
  146.   #1つ目が前のページへ。2つ目が次のページへ。
  147.  
  148.   PageKey = [:X,:Y]
  149.  
  150.   #装備解除用ボタンシンボルを指定。無効にする場合はnilにしてください。
  151.  
  152.   ReleaseKey = :A
  153.  
  154.   #最強装備用ボタンシンボルを指定。無効にする場合はnilにしてください。
  155.  
  156.   OptimizeKey = :CTRL
  157.  
  158.   #装備全解除用ボタンシンボルを指定。無効にする場合はnilにしてください。
  159.  
  160.   AllReleaseKey = :ALT
  161.  
  162.   #ロード時に装備欄の異常を解消するかを指定。
  163.   #(負荷増加)
  164.  
  165.   LoadNilBreak = false
  166.  
  167.   #基本スロット情報を指定。
  168.  
  169.   #通常スロットを指定。
  170.   #0が武器、1が盾~4が装飾品。以降の数字が追加分。
  171.   #並べたい順に指定。(最初は0、次は1を推奨)
  172.  
  173.   BaseSlot[1] = [0,1,2,3,5,6,7,8,4,4]
  174.  
  175.   #二刀流スロットを指定。
  176.   #0が武器、1が盾~4が装飾品。以降の数字が追加分。
  177.   #並べたい順に指定。(最初と次は0を推奨)
  178.  
  179.   BaseSlot[2] = [0,0,2,3,5,6,7,8,4,4]
  180.  
  181.   #各アクターで個別にスロットを指定。
  182.   #個別設定が不要な場合は設定しないで下さい。
  183.  
  184.   #例.アクター1のスロットを個別設定。最後に装備タイプ9を2つ追加する。
  185.   #ActorSlot[1] = {}
  186.   #ActorSlot[1][1] = [0,1,2,3,5,6,7,8,4,4,9,9]
  187.   #ActorSlot[1][2] = [0,0,2,3,5,6,7,8,4,4,9,9]
  188.  
  189.   #※アクタースロットは必要とされる方が
  190.   #少ないと思われるのでデフォルトでは設定していません。
  191.  
  192.   #ページ別表示ステータス情報を指定。
  193.  
  194.   #例.
  195.   #Page[0][:col] = 3
  196.   #Page[0][:line] = 4
  197.   #Page[0][:title] = 72
  198.   #Page[0][:space] = 4
  199.   #Page[0][:ids] = [0,1,2,3,4,5,6,7,100,101,102,103]
  200.   #ページ数0の桁数は3、行数は4、項目名描写幅は72、横に並んだ際の空白は4、
  201.   #描写ステータスIDは0,1,2,3,4,5,6,7,100,101,102,103となる。
  202.  
  203.   #描写ステータス0~7は最大HP~運。100~109は命中率~TP再生率。
  204.   #200~209は狙われ率~経験効率。300~307は最大HP弱体有効度~運弱体有効度。
  205.   #10001~19999は属性有効度(10000を引いたID)。
  206.   #20001~29999はステート有効度(20000を引いたID)。
  207.  
  208.   Page[0][:col] = 3
  209.   Page[0][:line] = 4
  210.   Page[0][:title] = 72
  211.   Page[0][:space] = 4
  212.   Page[0][:ids] = [0,1,2,3,4,5,6,7,100,101,102,103]
  213.  
  214.   Page[1][:col] = 3
  215.   Page[1][:line] = 4
  216.   Page[1][:title] = 72
  217.   Page[1][:space] = 4
  218.   Page[1][:ids] = [104,105,106,107,108,109,200,201,202,203,204,205]
  219.  
  220.   Page[2][:col] = 3
  221.   Page[2][:line] = 4
  222.   Page[2][:title] = 72
  223.   Page[2][:space] = 4
  224.   Page[2][:ids] = [206,207,208,209,300,301,302,303,304,305,306,307]
  225.  
  226.   Page[3][:col] = 3
  227.   Page[3][:line] = 4
  228.   Page[3][:title] = 72
  229.   Page[3][:space] = 4
  230.   Page[3][:ids] = [10001,10002,10003,10004,10005,10006,10007,10008,10009,10010]
  231.  
  232.   Page[4][:col] = 3
  233.   Page[4][:line] = 4
  234.   Page[4][:title] = 72
  235.   Page[4][:space] = 4
  236.   Page[4][:ids] = [20001,20002,20003,20004,20005,20006,20007,20008]
  237.  
  238.   #追加能力値の名称、乗算値、加算値、優劣反転フラグを指定。
  239.   #名称はそのまま名前に。
  240.   #乗算値は実数に対して乗算する値。
  241.   #(例えば命中率は100%でも1.00になる為、100倍した上で切り上げにする必要がある)
  242.   #加算値は実数に対して加算する値。
  243.   #(例えば物理ダメージ率は低ければ低いほど有効だが
  244.   # 見栄えの関係上、乗算値で-100倍した上で加算値で+100とする事で
  245.   # 大きければ大きいほど価値のある【物理軽減率】として扱える)
  246.   #優劣反転フラグは低いほど優秀と判定される項目の為の物。
  247.   #0で通常の判定、1で優劣反転での判定、2で常に通常色(優劣判定なし)。
  248.  
  249.   XParam[0] = ["命中率",100,0,0]
  250.   XParam[1] = ["回避率",100,0,0]
  251.   XParam[2] = ["会心率",100,0,0]
  252.   XParam[3] = ["会心回避",100,0,0]
  253.   XParam[4] = ["魔法回避",100,0,0]
  254.   XParam[5] = ["魔法反射",100,0,0]
  255.   XParam[6] = ["反撃率",100,0,0]
  256.   XParam[7] = ["HP再生",100,0,0]
  257.   XParam[8] = ["MP再生",100,0,0]
  258.   XParam[9] = ["TP再生",100,0,0]
  259.  
  260.   #特殊能力値の名称、乗算値、加算値、優劣反転フラグを指定。
  261.  
  262.   SParam[0] = ["狙われ率",100,-100,2]
  263.   SParam[1] = ["防御効果",100,-100,0]
  264.   SParam[2] = ["回復効果",100,-100,0]
  265.   SParam[3] = ["薬の知識",100,-100,0]
  266.   SParam[4] = ["MP節約",-100,100,0]
  267.   SParam[5] = ["TPC",100,-100,0]
  268.   SParam[6] = ["物理軽減",-100,100,0]
  269.   SParam[7] = ["魔法軽減",-100,100,0]
  270.   SParam[8] = ["床D軽減",-100,100,0]
  271.   SParam[9] = ["経験効率",100,-100,0]
  272.  
  273.   #弱体有効度の名称、乗算値、加算値、優劣反転フラグを指定。
  274.  
  275.   Debuff[0] = ["HP低下",-100,100,0]
  276.   Debuff[1] = ["MP低下",-100,100,0]
  277.   Debuff[2] = ["攻撃低下",-100,100,0]
  278.   Debuff[3] = ["防御低下",-100,100,0]
  279.   Debuff[4] = ["魔法低下",-100,100,0]
  280.   Debuff[5] = ["魔防低下",-100,100,0]
  281.   Debuff[6] = ["敏捷低下",-100,100,0]
  282.   Debuff[7] = ["運低下",-100,100,0]
  283.  
  284.   #属性有効度の名称、乗算値、加算値、優劣反転フラグを指定。
  285.  
  286.   Element[1] = ["物理耐性",-100,100,0]
  287.   Element[2] = ["吸収耐性",-100,100,0]
  288.   Element[3] = ["炎耐性",-100,100,0]
  289.   Element[4] = ["氷耐性",-100,100,0]
  290.   Element[5] = ["雷耐性",-100,100,0]
  291.   Element[6] = ["水耐性",-100,100,0]
  292.   Element[7] = ["大地耐性",-100,100,0]
  293.   Element[8] = ["風耐性",-100,100,0]
  294.   Element[9] = ["暗黒耐性",-100,100,0]
  295.   Element[10] = ["神聖耐性",-100,100,0]
  296.  
  297.   #ステート有効度の名称、乗算値、加算値、優劣反転フラグを指定。
  298.  
  299.   State[1] = ["即死耐性",-100,100,0]
  300.   State[2] = ["毒耐性",-100,100,0]
  301.   State[3] = ["暗闇",-100,100,0]
  302.   State[4] = ["沈黙",-100,100,0]
  303.   State[5] = ["混乱",-100,100,0]
  304.   State[6] = ["睡眠",-100,100,0]
  305.   State[7] = ["麻痺",-100,100,0]
  306.   State[8] = ["スタン",-100,100,0]
  307.  
  308. end
  309. class RPG::System::Terms
  310.   #--------------------------------------------------------------------------
  311.   # 装備タイプ
  312.   #--------------------------------------------------------------------------
  313.   alias etypes_expansion etypes unless $!
  314.   def etypes
  315.     etypes_expansion + SceneEquipNextType::SlotName
  316.   end
  317. end
  318. if SceneEquipNextType::LoadNilBreak
  319. class Game_System
  320.   #--------------------------------------------------------------------------
  321.   # ロード後の処理
  322.   #--------------------------------------------------------------------------
  323.   alias on_after_load_equips_nil_break on_after_load
  324.   def on_after_load
  325.     on_after_load_equips_nil_break
  326.     $data_actors.size.times {|i|
  327.     a = $game_actors[i]
  328.     a.equips_nil_break if a}
  329.   end
  330. end
  331. class Game_Actor < Game_Battler
  332.   #--------------------------------------------------------------------------
  333.   # 装備品オブジェクトの配列取得
  334.   #--------------------------------------------------------------------------
  335.   def equips_nil_break
  336.     equip_slots.size.times {|i| @equips[i] = Game_BaseItem.new unless @equips[i]}
  337.   end
  338. end
  339. end
  340. class Game_BattlerBase
  341.   #--------------------------------------------------------------------------
  342.   # 装備封印の判定
  343.   #--------------------------------------------------------------------------
  344.   alias equip_type_sealed_object_check? equip_type_sealed?
  345.   def equip_type_sealed?(etype_id)
  346.     (equip_type_sealed_object_check?(etype_id) or ex_equip_type_sealed?(etype_id)) && equip_slots.include?(etype_id)
  347.   end
  348.   #--------------------------------------------------------------------------
  349.   # 装備固定の判定
  350.   #--------------------------------------------------------------------------
  351.   alias equip_type_fixed_object_check? equip_type_fixed?
  352.   def equip_type_fixed?(etype_id)
  353.     (equip_type_fixed_object_check?(etype_id) or ex_equip_type_fixed?(etype_id)) && equip_slots.include?(etype_id)
  354.   end
  355.   #--------------------------------------------------------------------------
  356.   # 装備封印の判定2
  357.   #--------------------------------------------------------------------------
  358.   def ex_equip_type_sealed?(etype_id)
  359.     (feature_objects.inject([]) {|r,f| r += f.etype_seal_ids}).uniq.include?(etype_id)
  360.   end
  361.   #--------------------------------------------------------------------------
  362.   # 装備固定の判定2
  363.   #--------------------------------------------------------------------------
  364.   def ex_equip_type_fixed?(etype_id)
  365.     (feature_objects.inject([]) {|r,f| r += f.etype_fix_ids}).uniq.include?(etype_id)
  366.   end
  367. end
  368. class Game_Actor < Game_Battler
  369.   #--------------------------------------------------------------------------
  370.   # 装備スロットの配列を取得
  371.   #--------------------------------------------------------------------------
  372.   def equip_slots
  373.     dw = dual_wield? ? 2 : 1
  374.     h = SceneEquipNextType::ActorSlot[id]
  375.     if h && h[dw]
  376.       h[dw]
  377.     else
  378.       SceneEquipNextType::BaseSlot[dw]
  379.     end
  380.   end
  381.   #--------------------------------------------------------------------------
  382.   # 装備配列のnil防止
  383.   #--------------------------------------------------------------------------
  384.   def equip_slot_object_rescue
  385.     equip_slots.size.times {|i| @equips[i] ||= Game_BaseItem.new}
  386.   end
  387.   #--------------------------------------------------------------------------
  388.   # 装備できない装備品を外す
  389.   #--------------------------------------------------------------------------
  390.   alias release_unequippable_items_object_check release_unequippable_items
  391.   def release_unequippable_items(item_gain = true)
  392.     release_unequippable_items_object_check(item_gain)
  393.     es = equip_slots.size
  394.     if @equips.size > es
  395.       @equips.each_with_index {|e,i|
  396.       if i > es - 1
  397.         trade_item_with_party(nil, e.object) if item_gain
  398.         e.object = nil
  399.       end}
  400.       @equips = @equips[0,@equips.size - 1]
  401.     end
  402.   end
  403.   #--------------------------------------------------------------------------
  404.   # 装備の変更
  405.   #--------------------------------------------------------------------------
  406.   alias change_equip_object_check change_equip
  407.   def change_equip(slot_id, item)
  408.     @equips[slot_id] ||= Game_BaseItem.new
  409.     change_equip_object_check(slot_id, item)
  410.   end
  411.   #--------------------------------------------------------------------------
  412.   # 装備の強制変更
  413.   #--------------------------------------------------------------------------
  414.   alias force_change_equip_object_check force_change_equip
  415.   def force_change_equip(slot_id, item)
  416.     @equips[slot_id] ||= Game_BaseItem.new
  417.     force_change_equip_object_check(slot_id, item)
  418.   end
  419.   #--------------------------------------------------------------------------
  420.   # 装備が指定スロットに存在するか
  421.   #--------------------------------------------------------------------------
  422.   def equips_exist?(slot_id)
  423.     return false unless @equips[slot_id]
  424.     !@equips[slot_id].is_nil?
  425.   end
  426. end
  427. class Scene_Equip < Scene_MenuBase
  428.   #--------------------------------------------------------------------------
  429.   # 開始処理
  430.   #--------------------------------------------------------------------------
  431.   alias start_page_change_handle start
  432.   def start
  433.     start_page_change_handle
  434.     [@command_window,@slot_window,@item_window].each {|w|
  435.     [:prev_page,:next_page].each {|s| w.set_handler(s,method(s))}}
  436.     if SceneEquipNextType::ReleaseKey
  437.       s = :release_equip
  438.       @slot_window.set_handler(s,method(s))
  439.     end
  440.     if SceneEquipNextType::OptimizeKey
  441.       s = :command_optimize_slot
  442.       @slot_window.set_handler(s,method(s))
  443.     end
  444.     if SceneEquipNextType::AllReleaseKey
  445.       s = :command_clear_slot
  446.       @slot_window.set_handler(s,method(s))
  447.     end
  448.     if SceneEquipNextType::CommandWindowDelete
  449.       @slot_window.set_handler(:pagedown, method(:next_actor))
  450.       @slot_window.set_handler(:pageup,   method(:prev_actor))
  451.       @command_window.deactivate
  452.       @slot_window.activate
  453.       @slot_window.select(0)
  454.     end
  455.   end
  456.   #--------------------------------------------------------------------------
  457.   # ステータスウィンドウの作成
  458.   #--------------------------------------------------------------------------
  459.   alias create_status_window_temp_actor_window create_status_window
  460.   def create_status_window
  461.     create_status_window_temp_actor_window
  462.     @temp_actor_status_window = Window_EquipStatusTemp.new(0, @help_window.height)
  463.     t = @temp_actor_status_window
  464.     s = @status_window
  465.     t.viewport = @viewport
  466.     t.actor = @actor
  467.     t.opacity = 0
  468.     t.contents_opacity = 255
  469.     s.temp_actor_window = t
  470.     t.temp_actor_window = s
  471.   end
  472.   #--------------------------------------------------------------------------
  473.   # コマンドウィンドウの作成
  474.   #--------------------------------------------------------------------------
  475.   alias create_command_window_move_position create_command_window
  476.   def create_command_window
  477.     @status_window.ow_creating = true
  478.     create_command_window_move_position
  479.     @status_window.ow_creating = nil
  480.     c = @command_window
  481.     return c.hide if SceneEquipNextType::CommandWindowDelete
  482.     s = @status_window
  483.     x = 0
  484.     y = s.y + s.height
  485.     c = @command_window
  486.     c.move(x,y,Graphics.width,c.height)
  487.     c.create_contents
  488.     c.refresh
  489.     c.activate
  490.   end
  491.   #--------------------------------------------------------------------------
  492.   # スロットウィンドウの作成
  493.   #--------------------------------------------------------------------------
  494.   alias create_slot_window_move_position create_slot_window
  495.   def create_slot_window
  496.     @actor.equip_slot_object_rescue if @actor
  497.     @status_window.ow_creating = true
  498.     create_slot_window_move_position
  499.     @status_window.ow_creating = nil
  500.     s1 = @status_window
  501.     a = slot_item_window_rect_array
  502.     s2 = @slot_window
  503.     s2.move(a[0],a[1],a[2],a[3])
  504.     s2.create_contents
  505.     s2.refresh
  506.   end
  507.   #--------------------------------------------------------------------------
  508.   # アイテムウィンドウの作成
  509.   #--------------------------------------------------------------------------
  510.   alias create_item_window_move_position create_item_window
  511.   def create_item_window
  512.     create_item_window_move_position
  513.     y = @status_window.y + @status_window.height
  514.     a = slot_item_window_rect_array
  515.     @item_window.move(a[0],a[1],a[2],a[3])
  516.     @item_window.create_contents
  517.     @item_window.refresh
  518.     @item_window.hide
  519.   end
  520.   #--------------------------------------------------------------------------
  521.   # スロット・アイテムウィンドウの矩形配列
  522.   #--------------------------------------------------------------------------
  523.   def slot_item_window_rect_array
  524.     w = SceneEquipNextType::CommandWindowDelete ? @status_window : @command_window
  525.     y = w.y + w.height
  526.     [0,y,Graphics.width,Graphics.height - y]
  527.   end
  528.   if SceneEquipNextType::CommandWindowDelete
  529.   #--------------------------------------------------------------------------
  530.   # スロット[キャンセル]
  531.   #--------------------------------------------------------------------------
  532.   alias on_slot_cancel_command_delete on_slot_cancel
  533.   def on_slot_cancel
  534.     on_slot_cancel_command_delete
  535.     return_scene
  536.   end
  537.   end
  538.   #--------------------------------------------------------------------------
  539.   # スロット[決定]
  540.   #--------------------------------------------------------------------------
  541.   alias on_slot_ok_slot_item_switch on_slot_ok
  542.   def on_slot_ok
  543.     on_slot_ok_slot_item_switch
  544.     @item_window.show
  545.     @slot_window.hide
  546.   end
  547.   #--------------------------------------------------------------------------
  548.   # アイテム[決定]
  549.   #--------------------------------------------------------------------------
  550.   alias on_item_ok_slot_item_switch on_item_ok
  551.   def on_item_ok
  552.     on_item_ok_slot_item_switch
  553.     @slot_window.show
  554.     @item_window.hide
  555.     @status_window.refresh
  556.   end
  557.   #--------------------------------------------------------------------------
  558.   # アイテム[キャンセル]
  559.   #--------------------------------------------------------------------------
  560.   alias on_item_cancel_slot_item_switch on_item_cancel
  561.   def on_item_cancel
  562.     on_item_cancel_slot_item_switch
  563.     @slot_window.show
  564.     @item_window.hide
  565.   end
  566.   #--------------------------------------------------------------------------
  567.   # アクターの切り替え
  568.   #--------------------------------------------------------------------------
  569.   alias on_actor_change_slot_item_switch on_actor_change
  570.   def on_actor_change
  571.     f = SceneEquipNextType::CommandWindowDelete
  572.     @slot_window.unselect if f
  573.     on_actor_change_slot_item_switch
  574.     @actor.equip_slot_object_rescue if @actor
  575.     if SceneEquipNextType::CommandWindowDelete
  576.       @command_window.deactivate
  577.       @slot_window.activate
  578.       @slot_window.index = 0
  579.     end
  580.   end
  581.   #--------------------------------------------------------------------------
  582.   # 次のページへ
  583.   #--------------------------------------------------------------------------
  584.   def next_page
  585.     @status_window.next_page
  586.     @temp_actor_status_window.next_page
  587.   end
  588.   #--------------------------------------------------------------------------
  589.   # 前のページへ
  590.   #--------------------------------------------------------------------------
  591.   def prev_page
  592.     @status_window.prev_page
  593.     @temp_actor_status_window.prev_page
  594.   end
  595.   #--------------------------------------------------------------------------
  596.   # 装備を外す
  597.   #--------------------------------------------------------------------------
  598.   def release_equip
  599.     @actor.change_equip(@slot_window.index, nil)
  600.     @slot_window.refresh
  601.     @item_window.refresh
  602.     @status_window.refresh
  603.     @temp_actor_status_window.refresh
  604.   end
  605.   #--------------------------------------------------------------------------
  606.   # ワンタッチ最強装備
  607.   #--------------------------------------------------------------------------
  608.   def command_optimize_slot
  609.     command_optimize
  610.     @command_window.deactivate
  611.     @slot_window.activate
  612.     @item_window.refresh
  613.   end
  614.   #--------------------------------------------------------------------------
  615.   # ワンタッチ全解除
  616.   #--------------------------------------------------------------------------
  617.   def command_clear_slot
  618.     command_clear
  619.     @command_window.deactivate
  620.     @slot_window.activate
  621.     @item_window.refresh
  622.   end
  623. end
  624. class Window_EquipStatus < Window_Base
  625.   attr_accessor :temp_actor_window
  626.   attr_accessor :param_data
  627.   attr_accessor :ow_creating
  628.   #--------------------------------------------------------------------------
  629.   # オブジェクト初期化
  630.   #--------------------------------------------------------------------------
  631.   alias initialize_temp_actor_window initialize
  632.   def initialize(x, y)
  633.     @page_number = 0
  634.     @param_data = {}
  635.     initialize_temp_actor_window(x, y)
  636.   end
  637.   #--------------------------------------------------------------------------
  638.   # ウィンドウ幅の取得
  639.   #--------------------------------------------------------------------------
  640.   def window_width
  641.     Graphics.width
  642.   end
  643.   #--------------------------------------------------------------------------
  644.   # ウィンドウ幅の取得
  645.   #--------------------------------------------------------------------------
  646.   def width
  647.     @ow_creating ? 208 : super
  648.   end
  649.   #--------------------------------------------------------------------------
  650.   # 表示行数の取得
  651.   #--------------------------------------------------------------------------
  652.   def visible_line_number
  653.     SceneEquipNextType::StatusLineMaxNumber + 1
  654.   end
  655.   #--------------------------------------------------------------------------
  656.   # 次のページへ
  657.   #--------------------------------------------------------------------------
  658.   def next_page
  659.     @page_number += 1
  660.     page_control
  661.   end
  662.   #--------------------------------------------------------------------------
  663.   # 前のページへ
  664.   #--------------------------------------------------------------------------
  665.   def prev_page
  666.     @page_number -= 1
  667.     page_control
  668.   end
  669.   #--------------------------------------------------------------------------
  670.   # ページ限界値を調整
  671.   #--------------------------------------------------------------------------
  672.   def page_control
  673.     m = SceneEquipNextType::StatusPageMax - 1
  674.     @page_number = m if @page_number < 0
  675.     @page_number = 0 if @page_number > m
  676.     refresh
  677.   end
  678.   #--------------------------------------------------------------------------
  679.   # リフレッシュ
  680.   #--------------------------------------------------------------------------
  681.   def refresh
  682.     contents.clear
  683.     return unless @actor
  684.     contents.font.size = SceneEquipNextType::StatusFontSize
  685.     draw_actor_name(@actor, 4, 0)
  686.     draw_status_text
  687.     draw_all_items
  688.   end
  689.   #--------------------------------------------------------------------------
  690.   # 右上の補助テキスト描写
  691.   #--------------------------------------------------------------------------
  692.   def draw_status_text
  693.     change_color(text_color(SceneEquipNextType::StatusTextColor))
  694.     draw_text(0,0,contents_width,line_height,SceneEquipNextType::StatusText,2)
  695.     change_color(normal_color)
  696.   end
  697.   #--------------------------------------------------------------------------
  698.   # 全項目描写
  699.   #--------------------------------------------------------------------------
  700.   def draw_all_items
  701.     h = SceneEquipNextType::Page[@page_number]
  702.     space = h[:space]
  703.     col = h[:col]
  704.     title = h[:title]
  705.     line = h[:line]
  706.     ids = h[:ids]
  707.     aw = contents_width / col
  708.     ids.each_with_index {|c,i|
  709.     draw_item(aw * (i / line),(i % line + 1) * line_height,aw - space,line_height,title,c)}
  710.   end
  711.   #--------------------------------------------------------------------------
  712.   # 項目描写
  713.   #--------------------------------------------------------------------------
  714.   def draw_item(x,y,w,h,t,c)
  715.     case c
  716.     when 0..99
  717.       i = c
  718.       d = @actor.param(i)
  719.       a = [$data_system.terms.params[i],1,0,false]
  720.     when 100..109
  721.       i = c - 100
  722.       d = @actor.xparam(i)
  723.       a = SceneEquipNextType::XParam[i]
  724.     when 200..209
  725.       i = c - 200
  726.       d = @actor.sparam(i)
  727.       a = SceneEquipNextType::SParam[i]
  728.     when 300..307
  729.       i = c - 300
  730.       d = @actor.debuff_rate(i)
  731.       a = SceneEquipNextType::Debuff[i]
  732.     when 10001..19999
  733.       i = c - 10000
  734.       d = @actor.element_rate(i)
  735.       a = SceneEquipNextType::Element[i]
  736.     when 20001..29999
  737.       i = c - 20000
  738.       d = @actor.state_resist?(i) ? SceneEquipNextType::StateResist : @actor.state_rate(i)
  739.       a = SceneEquipNextType::State[i]
  740.     else;return
  741.     end
  742.     d1 = a ? a[0] : nil
  743.     return unless d1
  744.     if c > 20000 && d == SceneEquipNextType::StateResist
  745.       d2 = SceneEquipNextType::StateResistWord
  746.     else
  747.       d2 = (d * a[1]).round + a[2]
  748.     end
  749.     @param_data[c] = d2
  750.     change_color(system_color)
  751.     draw_text(x,y,t,h,d1)
  752.     change_color(normal_color)
  753.     draw_text(x + t,y,(w - t - 24) / 2,h,d2,2)
  754.   end
  755.   #--------------------------------------------------------------------------
  756.   # 装備変更後の一時アクター設定
  757.   #--------------------------------------------------------------------------
  758.   def set_temp_actor(temp_actor)
  759.     temp_actor_window.set_temp_actor(temp_actor)
  760.   end
  761. end
  762. class Window_EquipStatusTemp < Window_EquipStatus
  763.   #--------------------------------------------------------------------------
  764.   # 項目描写
  765.   #--------------------------------------------------------------------------
  766.   def draw_item(x,y,w,h,t,c)
  767.     return unless @temp_actor
  768.     case c
  769.     when 0..99
  770.       i = c
  771.       d = @temp_actor.param(c)
  772.       a = ["",1,0,false]
  773.     when 100..109
  774.       i = c - 100
  775.       d = @temp_actor.xparam(i)
  776.       a = SceneEquipNextType::XParam[i]
  777.     when 200..209
  778.       i = c - 200
  779.       d = @temp_actor.sparam(i)
  780.       a = SceneEquipNextType::SParam[i]
  781.     when 300..307
  782.       i = c - 300
  783.       d = @temp_actor.debuff_rate(i)
  784.       a = SceneEquipNextType::Debuff[i]
  785.     when 10001..19999
  786.       i = c - 10000
  787.       d = @temp_actor.element_rate(i)
  788.       a = SceneEquipNextType::Element[i]
  789.     when 20001..29999
  790.       i = c - 20000
  791.       d = @temp_actor.state_resist?(i) ? SceneEquipNextType::StateResist : @temp_actor.state_rate(i)
  792.       a = SceneEquipNextType::State[i]
  793.     else;return
  794.     end
  795.     if c > 20000 && d == SceneEquipNextType::StateResist
  796.       d2 = SceneEquipNextType::StateResistWord
  797.     else
  798.       d = (d * a[1]).round + a[2]
  799.       d2 = d
  800.     end
  801.     w2 = (w - t - 24) / 2
  802.     x2 = x + t + w2
  803.     change_color(system_color)
  804.     draw_text(x2,y,24,h,"→")
  805.     o = @temp_actor_window.param_data[c]
  806.     if a[3] == 2
  807.       change_color(normal_color)
  808.     else
  809.       flag = o == SceneEquipNextType::StateResistWord
  810.       true_o = flag ? SceneEquipNextType::StateResist : o
  811.       color = param_change_color((d - true_o) * (a[3] == 1 ? -1 : 1))
  812.       change_color(color)
  813.     end
  814.     draw_text(x2 + 24,y,w2,h,d2,2)
  815.   end
  816.   #--------------------------------------------------------------------------
  817.   # 装備変更後の一時アクター設定
  818.   #--------------------------------------------------------------------------
  819.   def set_temp_actor(temp_actor)
  820.     return if @temp_actor == temp_actor
  821.     @temp_actor = temp_actor
  822.     refresh
  823.   end
  824.   #--------------------------------------------------------------------------
  825.   # 名前の描画
  826.   #--------------------------------------------------------------------------
  827.   def draw_actor_name(actor, x, y, width = 112)
  828.   end
  829.   #--------------------------------------------------------------------------
  830.   # 右上の補助テキスト描写
  831.   #--------------------------------------------------------------------------
  832.   def draw_status_text
  833.   end
  834. end
  835. module WindowEquipPage
  836.   #--------------------------------------------------------------------------
  837.   # 前のページへ移行するハンドリング処理
  838.   #--------------------------------------------------------------------------
  839.   def process_prev_page
  840.     if handle?(:prev_page)
  841.       Sound.play_cursor
  842.       call_handler(:prev_page)
  843.     end
  844.     activate
  845.   end
  846.   #--------------------------------------------------------------------------
  847.   # 次のページへ移行するハンドリング処理
  848.   #--------------------------------------------------------------------------
  849.   def process_next_page
  850.     if handle?(:next_page)
  851.       Sound.play_cursor
  852.       call_handler(:next_page)
  853.     end
  854.     activate
  855.   end
  856. end
  857. class Window_EquipSlot < Window_Selectable
  858.   include WindowEquipPage
  859.   #--------------------------------------------------------------------------
  860.   # 桁数を取得
  861.   #--------------------------------------------------------------------------
  862.   def col_max
  863.     SceneEquipNextType::SlotColMax
  864.   end
  865.   #--------------------------------------------------------------------------
  866.   # 横に項目が並ぶときの空白の幅を取得
  867.   #--------------------------------------------------------------------------
  868.   def spacing
  869.     SceneEquipNextType::SlotSpacing
  870.   end
  871.   #--------------------------------------------------------------------------
  872.   # 項目の描画
  873.   #--------------------------------------------------------------------------
  874.   def draw_item(index)
  875.     return unless @actor
  876.     w = SceneEquipNextType::SlotNameWidth
  877.     rect = item_rect_for_text(index)
  878.     change_color(system_color, enable?(index))
  879.     draw_text(rect.x, rect.y, w, line_height, slot_name(index))
  880.     draw_item_name(@actor.equips[index], rect.x + w, rect.y, enable?(index))
  881.   end
  882.   #--------------------------------------------------------------------------
  883.   # 決定やキャンセルなどのハンドリング処理
  884.   #--------------------------------------------------------------------------
  885.   unless method_defined?(:process_handling_page_change)
  886.   alias process_handling_page_change process_handling
  887.   def process_handling
  888.     return unless open? && active
  889.     ks = SceneEquipNextType::PageKey
  890.     return process_prev_page if Input.trigger?(ks[0])
  891.     return process_next_page if Input.trigger?(ks[1])
  892.     return process_release_equip if Input.trigger?(SceneEquipNextType::ReleaseKey)
  893.     return process_optimize if Input.trigger?(SceneEquipNextType::OptimizeKey)
  894.     return process_all_release if Input.trigger?(SceneEquipNextType::AllReleaseKey)
  895.     process_handling_page_change
  896.   end
  897.   end
  898.   #--------------------------------------------------------------------------
  899.   # 装備解除のハンドリング処理
  900.   #--------------------------------------------------------------------------
  901.   def process_release_equip
  902.     if handle?(:release_equip)
  903.       if current_item_enabled? && item
  904.         Sound.play_equip
  905.         call_handler(:release_equip)
  906.       else
  907.         Sound.play_buzzer
  908.       end
  909.     end
  910.     activate
  911.   end
  912.   #--------------------------------------------------------------------------
  913.   # 最強装備のハンドリング処理
  914.   #--------------------------------------------------------------------------
  915.   def process_optimize
  916.     if handle?(:command_optimize_slot)
  917.       Sound.play_equip
  918.       call_handler(:command_optimize_slot)
  919.     end
  920.     activate
  921.   end
  922.   #--------------------------------------------------------------------------
  923.   # 全装備解除のハンドリング処理
  924.   #--------------------------------------------------------------------------
  925.   def process_all_release
  926.     if handle?(:command_clear_slot)
  927.       Sound.play_equip
  928.       call_handler(:command_clear_slot)
  929.     end
  930.     activate
  931.   end
  932. end
  933. class Window_EquipCommand < Window_HorzCommand
  934.   include WindowEquipPage
  935.   #--------------------------------------------------------------------------
  936.   # 決定やキャンセルなどのハンドリング処理
  937.   #--------------------------------------------------------------------------
  938.   alias process_handling_page_change process_handling unless $!
  939.   def process_handling
  940.     return unless open? && active
  941.     ks = SceneEquipNextType::PageKey
  942.     return process_prev_page if Input.trigger?(ks[0])
  943.     return process_next_page if Input.trigger?(ks[1])
  944.     process_handling_page_change
  945.   end
  946. end
  947. class Window_EquipItem < Window_ItemList
  948.   include WindowEquipPage
  949.   #--------------------------------------------------------------------------
  950.   # 決定やキャンセルなどのハンドリング処理
  951.   #--------------------------------------------------------------------------
  952.   alias process_handling_page_change process_handling unless $!
  953.   def process_handling
  954.     return unless open? && active
  955.     ks = SceneEquipNextType::PageKey
  956.     return process_prev_page if Input.trigger?(ks[0])
  957.     return process_next_page if Input.trigger?(ks[1])
  958.     process_handling_page_change
  959.   end
  960. end
  961. class Game_Interpreter
  962.   #--------------------------------------------------------------------------
  963.   # 装備の変更
  964.   #--------------------------------------------------------------------------
  965.   def change_equip(aid, sid, iid)
  966.     actor = $game_actors[aid]
  967.     actor.change_equip_by_id(sid, iid) if actor
  968.   end
  969.   #--------------------------------------------------------------------------
  970.   # 装備の全解除
  971.   #--------------------------------------------------------------------------
  972.   def clear_equip(aid)
  973.     actor = $game_actors[aid]
  974.     actor.clear_equipments if actor
  975.   end
  976.   #--------------------------------------------------------------------------
  977.   # 最強装備
  978.   #--------------------------------------------------------------------------
  979.   def optimize_equipments(aid)
  980.     actor = $game_actors[aid]
  981.     actor.optimize_equipments if actor
  982.   end
  983.   #--------------------------------------------------------------------------
  984.   # 装備が指定スロットに存在するか
  985.   #--------------------------------------------------------------------------
  986.   def actor_equips_exist?(aid,sid)
  987.     actor = $game_actors[aid]
  988.     actor.equips_exist?(sid) if actor
  989.   end
  990.   #--------------------------------------------------------------------------
  991.   # 装備の変更(旧バージョン互換用)
  992.   #--------------------------------------------------------------------------
  993.   def ch_eq(aid, sid, iid)
  994.     change_equip(aid, sid, iid)
  995.   end
  996.   #--------------------------------------------------------------------------
  997.   # 装備の全解除(旧バージョン互換用)
  998.   #--------------------------------------------------------------------------
  999.   def ar_eq(aid)
  1000.     clear_equip(aid)
  1001.   end
  1002. end
  1003. class RPG::EquipItem < RPG::BaseItem
  1004.   #--------------------------------------------------------------------------
  1005.   # 装備タイプ
  1006.   #--------------------------------------------------------------------------
  1007.   def etype_id
  1008.     @true_etype_id ||= /<#{SceneEquipNextType::ETypeWord1}[::](\d+)>/ =~ note ? $1.to_i : @etype_id
  1009.   end
  1010. end
  1011. class RPG::BaseItem
  1012.   #--------------------------------------------------------------------------
  1013.   # 装備固定タイプID
  1014.   #--------------------------------------------------------------------------
  1015.   def etype_fix_ids
  1016.     @etype_fix_ids ||= create_etype_fix_ids
  1017.   end
  1018.   #--------------------------------------------------------------------------
  1019.   # 装備固定タイプID作成
  1020.   #--------------------------------------------------------------------------
  1021.   def create_etype_fix_ids
  1022.     a = /<#{SceneEquipNextType::ETypeWord2}[::](\S+)>/ =~ note ? $1.to_s : ""
  1023.     a.split(/\s*,\s*/).inject([]) {|r,i| r.push(i.to_i)}
  1024.   end
  1025.   #--------------------------------------------------------------------------
  1026.   # 装備封印タイプID
  1027.   #--------------------------------------------------------------------------
  1028.   def etype_seal_ids
  1029.     @etype_seal_ids ||= create_etype_seal_ids
  1030.   end
  1031.   #--------------------------------------------------------------------------
  1032.   # 装備封印タイプID作成
  1033.   #--------------------------------------------------------------------------
  1034.   def create_etype_seal_ids
  1035.     a = /<#{SceneEquipNextType::ETypeWord3}[::](\S+)>/ =~ note ? $1.to_s : ""
  1036.     a.split(/\s*,\s*/).inject([]) {|r,i| r.push(i.to_i)}
  1037.   end
  1038. end

Lv2.观梦者

梦石
0
星屑
468
在线时间
751 小时
注册时间
2014-9-7
帖子
14

开拓者

2
发表于 2017-9-13 21:23:03 | 只看该作者
本帖最后由 VIPSaber 于 2017-9-13 22:03 编辑

1.检查一下备注是否写错了,你可以吧130行的日文替换成英文或者中文后注释对应的文本试试,避免打错字符(
2.检查一下是否获得了这个装备,
3.看看你是不是看错了装备栏,备注<装備タイプ:5>的槽就是第五个装备槽
4.检查装备使用有设置护甲类型
5.检查角色是否添加了对应的护甲类型

我试了一下脚本,能正常运行。

加个图说明吧

点评

我设置的都跟你一样,但就是没有在第五栏看见任何装备 QQ  发表于 2017-9-13 22:55
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
80
在线时间
91 小时
注册时间
2017-2-4
帖子
20
3
 楼主| 发表于 2017-9-13 21:45:39 | 只看该作者
感谢回答,刚才再检查一次后还是不能装上,这是我的范例游戏,能帮忙看一下吗?

我设置了开启箱子后会获得布衣,布衣在备注上设置了<装备タイプ:5>,可是在第五装备栏还是看不见

装备扩展脚本问题.rar

1.42 MB, 下载次数: 65

点评

我把布衣改为护甲类型,虽然布衣有正常出现在护甲栏装备上,但没有出现在第五个装备栏上...  发表于 2017-9-13 21:57
检查一下护甲类型,你这个工程里布甲没有设置护甲类型  发表于 2017-9-13 21:52
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
809
在线时间
176 小时
注册时间
2017-1-15
帖子
81
4
发表于 2017-9-13 21:53:30 | 只看该作者
数据库里面的装备分类也要做,我记得

点评

请问具体是要怎样设置?我在数据库中按照脚本上的名称新增了护甲种类,还是没有看见..  发表于 2017-9-13 21:59
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
468
在线时间
751 小时
注册时间
2014-9-7
帖子
14

开拓者

5
发表于 2017-9-13 23:20:03 | 只看该作者
我设置的都跟你一样,但就是没有在第五栏看见任何装备

你仔细检查一下?
给个范例自行体会吧

黑块遮罩房间 v2.zip

2 MB, 下载次数: 71

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
80
在线时间
91 小时
注册时间
2017-2-4
帖子
20
6
 楼主| 发表于 2017-9-14 11:31:48 | 只看该作者
本帖最后由 uoar 于 2017-9-14 15:17 编辑
VIPSaber 发表于 2017-9-13 23:20
你仔细检查一下?
给个范例自行体会吧


请问你在我的范例能成功运行脚本吗?
我已经检查过所有设定都跟你的是一样,也有尝试过直接把你那边的布甲、脚本、开箱事件复制到我的游戏上,但也是不成功

可是我在你的范例上测试是成功的,真奇怪,是哪里有问题呢……

另外大大你发布的装备扩展脚本小弟我也有使用过,想请问是必需重新开始游戏的吗?
我是使用你的脚本载入存档后发现用不了才使用现在这个脚本的 QQ
这个有点离题,需要的话我可以另开一个帖子 QQ
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2920
在线时间
713 小时
注册时间
2010-7-25
帖子
813

开拓者

7
发表于 2017-9-23 07:44:24 | 只看该作者
1是武器,2是盾牌,3是头盔,4是装饰,新增的从5开始计算,这个脚本我也在用,如果出问题了去看看你的扩张装备槽的脚本看看那里的设定有没有问题。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-17 16:34

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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