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

Project1

 找回密码
 注册会员
搜索
12
返回列表 发新帖
楼主: 眼中目之瞳
打印 上一主题 下一主题

[已经解决] 新手菜单第四章的“半身像”错在最后一步,求助。

[复制链接]

Lv2.观梦者

梦石
0
星屑
325
在线时间
252 小时
注册时间
2014-4-11
帖子
265
11
 楼主| 发表于 2015-9-24 05:24:40 | 只看该作者
cinderelmini 发表于 2015-9-23 23:59
所以把你出错的那篇代码发出来可行?

RUBY 代码复制
  1. #encoding:utf-8
  2. #==============================================================================
  3. # ■ Window_MenuStatus
  4. #------------------------------------------------------------------------------
  5. #  菜单画面中,显示队伍成员状态的窗口
  6. #==============================================================================
  7.  
  8. class Window_MenuStatus < Window_Selectable
  9.   #--------------------------------------------------------------------------
  10.   # ● 定义实例变量
  11.   #--------------------------------------------------------------------------
  12.   attr_reader   :pending_index            # 保留位置(整队用)
  13.   #--------------------------------------------------------------------------
  14.   # ● 初始化对象
  15.   #--------------------------------------------------------------------------
  16.   def initialize(x, y)
  17.     super(x, y, window_width, window_height)
  18.     @pending_index = -1
  19.     refresh
  20.   end
  21. #--------------------------------------------------------------------------
  22.   # ● 获取窗口的宽度
  23.   #--------------------------------------------------------------------------
  24.   def window_width
  25.     Graphics.width
  26.   end
  27.   #--------------------------------------------------------------------------
  28.   # ● 获取窗口的高度
  29.   #--------------------------------------------------------------------------
  30.   def window_height
  31.     Graphics.height - 96
  32.   end
  33. #--------------------------------------------------------------------------
  34.   # ● 获取项目数
  35.   #--------------------------------------------------------------------------
  36.   def item_max
  37.     $game_party.members.size
  38.   end
  39.   #--------------------------------------------------------------------------
  40.   # ● 获取项目的高度
  41.   #--------------------------------------------------------------------------
  42.   def item_height
  43.     height - standard_padding * 2
  44.   end
  45.   #--------------------------------------------------------------------------
  46.   # ● 获取项目的宽度
  47.   #--------------------------------------------------------------------------
  48.   def item_width
  49.     (width - standard_padding * 2 + spacing) /col_max - spacing
  50.   end
  51.   #--------------------------------------------------------------------------
  52.   # ● 获取行间距的宽度
  53.   #--------------------------------------------------------------------------
  54.   def spacing
  55.     return 0
  56.   end
  57.   #--------------------------------------------------------------------------
  58.   # ● 绘制项目
  59.   #--------------------------------------------------------------------------
  60.     def draw_actor_HalfBody(actor, rect.x, rect.y, enabled)
  61.     actor = $game_party.members[index]
  62.     enabled = $game_party.battle_members.include?(actor)
  63.     rect = item_rect(index)
  64.     draw_item_background(index)
  65.     draw_actor_face(actor, rect.x, rect.y, enabled)
  66.     draw_actor_name(actor,rect.x, rect.y+96)
  67.     draw_actor_class(actor,rect.x, rect.y+96+line_height*1)
  68.     draw_actor_icons(actor,rect.x,rect.y+96+line_height*2)
  69.     draw_actor_level(actor,rect.x, rect.y+96+line_height*2)
  70.     draw_actor_hp(actor,rect.x, rect.y+96+line_height*3)
  71.     draw_actor_mp(actor,rect.x,rect.y+96+line_height*5)
  72.     draw_actor_tp(actor,rect.x,rect.y+96+line_height*6)
  73.   end
  74.   #--------------------------------------------------------------------------
  75.   # ● 绘制项目的背景
  76.   #--------------------------------------------------------------------------
  77.   def draw_item_background(index)
  78.     if index == @pending_index
  79.       contents.fill_rect(item_rect(index), pending_color)
  80.     end
  81.   end
  82.   #--------------------------------------------------------------------------
  83.   # ● 按下确定键时的处理
  84.   #--------------------------------------------------------------------------
  85.   def process_ok
  86.     super
  87.     $game_party.menu_actor = $game_party.members[index]
  88.   end
  89.   #--------------------------------------------------------------------------
  90.   # ● 返回上一个选择的位置
  91.   #--------------------------------------------------------------------------
  92.   def select_last
  93.     select($game_party.menu_actor.index || 0)
  94.   end
  95.   #--------------------------------------------------------------------------
  96.   # ● 设置保留位置(整队用)
  97.   #--------------------------------------------------------------------------
  98.   def pending_index=(index)
  99.     last_pending_index = @pending_index
  100.     @pending_index = index
  101.     redraw_item(@pending_index)
  102.     redraw_item(last_pending_index)
  103.   end
  104.   #--------------------------------------------------------------------------
  105.   # ● 获取列数
  106.   #--------------------------------------------------------------------------
  107.   def col_max
  108.     return 4 #跟据分辨率的不同可以改
  109.   end
  110.   #--------------------------------------------------------------------------
  111.   # ● 获取首列位置
  112.   #--------------------------------------------------------------------------
  113.   def top_col
  114.     ox / (item_width + spacing)
  115.   end
  116.   #--------------------------------------------------------------------------
  117.   # ● 设置首列位置
  118.   #--------------------------------------------------------------------------
  119.   def top_col=(col)
  120.     col = 0 if col < 0
  121.     #col = col_max - 1 if col > col_max
  122.     self.ox = col * (item_width + spacing)
  123.   end
  124.   #--------------------------------------------------------------------------
  125.   # ● 获取尾列位置
  126.   #--------------------------------------------------------------------------
  127.   def bottom_col
  128.     top_col + col_max - 1
  129.   end
  130.   #--------------------------------------------------------------------------
  131.   # ● 设置尾列位置
  132.   #--------------------------------------------------------------------------
  133.   def bottom_col=(col)
  134.     self.top_col = col - (col_max - 1)
  135.   end
  136.   #--------------------------------------------------------------------------
  137.   # ● 确保光标在画面范围内滚动
  138.   #--------------------------------------------------------------------------
  139.   def ensure_cursor_visible
  140.     self.top_col = index if index < top_col
  141.     self.bottom_col = index if index > bottom_col
  142.   end
  143.   #--------------------------------------------------------------------------
  144.   # ● 获取项目的绘制矩形
  145.   #--------------------------------------------------------------------------
  146.   def item_rect(index)
  147.     rect = super
  148.     rect.x = index * (item_width + spacing)
  149.     rect.y = 0
  150.     rect
  151.   end
  152.   #--------------------------------------------------------------------------
  153.   # ● 获取对齐方向
  154.   #--------------------------------------------------------------------------
  155.   def alignment
  156.     return 1
  157.   end
  158.   #--------------------------------------------------------------------------
  159.   # ● 光标向下移动
  160.   #--------------------------------------------------------------------------
  161.   def cursor_down(wrap = false)
  162.   end
  163.   #--------------------------------------------------------------------------
  164.   # ● 光标向上移动
  165.   #--------------------------------------------------------------------------
  166.   def cursor_up(wrap = false)
  167.   end
  168.   #--------------------------------------------------------------------------
  169.   # ● 光标移至下一页
  170.   #--------------------------------------------------------------------------
  171.   def cursor_pagedown
  172.   end
  173.   #--------------------------------------------------------------------------
  174.   # ● 光标移至上一页
  175.   #--------------------------------------------------------------------------
  176.   def cursor_pageup
  177.   end
  178.   #--------------------------------------------------------------------------
  179.   # ● 计算窗口内容的宽度
  180.   #--------------------------------------------------------------------------
  181.   def contents_width
  182.     (item_width + spacing) * item_max - spacing
  183.   end
  184.     #--------------------------------------------------------------------------
  185.   # ● 计算窗口内容的宽度
  186.   #--------------------------------------------------------------------------
  187.   def contents_height
  188.     item_height
  189.   end
  190. end


