Project1

标题: 请问怎么把这个窗口往下移动一些。 [打印本页]

作者: a422740205    时间: 2016-5-18 04:05
标题: 请问怎么把这个窗口往下移动一些。
本帖最后由 a422740205 于 2016-5-18 18:23 编辑

说明提示一直跟着光标走,光标放在哪里,物品介绍就死死的贴着,还当着了物品名称。
请问怎么把这个往下调整啊?

作者: 喵呜喵5    时间: 2016-5-18 08:40
你好,我在全新的RM工程的商店界面中并不会出现类似的窗口
如果你不知道这个窗口是怎么来的,请新开一个工程,删掉额外插入的脚本
如果这个窗口是你自己主动添加的,请附上你添加的脚本
如果你觉得别人能够不看原脚本就回答你的问题,那我也默认你具有不需要具体解决方案,只需要解决思路的能力,这个问题的回答就是:找到该脚本更新窗口位置的语句,调整其 y 属性
作者: a422740205    时间: 2016-5-18 18:27
  1. =begin
  2. ==============================================================================
  3.   MESS 1.00 (全称:Make Equips Stornger System)
  4. -----------------------------------------------------------------------------
  5.   装备强化系统 1.00 by 804173948
  6. ==============================================================================
  7.   与其他大部分强化系统的区别:
  8.   
  9.     (并没有针对某些强化系统、不过按自己的喜好选择吧)
  10.    
  11.     1.增加属性方面
  12.       大部分强化系统强化装备时增加的属性都是用特定公式计算的,
  13.       这个可直接在数据库里面自己设定好每一个属性,不用被公式束缚、
  14.       另外还有一个好处是,因为是数据库里面的装备,
  15.       所以打怪也可以直接在数据库里设定掉落这些被强化的装备
  16.    
  17.     2.强化成功率和所需金钱方面
  18.       很多强化系统都是固定的一个值或几个值,
  19.       本脚本可以直接在数据库里设定、不同装备强化成功率以及所需金钱都不同
  20.    
  21.     3.所需物品方面
  22.       本强化系统可以用多个物品强化一个装备,
  23.       强化每一个装备所需的物品都可以自行设定,
  24.       (打个比方、比如说要强化一个红宝石做的项链、自然要用[红宝石]来强化它;
  25.       但是一个绿宝石做的项链、却用[红宝石]来强化、就会觉得很怪、所以本人觉得
  26.       强化每一个装备所需的物品都可以自行设定 更合理)
  27.       
  28.     4.物品槽
  29.       (个人感觉更像合成系统之类的、、、)
  30.       
  31.   使用说明:
  32.   
  33.     装备:
  34.    
  35.       1.使装备能够强化:
  36.           在备注上加上 [Strongable 强化后的ID]
  37.          
  38.           如:一个武器在备注加上[Strongable 100]
  39.           强化成功后就获得一个 第100号武器
  40.          
  41.       2.强化成功率:
  42.           在备注上加上 [Rate 成功率]
  43.           成功率是0~100之间
  44.          
  45.       3.强化所需金钱:
  46.           在备注上加上 [Gold 数值]
  47.          
  48.       4.强化所需物品:
  49.           在备注上加上 [item n 物品[n]ID]
  50.           n 代表所需的第 n 个物品
  51.          
  52.           如:一个武器需要 第10号物品2个,30号物品一个
  53.           就在备注上加上 [item 1 10]
  54.                         [item 2 10]
  55.                         [item 3 30]
  56.           详细的就直接看范例的数据库里吧、
  57.         
  58.     物品:
  59.    
  60.       1.能够增加成功率:
  61.           在备注上加上 [RateUP 成功率]
  62.           成功率最好是0~100之间
  63.           注意、所谓成功率不是直接加在装备成功率上
  64.           、、比如说、强化一个成功几率为 60% 的装备、使用能够提升 20% 成功率的物品
  65.           成功率不是变为 80,而是 72 ,72 = 60*(1+20%)
  66.       
  67.       2.能够防止装备随坏:
  68.           在备注上加上 [Prevent]
  69.          
  70.     界面:
  71.    
  72.       1.物品装备栏:
  73.           位于左方,选取物品和装备进行强化
  74.       2.物品信息栏:
  75.           中间最大的那个,显示装备物品信息和强化信息
  76.       3.所需物品提示:
  77.           中下方,显示强化某装备必须品
  78.       4.物品槽:
  79.           右下角,选定准备进行强化的物品
  80.       
  81.       ※5.提示框(最最重要的又是最最最容易被人忽略的):
  82.           左上方,提示你接下来要做什么、、、
  83.          
  84.   ※注意事项:
  85.       
  86.     1.此脚本要与“装备帮助增强”脚本共用
  87.     (“装备帮助增强”脚本我改动了、具体行数是 123 行到 133 行,
  88.       请复制到你的工程同一位置中)
  89.       
  90.     2.不知道、、、
  91.   
  92.   BUG、冲突:
  93.   
  94.     暂无- -、
  95.   
  96.   友情提示:
  97.     最好把窗口分辨率调到最大、、、
  98.       
  99.   
  100. =end
  101. module MESS
  102.   # 能够强化的标志
  103.   CanAugmentFlag = "Strongable"
  104.   # 强化成功的几率
  105.   SuccessfulAugmentRate = "Rate"
  106.   # 强化所需物品
  107.   UseItemForAugment = "Item"
  108.   # 强化所需金钱
  109.   MoneyForAugment = "Gold"
  110.   # 增加强化成功率的物品(0~100)
  111.   CanRateUP = "RateUP"
  112.   # 强化失败能避免原装备损坏的标志
  113.   PreventLost = "Prevent"
  114.   # 强化所需物品最大值
  115.   MaxItemUse = 5
  116. end
  117. class Scene_MESS < Scene_ItemBase
  118.   #--------------------------------------------------------------------------
  119.   # ● 开始处理
  120.   #--------------------------------------------------------------------------
  121.   def start
  122.     super
  123.     create_help_window
  124.     create_text_help_window
  125.     create_item_status_window
  126.     create_item_window
  127.     create_augment_setting_window
  128.     create_item_slot_window
  129.   end
  130.   #--------------------------------------------------------------------------
  131.   # ● 生成文字提示窗口
  132.   #--------------------------------------------------------------------------
  133.   def create_text_help_window
  134.     @text_help_window = Window_Help.new(1)
  135.     @text_help_window.width = 256
  136.     @text_help_window.set_text("选择装备进行强化")
  137.   end
  138.   #--------------------------------------------------------------------------
  139.   # ● 生成物品窗口
  140.   #--------------------------------------------------------------------------
  141.   def create_item_window
  142.     wy = @text_help_window.y + @text_help_window.height
  143.     ww = @text_help_window.width
  144.     wh = Graphics.height - wy
  145.     @item_window = Window_EquipList.new(0, wy, ww, wh)
  146.     @item_window.viewport = @viewport
  147.     @item_window.help_window = @item_status_window
  148.     @item_window.set_handler(:ok    , method(:on_item_ok))
  149.     @item_window.set_handler(:cancel, method(:on_item_cancel))
  150.   end
  151.   #--------------------------------------------------------------------------
  152.   # ● 生成物品状态窗口
  153.   #--------------------------------------------------------------------------
  154.   def create_item_status_window
  155.     wx = @text_help_window.width
  156.     wy = 0
  157.     ww = Graphics.width - wx
  158.     wh = Graphics.height / 3 * 2
  159.     @item_status_window = Window_EquipStatus2.new(wx, wy, ww, wh)
  160.     @item_status_window.viewport = @viewport
  161.   end
  162.   #--------------------------------------------------------------------------
  163.   # ● 生成强化设定窗口(中下窗口)
  164.   #--------------------------------------------------------------------------
  165.   def create_augment_setting_window
  166.     wx = @text_help_window.width
  167.     wy = @item_status_window.height
  168.     ww = (Graphics.width - wx)/2
  169.     wh = Graphics.height - wy
  170.     @augment_setting_window = Window_AugmentSet.new(wx, wy, ww, wh)
  171.     @augment_setting_window.viewport = @viewport
  172.     @item_status_window.relation_window = @augment_setting_window
  173.   end
  174.   #--------------------------------------------------------------------------
  175.   # ● 生成物品槽
  176.   #--------------------------------------------------------------------------
  177.   def create_item_slot_window
  178.     wx = @augment_setting_window.x + @augment_setting_window.width
  179.     wy = @augment_setting_window.y
  180.     ww = Graphics.width - wx
  181.     wh = Graphics.height - wy
  182.     @slot_window = Window_ItemSlot.new(wx, wy, ww, wh)
  183.     @slot_window.viewport = @viewport
  184.     @slot_window.help_window = @item_status_window
  185.     @slot_window.set_handler(:ok    , method(:on_slot_ok))
  186.     @slot_window.set_handler(:cancel, method(:on_slot_cancel))
  187.     @item_window.index = 0
  188.     @item_window.activate
  189.   end
  190.   #--------------------------------------------------------------------------
  191.   # ● 生成警示窗口
  192.   #--------------------------------------------------------------------------
  193.   def create_warn_window
  194.     ww = Graphics.width / 4 * 3
  195.     wx = (Graphics.width - ww) / 2
  196.     wy = 80
  197.     @warn_window = Window_Help.new(1)
  198.     @warn_window.x = wx
  199.     @warn_window.y = wy
  200.     @warn_window.width = ww
  201.     @warn_window.viewport = @viewport
  202.     @warn_window.hide
  203.   end
  204.   #--------------------------------------------------------------------------
  205.   # ● 物品“确定”
  206.   #--------------------------------------------------------------------------
  207.   def on_item_ok
  208.     if @item_window.item
  209.       if @item_window.itemtype == :equip
  210.         @item_window.equip = @item_status_window.equip
  211.         @text_help_window.set_text("选择物品进行强化")
  212.         @item_window.itemtype = :item
  213.         @item_window.refresh
  214.         @item_window.index = 0
  215.         @item_window.activate
  216.       elsif @item_window.itemtype == :item
  217.         @text_help_window.set_text("选择物品槽放置物品")
  218.         @slot_window.index = 0 if @slot_window.index < 0
  219.         @slot_window.activate
  220.       end
  221.     else
  222.       on_item_change
  223.     end
  224.   end
  225.   #--------------------------------------------------------------------------
  226.   # ● 物品“取消”
  227.   #--------------------------------------------------------------------------
  228.   def on_item_cancel(augmenting = false)
  229.     if @item_window.itemtype == :item
  230.       if @slot_window.data != [] && augmenting == false
  231.         MESS::MaxItemUse.times {|i| $game_party.gain_item(@slot_window.data[i],1) if @slot_window.data[i]}
  232.         MESS::MaxItemUse.times {|i| @slot_window.remove_item(i)}
  233.       end
  234.       @item_window.equip = nil
  235.       @text_help_window.set_text("选择装备进行强化")
  236.       @item_window.itemtype = :equip
  237.       @item_window.refresh
  238.       @item_window.index = 0
  239.       @item_status_window.clear(true) if augmenting
  240.       @item_window.activate
  241.     elsif @item_window.itemtype == :equip
  242.       SceneManager.return
  243.     end
  244.   end
  245.   #--------------------------------------------------------------------------
  246.   # ● 装备栏“确定”
  247.   #--------------------------------------------------------------------------
  248.   def on_slot_ok
  249.     if @slot_window.item != :augment
  250.       if @item_window.windowstatus == :owner
  251.         @text_help_window.set_text("选择物品进行强化")
  252.         @augment_setting_window.set_item(@item_status_window.equip)
  253.         item = @item_window.item
  254.         if item.porveup > 0
  255.           rate = @item_status_window.basic_rate.to_f
  256.           rate *= item.porveup/100.0
  257.           rate *= 10
  258.           rate.round
  259.           rate /= 10.0
  260.           @item_status_window.rate = @item_status_window.rate + rate
  261.         end
  262.         item = @slot_window.item
  263.         if item
  264.           if item.porveup > 0
  265.             rate = @item_status_window.basic_rate.to_f
  266.             rate *= item.porveup/100.0
  267.             rate *= 10
  268.             rate.round
  269.             rate /= 10.0
  270.             @item_status_window.rate = @item_status_window.rate - rate
  271.           end
  272.         end
  273.         $game_party.lose_item(@item_window.item,1)
  274.         $game_party.gain_item(@slot_window.item,1) if @slot_window.item
  275.         @slot_window.set_item(@item_window.item,@slot_window.index)
  276.         @item_status_window.refresh_aug_status
  277.         @item_window.refresh
  278.         @item_window.activate
  279.       elsif @item_window.windowstatus == :given
  280.         item = @slot_window.item
  281.         if item
  282.           if item.porveup > 0
  283.             rate = @item_status_window.basic_rate.to_f
  284.             rate *= item.porveup/100.0
  285.             rate *= 10
  286.             rate.round
  287.             rate /= 10.0
  288.             @item_status_window.rate = @item_status_window.rate - rate
  289.           end
  290.           $game_party.gain_item(item,1)
  291.           @slot_window.remove_item(@slot_window.index)
  292.         end
  293.         @item_status_window.refresh_aug_status
  294.         @item_window.refresh
  295.         @slot_window.activate
  296.       end
  297.     else
  298.       @text_help_window.set_text("正在进行强化")
  299.       augment
  300.     end
  301.   end
  302.   #--------------------------------------------------------------------------
  303.   # ● 装备栏“取消”
  304.   #--------------------------------------------------------------------------
  305.   def on_slot_cancel
  306.     if @item_window.windowstatus == :owner
  307.       @text_help_window.set_text("选择物品进行强化")
  308.       @item_window.refresh
  309.       @item_window.activate
  310.     elsif @item_window.windowstatus == :given
  311.       on_slot_change
  312.     end
  313.   end
  314.   
  315.   def augment
  316.     create_warn_window
  317.     equip = @item_status_window.equip
  318.     if equip
  319.       rate = @item_status_window.rate
  320.       gold = @item_status_window.gold
  321.       item = @slot_window.data.select {|item| item != :augment && item }
  322.       needitem = []
  323.       MESS::MaxItemUse.times {|i| needitem.push($data_items[equip.strongitem(i+1)]) if equip.strongitem(i+1) > 0}
  324.       # 检查必需品
  325.       needcount = 0
  326.       for i in 0 ... needitem.size
  327.         if item.include?(needitem[i])
  328.           needcount += 1
  329.           for a in 0 ... item.size
  330.             if item[a] == needitem[i]
  331.               item.delete_at(a)
  332.               break
  333.             end
  334.           end
  335.         end
  336.       end
  337. #~       needitem.size.times{|i| item.delete(needitem[i]) if item.include?(needitem[i])}
  338.       if needcount >= needitem.size
  339.         if $game_party.gold >= gold
  340.           $game_party.lose_gold(gold)
  341.           $game_party.lose_item(equip,1)
  342.           rand = rand(100)
  343.           if rand <= rate
  344.             new_item = nil
  345.             if equip.is_a?(RPG::Weapon)
  346.               new_item = $data_weapons[equip.strongto]
  347.             elsif equip.is_a?(RPG::Armor)
  348.               new_item = $data_armors[equip.strongto]
  349.             end
  350.             $game_party.gain_item(new_item,1)
  351.             BattleManager.play_battle_end_me
  352.             @warn_window.show
  353.             @warn_window.set_text("恭喜,装备升到了" + new_item.name + "!")
  354.             Graphics.wait(60)
  355.             @warn_window.hide
  356.             @slot_window.clear
  357.             @slot_window.refresh
  358.             on_slot_cancel
  359.             on_item_cancel(true)
  360.           else
  361.             prevent = false
  362.             for i in 0 ... item.size
  363.               if item[i].prevent?
  364.                 prevent = true
  365.                 break
  366.               end
  367.             end
  368.             if !prevent
  369.               $data_system.gameover_me.play
  370.               @warn_window.show
  371.               @warn_window.set_text("很遗憾,强化失败,装备消失")
  372.               Graphics.wait(60)
  373.               @warn_window.hide
  374.               @slot_window.clear
  375.               @slot_window.refresh
  376.               on_slot_cancel
  377.               on_item_cancel(true)
  378.             else
  379.               $game_party.gain_item(equip,1)
  380.               $data_system.gameover_me.play
  381.               @warn_window.show
  382.               @warn_window.set_text("强化失败,使用特殊道具,装备保存")
  383.               Graphics.wait(60)
  384.               @warn_window.hide
  385.               @slot_window.clear
  386.               @slot_window.refresh
  387.               on_slot_cancel
  388.               on_item_cancel(true)
  389.             end
  390.           end
  391.         else
  392.           Sound.play_buzzer
  393.           @warn_window.show
  394.           @warn_window.set_text("没有足够金钱")
  395.           Graphics.wait(30)
  396.           @warn_window.hide
  397.           on_slot_cancel
  398.         end
  399.       else
  400.         Sound.play_buzzer
  401.         @warn_window.show
  402.         @warn_window.set_text("没有足够物品")
  403.         Graphics.wait(30)
  404.         @warn_window.hide
  405.         on_slot_cancel
  406.       end
  407.     else
  408.       Sound.play_buzzer
  409.       @warn_window.show
  410.       @warn_window.set_text("没有选定装备")
  411.       Graphics.wait(30)
  412.       @warn_window.hide
  413.       on_slot_cancel
  414.     end
  415.   end
  416.   
  417.   def on_item_change
  418.     @text_help_window.set_text("移除物品槽物品")
  419.     @item_window.windowstatus = :given
  420.     @slot_window.refresh
  421.     @slot_window.activate
  422.   end
  423.   
  424.   def on_slot_change
  425.     @text_help_window.set_text("选择物品进行强化")
  426.     @item_window.windowstatus = :owner
  427.     @slot_window.index = 0
  428.     @item_window.refresh
  429.     @item_window.activate
  430.   end
  431.   #--------------------------------------------------------------------------
  432.   # ● 播放使用物品声效
  433.   #--------------------------------------------------------------------------
  434.   def play_se_for_item
  435.     Sound.play_use_item
  436.   end
  437.   #--------------------------------------------------------------------------
  438.   # ● 使用物品
  439.   #--------------------------------------------------------------------------
  440.   def use_item
  441.     super
  442.     @item_window.redraw_current_item
  443.   end
  444. end

  445. class Window_EquipList <  Window_ItemList
  446.   attr_accessor       :equip
  447.   attr_accessor       :itemtype
  448.   attr_accessor       :windowstatus
  449.   def initialize(x, y, width, height)
  450.     super
  451.     @data = []
  452.     @equip = nil
  453.     @itemtype = :equip
  454.     @windowstatus = :owner
  455.     refresh
  456.   end
  457.   def col_max
  458.     return 1
  459.   end
  460.   def can_use?(id)
  461.     for i in 1 .. MESS::MaxItemUse
  462.       return true if @equip.strongitem(i) == id
  463.     end
  464.     return false
  465.   end
  466.   def include?(item,times = 0)
  467.     if item
  468.       case @itemtype
  469.       when :equip
  470.         if !item.is_a?(RPG::Item)
  471.           item.strongto > 0
  472.         else
  473.           false
  474.         end
  475.       when :item
  476.         if item.is_a?(RPG::Item)
  477.           if times == 0
  478.             can_use?(item.id)
  479.           elsif times == 1
  480.             item.prevent? || item.porveup > 0
  481.           end
  482.         else
  483.           false
  484.         end
  485.       else
  486.         false
  487.       end
  488.     else
  489.       true
  490.     end
  491.   end
  492.   def enable?(item)
  493.     return true
  494.   end
  495.   def make_item_list
  496.     @data = []
  497.     case @itemtype
  498.     when :equip
  499.       @data = $game_party.all_items.select {|item| include?(item) }
  500.     when :item
  501.       2.times {|i| @data += $game_party.all_items.select{|item| include?(item,i) } }
  502.     end
  503.     @data.push(nil) if include?(nil)
  504.   end
  505.   def draw_item(index)
  506.     item = @data[index]
  507.     if item
  508.       rect = item_rect(index)
  509.       rect.width -= 4
  510.       draw_item_name(item, rect.x, rect.y, enable?(item))
  511.       draw_item_number(rect, item)
  512.     elsif index == @data.size - 1 && !item
  513.       rect = item_rect(index)
  514.       draw_text(rect.x, rect.y, self.width-(rect.x+update_padding)*2, line_height, "光标移到物品槽",1)
  515.     end
  516.   end
  517.   def update_help
  518.     @help_window.set_item(item)
  519.   end
  520. end
  521. class Window_EquipStatus2 < Window_Base
  522.   attr_reader       :equip
  523.   attr_accessor     :relation_window  
  524.   attr_accessor     :rate
  525.   attr_accessor     :gold
  526.   def initialize(x,y,w,h)
  527.     super(x,y,w,h)
  528.     @equip = nil
  529.     @relation_window = nil   
  530.     @rate = 0.0
  531.     @gold = 0
  532.   end  
  533.   def basic_rate
  534.     return @equip ? @equip.strongrate : nil
  535.   end
  536.   def item_rate
  537.     return basic_rate ? (@rate - basic_rate).to_i : nil
  538.   end
  539.   def basic_gold
  540.     return @equip ? @equip.strongmoney : nil
  541.   end
  542.   def draw_augment_status(x,y,width)
  543.     if @equip
  544.       contents.font.size -= 6
  545.       contents.font.color = Color.new(128,255,128)
  546.       rate = [@rate,100].min
  547.       rate *= 10
  548.       rate.round
  549.       rate /= 10.0
  550.       draw_text(x,y,width,line_height,"当前成功率 "+rate.to_s+" ( "+item_rate.to_s+" )")
  551.       contents.font.color = Color.new(255,255,128)
  552.       draw_text(x,y+line_height,width,line_height,Vocab::currency_unit+" 消耗 "+basic_gold.to_s)
  553.       contents.font.size += 6
  554.       contents.font.color = Color.new(255,255,255)
  555.     end
  556.   end
  557.   
  558.   def can_use?(id)
  559.     for i in 1 .. MESS::MaxItemUse
  560.       return true if @equip.strongitem(i) == id
  561.     end
  562.     return false
  563.   end
  564.   def clear(equip_nil = false)
  565.     contents.clear
  566.     @equip = nil if equip_nil
  567.   end
  568.   def draw_old_equip(x,y,width,item)
  569.     change_color(system_color)
  570.     draw_text(x, y, width,line_height,"原装备:")
  571.     contents.font.color = Color.new(237, 71, 71)
  572.     rect = Rect.new(x,y+line_height+4,width,24)
  573.     draw_item_name(item, rect.x, rect.y)
  574.     help = "\\c[27]" + Equipplus.getequiphelp(item)
  575.     contents.font.size -= 7
  576.     draw_text_ex(x,y+line_height+4+24+4,help,256,40,false)
  577.     contents.font.size += 7
  578.     change_color(normal_color)
  579.   end
  580.   def draw_new_equip(x,y,width,item)
  581.     change_color(system_color)
  582.     draw_text(x, y, width,line_height,"新装备:")
  583.     contents.font.color = Color.new(238, 79,142)
  584.     rect = Rect.new(x,y+line_height+4,width,24)
  585.     draw_item_name(item, rect.x, rect.y)
  586.     help = "\\c[29]" + Equipplus.getequiphelp(item)
  587.     contents.font.size -= 7
  588.     draw_text_ex(x,y+line_height+4+24+4,help,256,40,false)
  589.     contents.font.size += 7
  590.   end
  591.   def draw_item_effect(x,y,width,item)
  592.     change_color(system_color)
  593.     draw_text(x, y, width,line_height,"道具效果:")
  594.     rect = Rect.new(x,y+line_height+4,width,24)
  595.     draw_item_name(item, rect.x, rect.y)
  596.     help = make_item_help(item)
  597.     contents.font.size -= 4
  598.     draw_text_ex(x,y+line_height+4+24+4,help,256,40,false)
  599.     contents.font.size += 4
  600.     change_color(normal_color)
  601.   end
  602.   def make_item_help(item)
  603.     help = ""
  604.     if item.porveup > 0
  605.       help += "\\c[24]增加成功率:"+item.porveup.to_s+"% \n"
  606.     end
  607.     if item.prevent?
  608.       help += "\\c[13]防止装备损坏 \n"
  609.     end
  610.     if can_use?(item.id)
  611.       help += "\\c[2]必需品 \n"
  612.     end
  613.     return help
  614.   end  
  615.   def set_item(item)
  616.     contents.clear
  617.     new_item = nil
  618.     if item.is_a?(RPG::EquipItem)
  619.       @equip = item
  620.       @rate = basic_rate
  621.       @gold = basic_gold
  622.       set_relation_window
  623.       draw_old_equip(4,0,(self.width-(4+update_padding)*2)/2,item)
  624.     elsif item.is_a?(RPG::Item)         
  625.       draw_item_effect(4,0,(self.width-(4+update_padding)*2)/2,item)
  626.       refresh_aug_status if @rate > 0.0 && @gold > 0
  627.     end
  628.     if @equip.is_a?(RPG::Weapon)
  629.         new_item = $data_weapons[@equip.strongto]
  630.     elsif @equip.is_a?(RPG::Armor)
  631.         new_item = $data_armors[@equip.strongto]
  632.     end
  633.     draw_new_equip(8+(self.width-(4+update_padding)*2)/2,0,(self.width-(4+update_padding)*2)/2,new_item) if new_item
  634.   end
  635.   def set_relation_window
  636.     @relation_window.set_item(@equip) if @relation_window
  637.   end
  638.   def refresh_aug_status
  639.     contents.clear_rect(4,self.height - line_height*3,(self.width-(3+update_padding)*2)/2,line_height*2)
  640.     draw_augment_status(4,self.height - line_height*3,(self.width-(3+update_padding)*2)/2)
  641.   end
  642. end

  643. class Window_AugmentSet < Window_Base
  644.   def initialize(x,y,w,h)
  645.     super(x,y,w,h)
  646.     @equip = nil
  647.   end
  648.   def draw_equip_need(x,y,width,item)
  649.     useable = []
  650.     change_color(system_color)
  651.     contents.font.size -= 2
  652.     draw_text(x,y,width,line_height,"必需品")
  653.     change_color(normal_color)
  654.     for i in 1 .. MESS::MaxItemUse
  655.       if @equip.strongitem(i) > 0
  656.         useable.push($data_items[@equip.strongitem(i)])
  657.         draw_item_name(useable[i-1], x, y+i*(line_height+2))
  658.       end
  659.     end
  660.     contents.font.size += 2
  661.   end
  662.   def set_item(item)
  663.     contents.clear
  664.     if item
  665.       @equip = item
  666.       draw_equip_need(4,0,(self.width-(4+update_padding)*2)/2,item)
  667.     end
  668.   end
  669. end
  670. class Window_ItemSlot < Window_Selectable
  671.   attr_reader       :data
  672.   def initialize(x, y, width,height)
  673.     super(x, y, width, height)
  674.     @data = []
  675.     refresh
  676.   end
  677.   def clear
  678.     @data = []
  679.   end
  680.   def item_max
  681.     return MESS::MaxItemUse + 1
  682.   end
  683.   def item
  684.     @data && index >= 0 ? @data[index] : nil
  685.   end
  686.   def set_item(item,id)
  687.     @data[id] = item
  688.     refresh
  689.   end
  690.   def remove_item(index)
  691.     @data[index] = nil
  692.     refresh
  693.   end
  694.   def draw_item(index)
  695.     if index < MESS::MaxItemUse
  696.       contents.font.size -= 2
  697.       rect = item_rect_for_text(index)
  698.       change_color(system_color, enable?(index))
  699.       draw_text(rect.x, rect.y, 50, line_height, slot_name(index))
  700.       draw_item_name(@data[index], rect.x + 50, rect.y, enable?(index)) if @data[index]
  701.       change_color(normal_color)
  702.       contents.font.size += 2
  703.     elsif index == MESS::MaxItemUse
  704.       rect = item_rect_for_text(index)
  705.       draw_text(rect.x, rect.y, self.width-(rect.x+update_padding)*2, line_height, "强化装备",1)
  706.       @data[index] = :augment
  707.     end
  708.   end
  709.   def slot_name(index)
  710.     return "材料 "+(index+1).to_s
  711.   end
  712.   def enable?(index)
  713.     return true
  714.   end
  715.   def update_help
  716.     super
  717.     @help_window.set_item(item) if @help_window
  718.   end
  719. end
