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

Project1

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

[已经解决] 窗口内容…出错…小箭头……删除不……了

[复制链接]

Lv1.梦旅人

梦石
0
星屑
143
在线时间
43 小时
注册时间
2019-6-11
帖子
9
跳转到指定楼层
1
发表于 2019-6-11 23:30:16 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 七夜零 于 2019-6-12 06:44 编辑

各位前辈们好! 初来乍到的,各位前辈们好!

吾辈是最近才开始了解RPGmake这款软件的,途经是某些网站的小黄油吧,话不多说,先来混个脸熟日后好请各位多多关照!

经过一段时间的掌握吾辈也开始接触到游戏脚本部分了,由于一直在都是搬砖般的生活很少有需要接触到编程这类技术。目前还只是看懂一些逻辑和修改一些小脚本而已。

在今天自己改了一下物品栏的时候出现了好多问题到目前都没解决到qaq 例如↓

噔噔噔……噔……

出错图 ↓ ↓ ↓

右边的小箭头....后来实在弄不好就把皮肤窗口里面的四个小箭头给P掉了……(改的脚本是Window_ItemCategory,但它所继承的是Window_HorzCommand横向选择的指令窗口,它原本是横向的被我改成纵向了。)
  1. #encoding:utf-8
  2. #==============================================================================
  3. # ■ Window_ItemCategory
  4. #------------------------------------------------------------------------------
  5. #  物品画面和商店画面中,显示装备、所持物品等项目列表的窗口。
  6. #==============================================================================

  7. class Window_ItemCategory < Window_HorzCommand
  8.   #--------------------------------------------------------------------------
  9.   # ● 定义实例变量
  10.   #--------------------------------------------------------------------------
  11.   attr_reader   :item_window
  12.   #--------------------------------------------------------------------------
  13.   # ● 初始化对象
  14.   #--------------------------------------------------------------------------
  15.   def initialize
  16.     super(330, 59)#(330, 59)
  17.     refresh
  18.   end
  19.   #--------------------------------------------------------------------------
  20.   # ● 获取窗口的宽度
  21.   #--------------------------------------------------------------------------
  22.   def window_width
  23.     Graphics.width - 520#550
  24.   end
  25.   #--------------------------------------------------------------------------
  26.   # ● 获取窗口的GAO度
  27.   #--------------------------------------------------------------------------
  28.   def window_height
  29.     Graphics.height - 330 #330
  30.   end
  31.   #--------------------------------------------------------------------------
  32.   # ● 获取列数
  33.   #--------------------------------------------------------------------------
  34.   def col_max
  35.     return 1
  36.   end
  37.   #--------------------------------------------------------------------------
  38.   # ● 获取对齐方向
  39.   #--------------------------------------------------------------------------
  40.   def alignment
  41.     return 1
  42.   end
  43.   #--------------------------------------------------------------------------
  44.   # ● 获取项目数
  45.   #--------------------------------------------------------------------------
  46.   def item_max
  47.     return 4
  48.   end
  49.   #--------------------------------------------------------------------------
  50.   # ● 获取项目的宽度
  51.   #--------------------------------------------------------------------------
  52.   def item_width
  53.     (width - standard_padding * 2 + spacing) / col_max - spacing
  54.   end
  55.   #--------------------------------------------------------------------------
  56.   # ● 获取项目的高度
  57.   #--------------------------------------------------------------------------
  58.   def item_height
  59.     line_height + 7
  60.   end
  61.   #--------------------------------------------------------------------------
  62.   # ● 获取行数
  63.   #--------------------------------------------------------------------------
  64.   def row_max
  65.     [(item_max + col_max - 1) / col_max, 1].max
  66.   end
  67.   #--------------------------------------------------------------------------
  68.   # ● 计算窗口内容的高度
  69.   #--------------------------------------------------------------------------
  70.   def contents_height
  71.     [super - super % item_height, row_max * item_height].max
  72.   end
  73.   #--------------------------------------------------------------------------
  74.   # ● 更新边距
  75.   #--------------------------------------------------------------------------
  76.   def update_padding
  77.     super
  78.     update_padding_bottom
  79.   end
  80.   #--------------------------------------------------------------------------
  81.   # ● 更新下端边距
  82.   #--------------------------------------------------------------------------
  83.   def update_padding_bottom
  84.     surplus = (height - standard_padding * 2) % item_height
  85.     self.padding_bottom = padding + surplus
  86.   end
  87.   #--------------------------------------------------------------------------
  88.   # ● 设置高度
  89.   #--------------------------------------------------------------------------
  90.   def height=(height)
  91.     super
  92.     update_padding
  93.   end
  94.   #--------------------------------------------------------------------------
  95.   # ● 更改启用状态
  96.   #--------------------------------------------------------------------------
  97.   def active=(active)
  98.     super
  99.     update_cursor
  100.     call_update_help
  101.   end
  102.   #--------------------------------------------------------------------------
  103.   # ● 设置光标位置
  104.   #--------------------------------------------------------------------------
  105.   def index=(index)
  106.     @index = index
  107.     update_cursor
  108.     call_update_help
  109.   end
  110.   #--------------------------------------------------------------------------
  111.   # ● 选择项目
  112.   #--------------------------------------------------------------------------
  113.   def select(index)
  114.     self.index = index if index
  115.   end
  116.   #--------------------------------------------------------------------------
  117.   # ● 解除项目的选择
  118.   #--------------------------------------------------------------------------
  119.   def unselect
  120.     self.index = - 1
  121.   end
  122.   #--------------------------------------------------------------------------
  123.   # ● 获取当前行
  124.   #--------------------------------------------------------------------------
  125.   def row
  126.     index / col_max
  127.   end
  128.   #--------------------------------------------------------------------------
  129.   # ● 获取顶行位置
  130.   #--------------------------------------------------------------------------
  131.   def top_row
  132.     oy / item_height
  133.   end
  134.   #--------------------------------------------------------------------------
  135.   # ● 设置顶行位置
  136.   #--------------------------------------------------------------------------
  137.   def top_row=(row)
  138.     row = 0 if row < 0
  139.     row = row_max - 1 if row > row_max - 1
  140.     self.oy = row * item_height
  141.   end
  142.   #--------------------------------------------------------------------------
  143.   # ● 获取一页內显示的行数
  144.   #--------------------------------------------------------------------------
  145.   def page_row_max
  146.     (height - padding - padding_bottom) / item_height
  147.   end
  148.   #--------------------------------------------------------------------------
  149.   # ● 获取一页內显示的项目数
  150.   #--------------------------------------------------------------------------
  151.   def page_item_max
  152.     page_row_max * col_max
  153.   end
  154.   #--------------------------------------------------------------------------
  155.   # ● 判定是否横向选择
  156.   #--------------------------------------------------------------------------
  157.   def horizontal?
  158.     page_row_max == 1
  159.   end
  160.   #--------------------------------------------------------------------------
  161.   # ● 获取末行位置
  162.   #--------------------------------------------------------------------------
  163.   def bottom_row
  164.     top_row + page_row_max - 1
  165.   end
  166.   #--------------------------------------------------------------------------
  167.   # ● 设置末行位置
  168.   #--------------------------------------------------------------------------
  169.   def bottom_row=(row)
  170.     self.top_row = row - (page_row_max - 1)
  171.   end
  172.     #--------------------------------------------------------------------------
  173.   # ● 获取项目的绘制矩形
  174.   #--------------------------------------------------------------------------
  175.   def item_rect(index)
  176.     rect = Rect.new
  177.     rect.width = item_width
  178.     rect.height = item_height
  179.     rect.x = index % col_max * (item_width + spacing)
  180.     rect.y = index / col_max * item_height
  181.     rect
  182.   end
  183.   #--------------------------------------------------------------------------
  184.   # ● 获取项目的绘制矩形(内容用)
  185.   #--------------------------------------------------------------------------
  186.   def item_rect_for_text(index)
  187.     rect = item_rect(index)
  188.     rect.x += 4
  189.     rect.width -= 8
  190.     rect
  191.   end
  192.   #--------------------------------------------------------------------------
  193.   # ● 设置帮助窗口
  194.   #--------------------------------------------------------------------------
  195.   def help_window=(help_window)
  196.     @help_window = help_window
  197.     call_update_help
  198.   end
  199.   #--------------------------------------------------------------------------
  200.   # ● 设置动作对应的处理方法
  201.   #     method : 设置的处理方法 (Method 实例)
  202.   #--------------------------------------------------------------------------
  203.   def set_handler(symbol, method)
  204.     @handler[symbol] = method
  205.   end
  206.   #--------------------------------------------------------------------------
  207.   # ● 确认处理方法是否存在
  208.   #--------------------------------------------------------------------------
  209.   def handle?(symbol)
  210.     @handler.include?(symbol)
  211.   end
  212.   #--------------------------------------------------------------------------
  213.   # ● 调用处理方法
  214.   #--------------------------------------------------------------------------
  215.   def call_handler(symbol)
  216.     @handler[symbol].call if handle?(symbol)
  217.   end
  218.   #--------------------------------------------------------------------------
  219.   # ● 判定光标是否可以移动
  220.   #--------------------------------------------------------------------------
  221.   def cursor_movable?
  222.     active && open? && !@cursor_fix && !@cursor_all && item_max > 0
  223.   end
  224.   #--------------------------------------------------------------------------
  225.   # ● 光标向下移动
  226.   #--------------------------------------------------------------------------
  227.   def cursor_down(wrap = false)
  228.     if index < item_max - col_max || (wrap && col_max == 1)
  229.       select((index + col_max) % item_max)
  230.     end
  231.   end
  232.   #--------------------------------------------------------------------------
  233.   # ● 光标向上移动
  234.   #--------------------------------------------------------------------------
  235.   def cursor_up(wrap = false)
  236.     if index >= col_max || (wrap && col_max == 1)
  237.       select((index - col_max + item_max) % item_max)
  238.     end
  239.   end
  240.   #--------------------------------------------------------------------------
  241.   # ● 光标向右移动
  242.   #--------------------------------------------------------------------------
  243.   def cursor_right(wrap = false)
  244.     if col_max >= 2 && (index < item_max - 1 || (wrap && horizontal?))
  245.       select((index + 1) % item_max)
  246.     end
  247.   end
  248.   #--------------------------------------------------------------------------
  249.   # ● 光标向左移动
  250.   #--------------------------------------------------------------------------
  251.   def cursor_left(wrap = false)
  252.     if col_max >= 2 && (index > 0 || (wrap && horizontal?))
  253.       select((index - 1 + item_max) % item_max)
  254.     end
  255.   end
  256.   #--------------------------------------------------------------------------
  257.   # ● 光标移至下一页
  258.   #--------------------------------------------------------------------------
  259.   def cursor_pagedown
  260.     if top_row + page_row_max < row_max
  261.       self.top_row += page_row_max
  262.       select([@index + page_item_max, item_max - 1].min)
  263.     end
  264.   end
  265.   #--------------------------------------------------------------------------
  266.   # ● 光标移至上一页
  267.   #--------------------------------------------------------------------------
  268.   def cursor_pageup
  269.     if top_row > 0
  270.       self.top_row -= page_row_max
  271.       select([@index - page_item_max, 0].max)
  272.     end
  273.   end
  274.   #--------------------------------------------------------------------------
  275.   # ● 更新画面
  276.   #--------------------------------------------------------------------------
  277.   def update
  278.     super
  279.     process_cursor_move
  280.     process_handling
  281.   end
  282.   #--------------------------------------------------------------------------
  283.   # ● 处理光标的移动
  284.   #--------------------------------------------------------------------------
  285.   def process_cursor_move
  286.     return unless cursor_movable?
  287.     last_index = @index
  288.     cursor_down (Input.trigger?(:DOWN))  if Input.repeat?(:DOWN)
  289.     cursor_up   (Input.trigger?(:UP))    if Input.repeat?(:UP)
  290.     cursor_right(Input.trigger?(:RIGHT)) if Input.repeat?(:RIGHT)
  291.     cursor_left (Input.trigger?(:LEFT))  if Input.repeat?(:LEFT)
  292.     cursor_pagedown   if !handle?(:pagedown) && Input.trigger?(:R)
  293.     cursor_pageup     if !handle?(:pageup)   && Input.trigger?(:L)
  294.     Sound.play_cursor if @index != last_index
  295.   end
  296.   #--------------------------------------------------------------------------
  297.   # ● “确定”和“取消”的处理
  298.   #--------------------------------------------------------------------------
  299.   def process_handling
  300.     return unless open? && active
  301.     return process_ok       if ok_enabled?        && Input.trigger?(:C)
  302.     return process_cancel   if cancel_enabled?    && Input.trigger?(:B)
  303.     return process_pagedown if handle?(:pagedown) && Input.trigger?(:R)
  304.     return process_pageup   if handle?(:pageup)   && Input.trigger?(:L)
  305.   end
  306.   #--------------------------------------------------------------------------
  307.   # ● 获取确定处理的有效状态
  308.   #--------------------------------------------------------------------------
  309.   def ok_enabled?
  310.     handle?(:ok)
  311.   end
  312.   #--------------------------------------------------------------------------
  313.   # ● 获取取消处理的有效状态
  314.   #--------------------------------------------------------------------------
  315.   def cancel_enabled?
  316.     handle?(:cancel)
  317.   end
  318.   #--------------------------------------------------------------------------
  319.   # ● 按下确定键时的处理
  320.   #--------------------------------------------------------------------------
  321.   def process_ok
  322.     if current_item_enabled?
  323.       Sound.play_ok
  324.       Input.update
  325.       deactivate
  326.       call_ok_handler
  327.     else
  328.       Sound.play_buzzer
  329.     end
  330.   end
  331.   #--------------------------------------------------------------------------
  332.   # ● 调用“确定”的处理方法
  333.   #--------------------------------------------------------------------------
  334.   def call_ok_handler
  335.     call_handler(:ok)
  336.   end
  337.   #--------------------------------------------------------------------------
  338.   # ● 按下取消键时的处理
  339.   #--------------------------------------------------------------------------
  340.   def process_cancel
  341.     Sound.play_cancel
  342.     Input.update
  343.     deactivate
  344.     call_cancel_handler
  345.   end
  346.   #--------------------------------------------------------------------------
  347.   # ● 调用“取消”的处理方法
  348.   #--------------------------------------------------------------------------
  349.   def call_cancel_handler
  350.     call_handler(:cancel)
  351.   end
  352.   #--------------------------------------------------------------------------
  353.   # ● 按下 L 键(PageUp)时的处理
  354.   #--------------------------------------------------------------------------
  355.   def process_pageup
  356.     Sound.play_cursor
  357.     Input.update
  358.     deactivate
  359.     call_handler(:pageup)
  360.   end
  361.   #--------------------------------------------------------------------------
  362.   # ● 按下 R 键(PageDown)时的处理
  363.   #--------------------------------------------------------------------------
  364.   def process_pagedown
  365.     Sound.play_cursor
  366.     Input.update
  367.     deactivate
  368.     call_handler(:pagedown)
  369.   end
  370.   #--------------------------------------------------------------------------
  371.   # ● 更新光标
  372.   #--------------------------------------------------------------------------
  373.   def update_cursor
  374.     if @cursor_all
  375.       cursor_rect.set(0, 0, contents.width, row_max * item_height)
  376.       self.top_row = 0
  377.     elsif @index < 0
  378.       cursor_rect.empty
  379.     else
  380.       ensure_cursor_visible
  381.       cursor_rect.set(item_rect(@index))
  382.     end
  383.   end
  384.   #--------------------------------------------------------------------------
  385.   # ● 确保光标在画面范围内滚动
  386.   #--------------------------------------------------------------------------
  387.   def ensure_cursor_visible
  388.     self.top_row = row if row < top_row
  389.     self.bottom_row = row if row > bottom_row
  390.   end
  391.   #--------------------------------------------------------------------------
  392.   # ● 更新画面
  393.   #--------------------------------------------------------------------------
  394.   def update
  395.     super
  396.     @item_window.category = current_symbol if @item_window
  397.   end
  398.   #--------------------------------------------------------------------------
  399.   # ● 生成指令列表
  400.   #--------------------------------------------------------------------------
  401.   def make_command_list
  402.     add_command(Vocab::item,     :item)
  403.     add_command(Vocab::weapon,   :weapon)
  404.     add_command(Vocab::armor,    :armor)
  405.     add_command(Vocab::key_item, :key_item)
  406.   end
  407.   #--------------------------------------------------------------------------
  408.   # ● 设置物品窗口
  409.   #--------------------------------------------------------------------------
  410.   def item_window=(item_window)
  411.     @item_window = item_window
  412.     update
  413.   end
  414. end