这个是我出错的,复制到脚本编辑器里是第60行出的错。
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

12
发表于 2015-9-24 06:42:36 | 只看该作者
本帖最后由 taroxd 于 2015-9-24 06:48 编辑
眼中目之瞳 发表于 2015-9-24 05:20
#encoding:utf-8
#==============================================================================
#  ...


我不知道你看的是哪篇教程,所以我只能猜测那篇教程希望让你把 draw_item 的方法体改为 draw_HalfBody 啥啥啥的,并且用例子告诉你方法体是什么

另外我支持教程提供完整源代码,比如说 F1 的实践篇那样

补充内容请尽量用编辑,而不要连贴,谢谢
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
325
在线时间
252 小时
注册时间
2014-4-11
帖子
265
13
 楼主| 发表于 2015-9-24 06:46:02 | 只看该作者
本帖最后由 眼中目之瞳 于 2015-9-24 06:59 编辑
taroxd 发表于 2015-9-24 06:42
我不知道你看的是哪篇教程,所以我只能猜测那篇教程希望让你改方法体,并且用例子告诉你方法体是什么

另 ...


就是图书馆里的“教你修改菜单“Ⅳ

https://rpg.blue/thread-226400-1-1.html

连贴问题以后会注意……


这些是之前步骤里要求添加的脚本,不知是不是这里的错误……


