Project1

标题: 求教一下商店界面修改 [打印本页]

作者: lostding    时间: 2011-8-17 20:18
标题: 求教一下商店界面修改



请问一下在脚本里怎么修改1号区域和2号区域的窗口大小和位置。
其他区域的我倒是会改的,就这两个找不到改的地方,求教1和2窗口修改的位置dsu_plus_rewardpost_czw
作者: orzfly    时间: 2011-8-17 20:26
1号是 Window_ShopBuy
2号是 Window_ShopStatus
作者: 574656549    时间: 2011-8-17 22:52
提示: 作者被禁止或删除 内容自动屏蔽
作者: 2578699    时间: 2011-8-18 09:48
本帖最后由 2578699 于 2011-8-18 09:50 编辑

一号窗口修改的地方:Window_ShopBuy13行super(0, 128, 368, 352)
      如果是卖出模式:Window_ShopSell12行super(0, 128, 640, 352)
二号窗口修改的地方:Window_ShopStatus12行super(368, 128, 272, 352)
提示:如果修改了窗口大小,可能还需要修改描绘位置的说。
其实看脚本的注释都可以自己来改的
作者: lostding    时间: 2011-8-18 10:06
2578699 发表于 2011-8-18 09:48
一号窗口修改的地方:Window_ShopBuy13行super(0, 128, 368, 352)
      如果是卖出模式:Window_ShopSell1 ...

知道了,但还有个问题就是我调整了个位置及大小,想加入一些其他窗口用来介绍商店的,比如5号区域上在加一个框框,只要能显示文字即可,这该怎么做??
作者: 2578699    时间: 2011-8-18 10:28
本帖最后由 2578699 于 2011-8-18 10:40 编辑
lostding 发表于 2011-8-18 10:06
知道了,但还有个问题就是我调整了个位置及大小,想加入一些其他窗口用来介绍商店的,比如5号区域上在加 ...


新建个脚本,名字自定。
打上
  1. #==============================================================================
  2. # ■ Window_ShopMessage
  3. #------------------------------------------------------------------------------
  4. #  商店简介,对吗?额。
  5. #==============================================================================

  6. class Window_ShopMessage < Window_Base
  7.   #--------------------------------------------------------------------------
  8.   # ● 初始化对像
  9.   #--------------------------------------------------------------------------
  10.   def initialize
  11.     super(420, 0, 220, 64)
  12.     self.contents = Bitmap.new(width - 32, height - 32)
  13.     rect = Rect.new(4, -6, self.contents.width - 8, 32)
  14.     self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
  15.     self.contents.draw_text(rect, '简介什么自己写就好了')
  16.   end
  17. end