复制代码




下面这个问题已解决!在Scene_ItemBase里面找到了下面这段脚本。  #--------------------------------------------------------------------------
  # ● 判定光标是否在左列
  #--------------------------------------------------------------------------
  def cursor_left?
    @item_window.index % 2 == 0      我把 % 2 == 0 删除了。使用物品的时候就一直在右边侧了,不过我不懂这句话是啥意思。
  end


竖着来数的话 第一个物品是没事的,但第二个物品就出错了,把选择人物使用物品的窗口给弄到了左边。然后2 4 6 8 10双数位的使用的物品主角图都会出现在左侧。
出错图 ↓


没事的图 ↓




Lv5.捕梦者 (暗夜天使)

梦石
1
星屑
21010
在线时间
4886 小时
注册时间
2014-12-22
帖子
1527

开拓者

2
发表于 2019-6-12 20:46:26 | 只看该作者
本帖最后由 shencao 于 2019-6-12 21:24 编辑

可以把Window_ItemCategory改为继承纵向菜单呀,第8行改成
class Window_ItemCategory < Window_Command
应该就可以了。(我就是这么干的~)

然后出现箭头一般是内容超出了显示范围,程序判定你需要翻页显示,就出现了箭头
调整一下选项的长宽什么的,确保不超出窗口的范围
(可能就是横菜单强行显示竖排的问题,改成纵向的试试?我不是大佬,你试试看~


顺便补充一下判定光标是否在左列
%        求模 - 把左操作数除以右操作数,返回余数
==        检查两个操作数的值是否相等,如果相等则条件为真
(网上搜的)
那么代入看就是,当item_window.index值除以2余数等于0,则判定光标在左侧。
当物品列表是2列的时候,光标在左侧新窗口就在右侧,光标在右侧新窗口在左侧,这样可以不遮挡物品列表,看起来比较舒服?是设定啦,不是bug~XDDD
另外我感觉你可能还会需要修改这个子窗口的位置,可以到“Scene_ItemBase”的“● 显示子窗口”这边找找~

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
143
在线时间
43 小时
注册时间
2019-6-11
帖子
9
3
 楼主| 发表于 2019-6-13 07:04:07 | 只看该作者
shencao 发表于 2019-6-12 20:46
可以把Window_ItemCategory改为继承纵向菜单呀,第8行改成
class Window_ItemCategory < Window_Command
应 ...

感谢前辈!按照你说的修改了,箭头也就没了!!但是相对来说就要把原版的
Window_ItemCategory给删掉不然会出错(我是改的脚本都是复制一份下来进行修改的)
另外感谢前辈给的思路,我一直以为是光标超出了显示范围,(选项是光标吗?)但无论我怎么改光标大小它都会连同窗口内的文字一起缩小扩大。还有第二个问题谢谢解释!
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

梦石
1
星屑
21010
在线时间
4886 小时
注册时间
2014-12-22
帖子
1527

开拓者

4
发表于 2019-6-13 07:25:53 | 只看该作者
本帖最后由 shencao 于 2019-6-13 07:39 编辑
七夜零 发表于 2019-6-13 07:04
感谢前辈!按照你说的修改了,箭头也就没了!!但是相对来说就要把原版的
Window_ItemCategory给删掉不然 ...

“无论我怎么改光标大小它都会连同窗口内的文字一起缩小扩大” 那大概和它没关系?
不是大佬就很难,我也不知道具体的囧。(我也就是自己改改窗口,然后效果有了就ok了⋯⋯)
如果从结果倒推,感觉是你规定了它只显示1列,但是设定有4个选项,它说我是横排菜单只有1列怎么显示4个选项呢?它就觉得需要翻页了。(以上是我瞎猜的。)
rm窗口涉及的东西不少,有时候不是改一个地方就ok,多尝试吧,慢慢就能找到点规律(逻辑)啦~
制作加油啦~
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
143
在线时间
43 小时
注册时间
2019-6-11
帖子
9
5
 楼主| 发表于 2019-6-13 10:11:12 | 只看该作者
shencao 发表于 2019-6-13 07:25
“无论我怎么改光标大小它都会连同窗口内的文字一起缩小扩大” 那大概和它没关系?
不是大佬就很难,我也 ...

你说得对,是涉及到很多方面,例如我的物品窗口之前是跟装备里显示物品的窗口是联动性的,一旦改了就会一起改 后来好不容易才固定好。
我想我必须还要多去了解他们之间的涉及方面才行。多谢你,让我找到了联动性之间的问题所在,小箭头暂时还没弄清楚或者说不知道改哪里,需要研究。
现在我的窗口把它弄进右侧了,这样就看不到了,加上我用了一个脚本是可以让窗口从上下左右四个方面滑出来的多亏这样也让这个窗口看起来不怎么违和。
然后我把物品窗口单独扩大了,当然根据刚才学习到的知识把这个窗口单独地扩大了和装备里的物品窗口是分开了的。

多谢前辈的解释!我要继续努力QAQ

点评

一起加油啦~XD  发表于 2019-6-13 15:34
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-16 20:57

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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