@taroxd  

点评

但按着教程步骤都会出错……  发表于 2015-9-24 07:10
嗯看差了,应该没问题  发表于 2015-9-24 07:04
577行是教程直接复制过来的,没改过啊。  发表于 2015-9-24 07:02
只模仿是很难学会的。建议先看看 Ruby 的基础再来动手改吧  发表于 2015-9-24 07:02
第一张图 577 行别改掉呀……  发表于 2015-9-24 07:00
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3278
在线时间
1120 小时
注册时间
2009-4-15
帖子
815
14
发表于 2015-9-24 11:32:43 | 只看该作者
这一行错误的代码往上看,是不是前一段代码少了逗号、右括号、点之类的符号,或者是你用了中文状态下的符号?
看提示问题好像出在def draw_actor_HalfBody这个函数里
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
325
在线时间
252 小时
注册时间
2014-4-11
帖子
265
15
 楼主| 发表于 2015-9-24 12:23:45 | 只看该作者
tan12345 发表于 2015-9-24 11:32
这一行错误的代码往上看,是不是前一段代码少了逗号、右括号、点之类的符号,或者是你用了中文状态下的符号 ...

按照教程的步骤,横向菜单的脚本做的和教程效果一样,半身像脚本都是复制添加,也就是13楼的截图。在进行最后一步前还是能运行游戏的,但是一旦把“def draw_item(index)”替换掉就会出错。
回复 支持 反对

使用道具 举报

Lv4.逐梦者

「Pemercyia」


Urhurrenna

梦石
0
星屑
9397
在线时间
2748 小时
注册时间
2008-9-5
帖子
3543

开拓者短篇八RM组冠军短篇九导演组亚军白银编剧

16
发表于 2015-9-24 14:15:20 | 只看该作者
本帖最后由 cinderelmini 于 2015-9-24 14:35 编辑
眼中目之瞳 发表于 2015-9-24 05:24
#encoding:utf-8
#==============================================================================
#  ...


出错是因为方法名的括弧里应该填的是参数名字而不是参数具体的值……
比如:

  1. def a(x, y)
  2. ...
  3. end
  4. #或者
  5. def a(a = 1, y = 2)
  6. ...
  7. end
复制代码
这样是成立的,然后:
  1. def a(1, 2)
  2. ...
  3. end