复制代码
  1. #encoding:utf-8
  2. #==============================================================================
  3. # ■ 装备说明增强 By wyongcan
  4. #==============================================================================
  5. module Equipplus
  6.   CODE ={
  7.     11 => "属性抗性",
  8.     12 => "弱化抗性",
  9.     13 => "状态抗性",
  10.     14 => "状态免疫",
  11.     21 => "普通能力",
  12.     22 => "添加能力",
  13.     23 => "特殊能力",
  14.     31 => "攻击附带属性",
  15.     32 => "攻击附带状态",
  16.     33 => "修正攻击速度",
  17.     34 => "添加攻击次数",
  18.     41 => "添加技能类型",
  19.     42 => "禁用技能类型",
  20.     43 => "添加技能",
  21.     44 => "禁用技能",
  22.     51 => "可装备武器类型",
  23.     52 => "可装备护甲类型",
  24.     53 => "固定装备",
  25.     54 => "禁用装备",
  26.     55 => "装备风格",
  27.     61 => "添加行动次数",
  28.     62 => "特殊标志",
  29.     63 => "消失效果",
  30.     64 => "队伍能力"}
  31.   #特殊标志
  32.   FLAG ={
  33.                 0 => "自动战斗",
  34.                 1 => "擅长防御",
  35.                 2 => "保护弱者",
  36.                 3 => "特技专注"}
  37.   #普通能力
  38.         PARAM ={
  39.                 0 => "最大HP",
  40.                 1 => "最大MP",
  41.                 2 => "物理攻击",
  42.                 3 => "物理防御",
  43.                 4 => "魔法攻击",
  44.                 5 => "魔法防御",
  45.                 6 => "敏 捷 值",
  46.                 7 => "幸 运 值"}
  47.   #添加能力
  48.         XPARAM ={
  49.                 0 => "物理命中几率:",
  50.                 1 => "物理闪避几率:",
  51.                 2 => "必杀几率:",
  52.                 3 => "必杀闪避几率:",
  53.                 4 => "魔法闪避几率:",
  54.                 5 => "魔法反射几率:",
  55.                 6 => "物理反击几率:",
  56.                 7 => "体力值再生速度:",
  57.                 8 => "魔力值再生速度:",
  58.                 9 => "特技值再生速度:"}
  59.   #特殊能力
  60.         SPARAM ={
  61.                 0 => "受到攻击的几率",
  62.                 1 => "防御效果比率",
  63.                 2 => "恢复效果比率",
  64.                 3 => "药理知识",
  65.                 4 => "MP消费率",
  66.                 5 => "TP消耗率",
  67.                 6 => "物理伤害加成",
  68.                 7 => "魔法伤害加成",
  69.                 8 => "地形伤害加成",
  70.                 9 => "经验获得加成"}
  71.         @队伍能力 ={
  72.                 0 => "遇敌几率减半",
  73.                 1 => "随机遇敌无效",
  74.                 2 => "敌人偷袭无效",
  75.                 3 => "先制攻击几率上升",
  76.                 4 => "获得金钱数量双倍",
  77.                 5 => "物品掉落几率双倍"}
  78.   def self.equiphelpready
  79.     @状态 = {}
  80.     @武器类型 = {}
  81.     @防具类型 = {}
  82.     @属性 = {}
  83.     $data_states.each{|x| @状态[x.id] = x.name if x != nil}
  84.     elements = $data_system.elements
  85.     weapon_types = $data_system.weapon_types
  86.     armor_types = $data_system.armor_types
  87.     elements.each_with_index{|x,y| @属性[y] = x if x != ""}
  88.     weapon_types.each_with_index{|x,y| @武器类型[y] = x if x != ""}
  89.     armor_types.each_with_index{|x,y| @防具类型[y] = x if x != ""}
  90.   end
  91.   def self.getequiphelp(equip)
  92.     help = ""
  93.     param = []
  94.     equip.params.each_with_index{|x,y| param.push([PARAM[y],x])}
  95.     param = param.select{|x| x[1] != 0}
  96.     param.each{|x| help += x[0] + ":" + x[1].to_int.to_s + "\n"}
  97.     features = equip.features
  98.     features.select{|x| x.code == 55}.each{|x| help += CODE[x.code] + ":双持武器" + "\n"}
  99.     features.select{|x| x.code == 11}.each{|x| help += CODE[x.code] + ":" + @属性[x.data_id] + "*" + x.value.to_s + "\n"}
  100.     features.select{|x| x.code == 12}.each{|x| help += CODE[x.code] + ":" + PARAM[x.data_id] + "*" + x.value.to_s + "\n"}
  101.     features.select{|x| x.code == 13}.each{|x| help += CODE[x.code] + ":" + @状态[x.data_id] + "*" + x.value.to_s + "\n"}
  102.     features.select{|x| x.code == 14}.each{|x| help += CODE[x.code] + ":" + @状态[x.data_id] + "\n"}
  103.     features.select{|x| x.code == 31}.each{|x| help += CODE[x.code] + ":" + @属性[x.data_id] + "\n"}
  104.     features.select{|x| x.code == 32}.each{|x| help += CODE[x.code] + ":" + @状态[x.data_id] + "+" + x.value.to_s + "\n"}
  105.     features.select{|x| x.code == 33}.each{|x| help += CODE[x.code] + ":" + x.value.to_s + "\n"}
  106.     features.select{|x| x.code == 34}.each{|x| help += CODE[x.code] + ":" + x.value.to_s + "\n"}
  107.     features.select{|x| x.code == 41}.each{|x| help += CODE[x.code] + ":" + (x.data_id == 1 ? "特技" : "魔法")  + "\n"}
  108.     features.select{|x| x.code == 42}.each{|x| help += CODE[x.code] + ":" + (x.data_id == 1 ? "特技" : "魔法")  + "\n"}
  109.     features.select{|x| x.code == 43}.each{|x| help += CODE[x.code] + ":" + $data_skills[x.data_id].name  + "\n"}
  110.     features.select{|x| x.code == 44}.each{|x| help += CODE[x.code] + ":" + $data_skills[x.data_id].name  + "\n"}
  111.     features.select{|x| x.code == 51}.each{|x| help += CODE[x.code] + ":" + @武器类型[x.data_id]  + "\n"}
  112.     features.select{|x| x.code == 52}.each{|x| help += CODE[x.code] + ":" + @防具类型[x.data_id]  + "\n"}
  113.     features.select{|x| x.code == 61}.each{|x| help += CODE[x.code] + ":" + x.value.to_s  + "\n"}
  114.     features.select{|x| x.code == 62}.each{|x| help += CODE[x.code] + ":" + FLAG[x.data_id]  + "\n"}
  115.     features.select{|x| x.code == 64}.each{|x| help += CODE[x.code] + ":" + @队伍能力[x.data_id]  + "\n"}
  116.     featuresparam = []
  117.     featuresparam.push features.select{|x| x.code == 21}
  118.     featuresparam.push features.select{|x| x.code == 22}
  119.     featuresparam.push features.select{|x| x.code == 23}
  120.     featuresparam[0].each{|x| help += PARAM[x.data_id] + "*" + x.value.to_s + "\n"}
  121.     featuresparam[1].each{|x| help += XPARAM[x.data_id] + x.value.to_s + "\n"}
  122.     featuresparam[2].each{|x| help += SPARAM[x.data_id] + "*" + x.value.to_s + "\n"}
  123.   # ======== 改动部分 ========
  124.     if equip.strongto > 0
  125.       strong = nil
  126.       if equip.is_a?(RPG::Weapon)
  127.         strong = $data_weapons[equip.strongto]
  128.       elsif equip.is_a?(RPG::Armor)
  129.         strong = $data_armors[equip.strongto]
  130.       end
  131.       help += "可强化到 " + strong.name + "\n"
  132.     end
  133.   # ======== 改动部分 ========
  134.     help
  135.   end
  136.   def self.getline(text,maxtext)
  137.     xtext = []
  138.     line = 0
  139.     text.each_line{|x| xtext.push x.sub(/\n/){}}
  140.     xtext.each{|x| x.size % maxtext != 0 ? line += x.size / maxtext + 1 : line += x.size / maxtext}
  141.     line
  142.   end
  143. end
  144. #==============================================================================
  145. # ■ Window_Help
  146. #------------------------------------------------------------------------------
  147. #  显示特技和物品等的说明、以及角色状态的窗口
  148. #==============================================================================

  149. class Window_Help2 < Window_Base
  150.   #--------------------------------------------------------------------------
  151.   # ● 初始化对象
  152.   #--------------------------------------------------------------------------
  153.   def initialize(line_number = 0)
  154.     super(0, 0, 210, 0)
  155.     self.z = 150
  156.     contents.font.size = 14
  157.     hide
  158.   end
  159.   #--------------------------------------------------------------------------
  160.   # ● 设置内容
  161.   #--------------------------------------------------------------------------
  162.   def set_text(text)
  163.       @text = text
  164.       refresh
  165.   end
  166.   #--------------------------------------------------------------------------
  167.   # ● 清除
  168.   #--------------------------------------------------------------------------
  169.   def clear
  170.     set_text("")
  171.   end
  172.   #--------------------------------------------------------------------------
  173.   # ● 更新帮助位置
  174.   #--------------------------------------------------------------------------
  175.   def uppos(index,rect,window)
  176.     self.height = fitting_height2(Equipplus.getline(@xtext,13))
  177.     create_contents
  178.     contents.font.size = 14
  179.     rect.x -= window.ox
  180.     rect.y -= window.oy
  181.     ax = rect.x + rect.width + 10
  182.     ax = rect.x - self.width + 10 if ax + self.width > window.width + 10
  183.     ax += window.x
  184.     ax = 0 if ax < 0
  185.     ay = rect.y + rect.height
  186.     ay = rect.y - self.height if ay + self.height > window.height
  187.     ay += window.y
  188.     ay = 0 if ay < 0
  189.     self.x = ax
  190.     self.y = ay
  191.     set_text(@xtext)
  192.     show
  193.   end
  194.   #--------------------------------------------------------------------------
  195.   # ● 设置物品
  196.   #     item : 技能、物品等
  197.   #--------------------------------------------------------------------------
  198.   def set_item(item)
  199.     if item == nil
  200.       set_text("")
  201.       return
  202.     end
  203.     @xtext = ""
  204.     @xtext = "名称:" + item.name + "\n"
  205.     @xtext += "介绍:" + item.description + "\n"
  206.     @xtext += "价格:" + item.price.to_s + "\n" if item.is_a?(RPG::EquipItem) || item.is_a?(RPG::Item)
  207.     @xtext += Equipplus.getequiphelp(item) if item.is_a?(RPG::EquipItem)
  208.     @xtext = @xtext[0,@text.size - 2] if @xtext[@xtext.size - 2,2] == "\n"
  209.   end
  210.   #--------------------------------------------------------------------------
  211.   # ● 刷新
  212.   #--------------------------------------------------------------------------
  213.   def refresh
  214.     contents.clear
  215.     hide if @text == ""
  216.     draw_text_ex(4, 0, @text,width,40,false)
  217.   end
  218. end
  219. class Window_Base < Window
  220.   #--------------------------------------------------------------------------
  221.   # ● 计算窗口显示指定行数时的应用高度2*************************
  222.   #--------------------------------------------------------------------------
  223.   def fitting_height2(line_number)
  224.     line_number * contents.font.size + standard_padding * 2
  225.   end
  226. #~ draw_text_ex的增强,使其可以自动换行  原作者:叶子 修改:wyongcan
  227.   #--------------------------------------------------------------------------
  228.   # ● 绘制带有控制符的文本内容
  229.   #   如果传递了width参数的话,会自动换行
  230.   #--------------------------------------------------------------------------
  231.   def draw_text_ex(x, y, text, width = nil,textwidth = nil,normalfont = true)
  232.     reset_font_settings if normalfont == true
  233.     text = convert_escape_characters(text)
  234.     pos = {:x => x, :y => y, :new_x => x, :height => calc_line_height(text)}
  235.     if width != nil
  236.       pos[:height] = contents.font.size
  237.       pos[:width] = width
  238.       pos[:textwidth] = textwidth
  239.     end
  240.     process_character(text.slice!(0, 1), text, pos) until text.empty?
  241.   end
  242.   #--------------------------------------------------------------------------
  243.   # ● 文字的处理
  244.   #     c    : 文字
  245.   #     text : 绘制处理中的字符串缓存(字符串可能会被修改)
  246.   #     pos  : 绘制位置 {:x, :y, :new_x, :height}
  247.   #--------------------------------------------------------------------------
  248.   def process_character(c, text, pos)
  249.     case c
  250.     when "\r"   # 回车
  251.       return
  252.     when "\n"   # 换行
  253.       process_new_line(text, pos)
  254.     when "\f"   # 翻页
  255.       process_new_page(text, pos)
  256.     when "\e"   # 控制符
  257.       process_escape_character(obtain_escape_code(text), text, pos)
  258.     else        # 普通文字
  259.       pos[:textwidth] == nil ? text_width = text_size(c).width : text_width = pos[:textwidth]
  260.       if pos[:width] != nil && pos[:x] - pos[:new_x] + text_width > pos[:width]
  261.         process_new_line(text, pos)
  262.       end
  263.       process_normal_character(c, pos)
  264.     end
  265.   end
  266. end

  267. class Window_ItemList < Window_Selectable
  268.   #--------------------------------------------------------------------------
  269.   # ● 更新帮助内容
  270.   #--------------------------------------------------------------------------
  271.   def update_help
  272.     @help_window.set_item(item)
  273.     @help_window.uppos(index,item_rect(index),self) if index != -1 && item != nil
  274.   end
  275. end

  276. class Window_SkillList < Window_Selectable
  277.   #--------------------------------------------------------------------------
  278.   # ● 更新帮助内容
  279.   #--------------------------------------------------------------------------
  280.   def update_help
  281.     @help_window.set_item(item)
  282.     @help_window.uppos(index,item_rect(index),self) if index != -1 && item != nil
  283.   end
  284. end

  285. class Window_ShopBuy < Window_Selectable
  286.   #--------------------------------------------------------------------------
  287.   # ● 更新帮助内容
  288.   #--------------------------------------------------------------------------
  289.   def update_help
  290.     @help_window.set_item(item) if @help_window
  291.     @help_window.uppos(index,item_rect(index),self) if index != -1 && item != nil && @help_window
  292.     @status_window.item = item if @status_window
  293.   end
  294. end

  295. class Window_EquipSlot < Window_Selectable
  296.   #--------------------------------------------------------------------------
  297.   # ● 更新帮助内容
  298.   #--------------------------------------------------------------------------
  299.   def update_help
  300.     super
  301.     @help_window.set_item(item) if @help_window
  302.     @help_window.uppos(index,item_rect(index),self) if index != -1 && item != nil && @help_window
  303.     @status_window.set_temp_actor(nil) if @status_window
  304.   end
  305. end

  306. class Scene_Shop < Scene_MenuBase
  307.         alias on_sell_ok_old on_sell_ok
  308.         def on_sell_ok
  309.                 on_sell_ok_old
  310.                 @help_window.hide
  311.         end
  312.         alias on_buy_ok_old on_buy_ok
  313.         def on_buy_ok
  314.                 on_buy_ok_old
  315.                 @help_window.hide
  316.         end
  317.         alias on_number_ok_old on_number_ok
  318.         def on_number_ok
  319.                 on_number_ok_old
  320.     @help_window.refresh
  321.                 @help_window.show
  322.         end
  323.         alias on_number_cancel_old on_number_cancel
  324.         def on_number_cancel
  325.                 on_number_cancel_old
  326.     @help_window.refresh
  327.                 @help_window.show
  328.         end
  329. end

  330. class Scene_Title < Scene_Base
  331.   alias start_old start
  332.   def start
  333.     start_old
  334.     Equipplus.equiphelpready
  335.   end
  336. end

  337. class Scene_ItemBase < Scene_MenuBase
  338.         alias old_on_actor_cancel on_actor_cancel
  339.   def on_actor_cancel
  340.     old_on_actor_cancel
  341.         @help_window.refresh
  342.   end
  343.         alias old_on_actor_ok on_actor_ok
  344.   def on_actor_ok
  345.     old_on_actor_ok
  346.         @help_window.refresh
  347.   end
  348. end

  349. class Window_Base < Window
  350.         alias old_process_new_line process_new_line
  351.         def process_new_line(text, pos)
  352.     old_process_new_line(text, pos)
  353.                 pos[:height] = contents.font.size if pos[:width] != nil
  354.         end
  355. end

  356. class Scene_MenuBase < Scene_Base
  357.   def create_help_window
  358.     @help_window = Window_Help2.new
  359.     @help_window.viewport = @viewport
  360.   end
  361. end
  362. class Scene_Battle < Scene_Base
  363.   def create_help_window
  364.     @help_window = Window_Help2.new
  365.     @help_window.visible = false
  366.   end
  367. end