复制代码
再把Scene_Shop的脚本替换为
  1. #==============================================================================
  2. # ■ Scene_Shop
  3. #------------------------------------------------------------------------------
  4. #  处理商店画面的类。
  5. #==============================================================================

  6. class Scene_Shop
  7.   #--------------------------------------------------------------------------
  8.   # ● 主处理
  9.   #--------------------------------------------------------------------------
  10.   def main
  11.     # 生成帮助窗口
  12.     @help_window = Window_Help.new
  13.     @ShopMessage_window = Window_ShopMessage.new
  14.     # 生成指令窗口
  15.     @command_window = Window_ShopCommand.new
  16.     # 生成金钱窗口
  17.     @gold_window = Window_Gold.new
  18.     @gold_window.x = 480
  19.     @gold_window.y = 64
  20.     # 生成时间窗口
  21.     @dummy_window = Window_Base.new(0, 128, 640, 352)
  22.     # 生成购买窗口
  23.     @buy_window = Window_ShopBuy.new($game_temp.shop_goods)
  24.     @buy_window.active = false
  25.     @buy_window.visible = false
  26.     @buy_window.help_window = @help_window
  27.     # 生成卖出窗口
  28.     @sell_window = Window_ShopSell.new
  29.     @sell_window.active = false
  30.     @sell_window.visible = false
  31.     @sell_window.help_window = @help_window
  32.     # 生成数量输入窗口
  33.     @number_window = Window_ShopNumber.new
  34.     @number_window.active = false
  35.     @number_window.visible = false
  36.     # 生成状态窗口
  37.     @status_window = Window_ShopStatus.new
  38.     @status_window.visible = false
  39.     # 执行过渡
  40.     Graphics.transition
  41.     # 主循环
  42.     loop do
  43.       # 刷新游戏画面
  44.       Graphics.update
  45.       # 刷新输入信息
  46.       Input.update
  47.       # 刷新画面
  48.       update
  49.       # 如果画面切换的话就中断循环
  50.       if $scene != self
  51.         break
  52.       end
  53.     end
  54.     # 准备过渡
  55.     Graphics.freeze
  56.     # 释放窗口
  57.     @help_window.dispose
  58.     @command_window.dispose
  59.     @gold_window.dispose
  60.     @dummy_window.dispose
  61.     @buy_window.dispose
  62.     @sell_window.dispose
  63.     @number_window.dispose
  64.     @status_window.dispose
  65.   end
  66.   #--------------------------------------------------------------------------
  67.   # ● 刷新画面
  68.   #--------------------------------------------------------------------------
  69.   def update
  70.     # 刷新窗口
  71.     @help_window.update
  72.     @command_window.update
  73.     @gold_window.update
  74.     @dummy_window.update
  75.     @buy_window.update
  76.     @sell_window.update
  77.     @number_window.update
  78.     @status_window.update
  79.     # 指令窗口激活的情况下: 调用 update_command
  80.     if @command_window.active
  81.       update_command
  82.       return
  83.     end
  84.     # 购买窗口激活的情况下: 调用 update_buy
  85.     if @buy_window.active
  86.       update_buy
  87.       return
  88.     end
  89.     # 卖出窗口激活的情况下: 调用 update_sell
  90.     if @sell_window.active
  91.       update_sell
  92.       return
  93.     end
  94.     # 个数输入窗口激活的情况下: 调用 update_number
  95.     if @number_window.active
  96.       update_number
  97.       return
  98.     end
  99.   end
  100.   #--------------------------------------------------------------------------
  101.   # ● 刷新画面 (指令窗口激活的情况下)
  102.   #--------------------------------------------------------------------------
  103.   def update_command
  104.     # 按下 B 键的情况下
  105.     if Input.trigger?(Input::B)
  106.       # 演奏取消 SE
  107.       $game_system.se_play($data_system.cancel_se)
  108.       # 切换到地图画面
  109.       $scene = Scene_Map.new
  110.       return
  111.     end
  112.     # 按下 C 键的情况下
  113.     if Input.trigger?(Input::C)
  114.       # 命令窗口光标位置分支
  115.       case @command_window.index
  116.       when 0  # 购买
  117.         # 演奏确定 SE
  118.         $game_system.se_play($data_system.decision_se)
  119.         # 窗口状态转向购买模式
  120.         @command_window.active = false
  121.         @dummy_window.visible = false
  122.         @buy_window.active = true
  123.         @buy_window.visible = true
  124.         @buy_window.refresh
  125.         @status_window.visible = true
  126.       when 1  # 卖出
  127.         # 演奏确定 SE
  128.         $game_system.se_play($data_system.decision_se)
  129.         # 窗口状态转向卖出模式
  130.         @command_window.active = false
  131.         @dummy_window.visible = false
  132.         @sell_window.active = true
  133.         @sell_window.visible = true
  134.         @sell_window.refresh
  135.       when 2  # 取消
  136.         # 演奏确定 SE
  137.         $game_system.se_play($data_system.decision_se)
  138.         # 切换到地图画面
  139.         $scene = Scene_Map.new
  140.       end
  141.       return
  142.     end
  143.   end
  144.   #--------------------------------------------------------------------------
  145.   # ● 刷新画面 (购买窗口激活的情况下)
  146.   #--------------------------------------------------------------------------
  147.   def update_buy
  148.     # 设置状态窗口的物品
  149.     @status_window.item = @buy_window.item
  150.     # 按下 B 键的情况下
  151.     if Input.trigger?(Input::B)
  152.       # 演奏取消 SE
  153.       $game_system.se_play($data_system.cancel_se)
  154.       # 窗口状态转向初期模式
  155.       @command_window.active = true
  156.       @dummy_window.visible = true
  157.       @buy_window.active = false
  158.       @buy_window.visible = false
  159.       @status_window.visible = false
  160.       @status_window.item = nil
  161.       # 删除帮助文本
  162.       @help_window.set_text("")
  163.       return
  164.     end
  165.     # 按下 C 键的情况下
  166.     if Input.trigger?(Input::C)
  167.       # 获取物品
  168.       @item = @buy_window.item
  169.       # 物品无效的情况下、或者价格在所持金以上的情况下
  170.       if @item == nil or @item.price > $game_party.gold
  171.         # 演奏冻结 SE
  172.         $game_system.se_play($data_system.buzzer_se)
  173.         return
  174.       end
  175.       # 获取物品所持数
  176.       case @item
  177.       when RPG::Item
  178.         number = $game_party.item_number(@item.id)
  179.       when RPG::Weapon
  180.         number = $game_party.weapon_number(@item.id)
  181.       when RPG::Armor
  182.         number = $game_party.armor_number(@item.id)
  183.       end
  184.       # 如果已经拥有了 99 个情况下
  185.       if number == 99
  186.         # 演奏冻结 SE
  187.         $game_system.se_play($data_system.buzzer_se)
  188.         return
  189.       end
  190.       # 演奏确定 SE
  191.       $game_system.se_play($data_system.decision_se)
  192.       # 计算可以最多购买的数量
  193.       max = @item.price == 0 ? 99 : $game_party.gold / @item.price
  194.       max = [max, 99 - number].min
  195.       # 窗口状态转向数值输入模式
  196.       @buy_window.active = false
  197.       @buy_window.visible = false
  198.       @number_window.set(@item, max, @item.price)
  199.       @number_window.active = true
  200.       @number_window.visible = true
  201.     end
  202.   end
  203.   #--------------------------------------------------------------------------
  204.   # ● 画面更新 (卖出窗口激活的情况下)
  205.   #--------------------------------------------------------------------------
  206.   def update_sell
  207.     # 按下 B 键的情况下
  208.     if Input.trigger?(Input::B)
  209.       # 演奏取消 SE
  210.       $game_system.se_play($data_system.cancel_se)
  211.       # 窗口状态转向初期模式
  212.       @command_window.active = true
  213.       @dummy_window.visible = true
  214.       @sell_window.active = false
  215.       @sell_window.visible = false
  216.       @status_window.item = nil
  217.       # 删除帮助文本
  218.       @help_window.set_text("")
  219.       return
  220.     end
  221.     # 按下 C 键的情况下
  222.     if Input.trigger?(Input::C)
  223.       # 获取物品
  224.       @item = @sell_window.item
  225.       # 设置状态窗口的物品
  226.       @status_window.item = @item
  227.       # 物品无效的情况下、或者价格为 0 (不能卖出) 的情况下
  228.       if @item == nil or @item.price == 0
  229.         # 演奏冻结 SE
  230.         $game_system.se_play($data_system.buzzer_se)
  231.         return
  232.       end
  233.       # 演奏确定 SE
  234.       $game_system.se_play($data_system.decision_se)
  235.       # 获取物品的所持数
  236.       case @item
  237.       when RPG::Item
  238.         number = $game_party.item_number(@item.id)
  239.       when RPG::Weapon
  240.         number = $game_party.weapon_number(@item.id)
  241.       when RPG::Armor
  242.         number = $game_party.armor_number(@item.id)
  243.       end
  244.       # 最大卖出个数 = 物品的所持数
  245.       max = number
  246.       # 窗口状态转向个数输入模式
  247.       @sell_window.active = false
  248.       @sell_window.visible = false
  249.       @number_window.set(@item, max, @item.price / 2)
  250.       @number_window.active = true
  251.       @number_window.visible = true
  252.       @status_window.visible = true
  253.     end
  254.   end
  255.   #--------------------------------------------------------------------------
  256.   # ● 刷新画面 (个数输入窗口激活的情况下)
  257.   #--------------------------------------------------------------------------
  258.   def update_number
  259.     # 按下 B 键的情况下
  260.     if Input.trigger?(Input::B)
  261.       # 演奏取消 SE
  262.       $game_system.se_play($data_system.cancel_se)
  263.       # 设置个数输入窗口为不活动·非可视状态
  264.       @number_window.active = false
  265.       @number_window.visible = false
  266.       # 命令窗口光标位置分支
  267.       case @command_window.index
  268.       when 0  # 购买
  269.         # 窗口状态转向购买模式
  270.         @buy_window.active = true
  271.         @buy_window.visible = true
  272.       when 1  # 卖出
  273.         # 窗口状态转向卖出模式
  274.         @sell_window.active = true
  275.         @sell_window.visible = true
  276.         @status_window.visible = false
  277.       end
  278.       return
  279.     end
  280.     # 按下 C 键的情况下
  281.     if Input.trigger?(Input::C)
  282.       # 演奏商店 SE
  283.       $game_system.se_play($data_system.shop_se)
  284.       # 设置个数输入窗口为不活动·非可视状态
  285.       @number_window.active = false
  286.       @number_window.visible = false
  287.       # 命令窗口光标位置分支
  288.       case @command_window.index
  289.       when 0  # 购买
  290.         # 购买处理
  291.         $game_party.lose_gold(@number_window.number * @item.price)
  292.         case @item
  293.         when RPG::Item
  294.           $game_party.gain_item(@item.id, @number_window.number)
  295.         when RPG::Weapon
  296.           $game_party.gain_weapon(@item.id, @number_window.number)
  297.         when RPG::Armor
  298.           $game_party.gain_armor(@item.id, @number_window.number)
  299.         end
  300.         # 刷新各窗口
  301.         @gold_window.refresh
  302.         @buy_window.refresh
  303.         @status_window.refresh
  304.         # 窗口状态转向购买模式
  305.         @buy_window.active = true
  306.         @buy_window.visible = true
  307.       when 1  # 卖出
  308.         # 卖出处理
  309.         $game_party.gain_gold(@number_window.number * (@item.price / 2))
  310.         case @item
  311.         when RPG::Item
  312.           $game_party.lose_item(@item.id, @number_window.number)
  313.         when RPG::Weapon
  314.           $game_party.lose_weapon(@item.id, @number_window.number)
  315.         when RPG::Armor
  316.           $game_party.lose_armor(@item.id, @number_window.number)
  317.         end
  318.         # 刷新各窗口
  319.         @gold_window.refresh
  320.         @sell_window.refresh
  321.         @status_window.refresh
  322.         # 窗口状态转向卖出模式
  323.         @sell_window.active = true
  324.         @sell_window.visible = true
  325.         @status_window.visible = false
  326.       end
  327.       return
  328.     end
  329.   end
  330. end
复制代码
最终效果:

作者: lostding    时间: 2011-8-18 10:42
2578699 发表于 2011-8-18 10:28
新建个脚本,名字自定。
打上再把Scene_Shop的脚本替换为最终效果:




我自己试出来了,但这是怎么回事啊,从商店退出后就这样了。


lostding于2011-8-18 10:50补充以下内容:
非常感谢啊!!:lol




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