复制代码
这样就并不能成立,你写的呢个方法的括弧里面的rect.x和rect.y就相当于上面的1和2,
去看了教程之后发现是教程的问题,无论是改成“【def draw_actor_HalfBody(actor, x = rect.x, y = rect.y, enabled = false)】(←前提是脚本里有一个叫rect的方法而且返回的是Rect),
还是改成【def draw_actor_HalfBody(actor, rect_x, rect_y, enabled】都不会有问题。

然后根据这个方法的内容来看,方法里的参数完全可以不用,
考虑到似乎是用来替代draw_item的,
可以改成这样
  1.   #--------------------------------------------------------------------------
  2.   # ● 绘制项目
  3.   #--------------------------------------------------------------------------
  4.   def draw_actor_HalfBody(index)
  5.     actor = $game_party.members[index]
  6.     enabled = $game_party.battle_members.include?(actor)
  7.     rect = item_rect(index)
  8.     draw_item_background(index)
  9.     draw_actor_face(actor, rect.x, rect.y, enabled)
  10.     draw_actor_name(actor,rect.x, rect.y+96)
  11.     draw_actor_class(actor,rect.x, rect.y+96+line_height*1)
  12.     draw_actor_icons(actor,rect.x,rect.y+96+line_height*2)
  13.     draw_actor_level(actor,rect.x, rect.y+96+line_height*2)
  14.     draw_actor_hp(actor,rect.x, rect.y+96+line_height*3)
  15.     draw_actor_mp(actor,rect.x,rect.y+96+line_height*5)
  16.     draw_actor_tp(actor,rect.x,rect.y+96+line_height*6)
  17.   end
复制代码
然后在原本使用draw_item(i)的那里,
换成draw_actor_HalfBody(i)
…………
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
325
在线时间
252 小时
注册时间
2014-4-11
帖子
265
17
 楼主| 发表于 2015-9-24 14:57:53 | 只看该作者
cinderelmini 发表于 2015-9-24 14:15
出错是因为方法名的括弧里应该填的是参数名字而不是参数具体的值……
比如:这样是成立的,然后:这样就 ...


改完后效果和“taroxd”所给的“修改方法体“一样不显示头像和血条,但可以点击查看,然后”原本使用draw_item(i)的那里‘指的是哪里?

点评

是的~  发表于 2015-9-24 16:36
把第406行到第411行的“绘制所有项目”复制到“Window_MenuStatus”里,然后将“item_max.times {|i| draw_item(i) }”改成“item_max.times {|i| draw_actor_HalfBody(i) }”?  发表于 2015-9-24 15:32
把draw_all_item方法复制过来改,不要在父类改。  发表于 2015-9-24 15:09
在父类Window_Selectable里面的def draw_all_item里面。。  发表于 2015-9-24 15:09
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
325
在线时间
252 小时
注册时间
2014-4-11
帖子
265
18
 楼主| 发表于 2015-9-24 17:02:07 | 只看该作者
但还是没效果啊……



@cinderelmini
回复 支持 反对

使用道具 举报

Lv4.逐梦者

「Pemercyia」


Urhurrenna

梦石
0
星屑
9397
在线时间
2748 小时
注册时间
2008-9-5
帖子
3543

开拓者短篇八RM组冠军短篇九导演组亚军白银编剧

19
发表于 2015-9-24 19:04:50 | 只看该作者
本帖最后由 cinderelmini 于 2015-9-24 19:18 编辑

所以你想要什么效果~
以上的做法完全就是把draw_actorHalfBody描绘了一遍而已~
换种说法,只是把原本的draw_item换个名字而已~
而你本身一开始的做法排除错误之后就是这个效果~

如果我没猜错,你是想要描绘新加的半身像,然后用错了方法。
如果是这样,就不是这种做法,
首先把:
  1.   #--------------------------------------------------------------------------
  2.   # ● 绘制项目
  3.   #--------------------------------------------------------------------------
  4.   def draw_actor_HalfBody(index)
  5.     actor = $game_party.members[index]
  6.     enabled = $game_party.battle_members.include?(actor)
  7.     rect = item_rect(index)
  8.     draw_item_background(index)
  9.     draw_actor_face(actor, rect.x, rect.y, enabled)
  10.     draw_actor_name(actor,rect.x, rect.y+96)
  11.     draw_actor_class(actor,rect.x, rect.y+96+line_height*1)
  12.     draw_actor_icons(actor,rect.x,rect.y+96+line_height*2)
  13.     draw_actor_level(actor,rect.x, rect.y+96+line_height*2)
  14.     draw_actor_hp(actor,rect.x, rect.y+96+line_height*3)
  15.     draw_actor_mp(actor,rect.x,rect.y+96+line_height*5)
  16.     draw_actor_tp(actor,rect.x,rect.y+96+line_height*6)
  17.   end
复制代码
这个改回原来的名字【draw_item】,也就是【def draw_item(index)】
然后把刚搬过来改的draw_all_item删掉或者先注释掉,
然后你需要把你写的:
这两个描绘半身像的方法放到这个脚本里来或者放到Window_Base里,
然后在原本的draw_item方法(也就是上面脚本框里的内容)里面,
在 draw_item_background下面插入一行【draw_actor_HalfBody(actor, rect.x, rect.y, enabled)】,
然后把 draw_actor_face(actor, rect.x, rect.y, enabled)】删掉或者注释掉(如果不需要脸图的话)。
做完之后就是这样。。(替换原来的这个脚本)

点评

所以这个问题一开始的目的就不是改方法名而是添加一个描绘半身像方法进draw_item么……  发表于 2015-9-24 19:13
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
325
在线时间
252 小时
注册时间
2014-4-11
帖子
265
20
 楼主| 发表于 2015-9-24 19:11:35 | 只看该作者
本帖最后由 眼中目之瞳 于 2015-9-24 19:37 编辑
cinderelmini 发表于 2015-9-24 19:04
所以你想要什么效果~
以上的做法完全就是把draw_actorHalfBody描绘了一遍而已~
换种说法,只是把原本的draw ...


应该是成功了,“头像”很明显不是原来的样式了

点评

这应该是描绘半身像方法本身的rect定位问题了。  发表于 2015-9-24 19:44
楼上已更新……  发表于 2015-9-24 19:17
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-9-24 02:36

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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