复制代码

作者: a422740205    时间: 2016-5-18 18:29
喵呜喵5 发表于 2016-5-18 08:40
你好,我在全新的RM工程的商店界面中并不会出现类似的窗口
如果你不知道这个窗口是怎么来的,请新开一个工 ...

抱歉大神,代码已补,昨天一直在学习PS,没注意论坛,实在抱歉。
作者: WantMy蕙    时间: 2016-5-18 18:35
修改窗口self.y值
作者: a422740205    时间: 2016-5-18 19:54
WantMy蕙 发表于 2016-5-18 18:35
修改窗口self.y值

抱歉,请问具体大概改哪一行,我是新手,麻烦大神说明确一些,谢谢了
作者: a422740205    时间: 2016-5-18 20:19
@VIPArcher 每个数值都试着改了一遍,可是窗口没有动。
作者: 御曹司    时间: 2016-5-18 21:06
181和188行试着加减一些数值看看
作者: a422740205    时间: 2016-5-18 21:45
御曹司 发表于 2016-5-18 21:06
181和188行试着加减一些数值看看

怎么加啊,是加代码还是加数字。。毕竟不是填空题。。。
大大可以给我几个例子吗,我试着改改。。
作者: a422740205    时间: 2016-5-19 01:30
@御曹司 谢谢大神, 解决了




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1