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

Project1

 找回密码
 注册会员
搜索
楼主: david_ng223
打印 上一主题 下一主题

[結帖]我開始學腳本啦~~求大神們指點~~

[复制链接]

Lv4.逐梦者 (版主)

百合控

梦石
0
星屑
6443
在线时间
1275 小时
注册时间
2013-8-21
帖子
3657

开拓者

61
发表于 2014-2-7 09:37:48 | 只看该作者
david_ng223 发表于 2014-2-7 09:28
為什麼@category_window的下级窗口需要显示指定类别的物品???
我怎不見敌人图鉴 VA在遊戲裡面,
有任何關 ...

这里的【物品】 实际上是item 也就是项目
每一个怪物都是一个项目 而怪物有分类
所以 从属级别是这样:
有很多分类 每个分类下有很多怪物  每个怪物有很多细节信息

评分

参与人数 2星屑 +14 收起 理由
satgo1546 + 7 围观一群大触【我不知道我为什么要评分.
kuerlulu + 7 围观一群大触【在下xp党所以不掺和.

查看全部评分

萌新瑟瑟发抖
看到我请叫我去干活
回复 支持 反对

使用道具 举报

david_ng223 该用户已被删除
62
 楼主| 发表于 2014-2-7 10:37:17 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

百合控

梦石
0
星屑
6443
在线时间
1275 小时
注册时间
2013-8-21
帖子
3657

开拓者

63
发表于 2014-2-7 10:55:13 | 只看该作者
david_ng223 发表于 2014-2-7 10:37
圖片是我想要的圖鑑,有四個窗口,分別是左上,左下,右上,右下(屬性,身高體重,說明,图片,No.,能力)
左上的 ...

大致是这样 问题应该没有 我只是粗略的看了一遍 细节方面的调试应该在实际运行中检测
萌新瑟瑟发抖
看到我请叫我去干活
回复 支持 反对

使用道具 举报

david_ng223 该用户已被删除
64
 楼主| 发表于 2014-2-7 14:14:46 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

百合控

梦石
0
星屑
6443
在线时间
1275 小时
注册时间
2013-8-21
帖子
3657

开拓者

65
发表于 2014-2-7 15:17:45 | 只看该作者
david_ng223 发表于 2014-2-7 14:14
class Window_Pokedex < Window_Base
  include Dream::Pokedex
  def draw_pokedex_icon(icon_index,  ...

我们知道class 类名  end 可以定义一个类
我们知道类名.new可以生成一个实例
但是当我们new时 应该使用参数吗?应该使用几个参数?
Class 类类
类的类。更准确的说,每个类都有一个无名的「元类」,而此类就是那些元类的类。这种关系有点复杂,但是对于使用 Ruby 并非特别需要了解这种关系。

与模块相比,类:

可以生成实例
无法使用 include 进行混合
除此之外,几乎所有的功能都是继承自 Module 模块类。
new( ... )
生成一个类的实例并返回该实例。这个方法的参数,包括区块参数,都会传递给 initialize 。

于是 注意initialize
Object 物件类
所有类的超类,定义了一般对象的行为。
initialize
用户定义的类所使用的初始化方法。此方法是由 Class#new 调用来初始化新生成的物件。预设情况下,没有任何动作;假定此方法会在子类中依照需求重新定义。若是向  Class#new 传递了任何参数,则会原封不动的传递给 initialize。

好 现在我们看到一般的Window
Window 窗口类
游戏窗口的类。在内部由多重的精灵所组成。
Window.new([x, y, width, height])  
创建一个窗口,并可以用参数来指定位置与大小。
RUBY 代码复制
  1. class Window_Base < Window
  2.   #--------------------------------------------------------------------------
  3.   # ● 初始化对象
  4.   #--------------------------------------------------------------------------
  5.   def initialize(x, y, width, height)

所以一般的窗口类是四个参数 x y 宽 高
但是注意你出错的地方  参数错误 4 for 2的意思就是 只需要两个参数 你却用了四个
于是往下翻
RUBY 代码复制
  1. @pokemon_window = Window_Pokemon.new(0, 0, 408, 52)
RUBY 代码复制
  1. class Window_Pokemon < Window_HorzCommand
RUBY 代码复制
  1. class Window_HorzCommand < Window_Command
RUBY 代码复制
  1. class Window_Command < Window_Selectable
  2.   #--------------------------------------------------------------------------
  3.   # ● 初始化对象
  4.   #--------------------------------------------------------------------------
  5.   def initialize(x, y)

就是这样
萌新瑟瑟发抖
看到我请叫我去干活
回复 支持 反对

使用道具 举报

david_ng223 该用户已被删除
66
 楼主| 发表于 2014-2-7 15:54:21 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

百合控

梦石
0
星屑
6443
在线时间
1275 小时
注册时间
2013-8-21
帖子
3657

开拓者

67
发表于 2014-2-7 16:08:08 | 只看该作者
david_ng223 发表于 2014-2-7 15:54
這樣就 参数错误 4 for 2這樣就

@pokemon_window = Window_Pokemon.new(136, 0)[/pre]


现在你需要改的是宽度
但是很明显 new没有提供改宽度的方法
但是一个Window需要宽度 这个宽度从哪里来呢?
RUBY 代码复制
  1. class Window_Command < Window_Selectable
  2.   #--------------------------------------------------------------------------
  3.   # ● 初始化对象
  4.   #--------------------------------------------------------------------------
  5.   def initialize(x, y)
  6.     clear_command_list
  7.     make_command_list
  8.     super(x, y, window_width, window_height)
  9.     refresh
  10.     select(0)
  11.     activate
  12.   end
注意  这个super(x, y, window_width, window_height)就是呼叫父类中的同名方法 也就是Window_Selectablenew
RUBY 代码复制
  1. class Window_Selectable < Window_Base
  2.   #--------------------------------------------------------------------------
  3.   # ● 初始化对象
  4.   #-------------------------------------------------------------------------
  5.   def initialize(x, y, width, height)
看来Window_SelectablenewWindow_Base一样都是四个参数 x y 宽 高
于是再次集中注意力到super(x, y, window_width, window_height)
很明显x y是你传进去的(def initialize(x, y))但是window_width, window_height是什么呢
RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # ● 获取窗口的宽度
  3.   #--------------------------------------------------------------------------
  4.   def window_width
  5.     return 160
  6.   end
  7.   #--------------------------------------------------------------------------
  8.   # ● 获取窗口的高度
  9.   #--------------------------------------------------------------------------
  10.   def window_height
  11.     fitting_height(visible_line_number)
  12.   end
其中fitting_height(visible_line_number)获取合适的高度(自适应) 所以不用管它 我们需要调整window_width
当然 我们不能直接在Window_Command里面改  我们只需要在Window_Pokemon中覆盖这个方法就可以了

Window_Pokemon类中 加入如下代码段
RUBY 代码复制
  1. def window_width
  2.     return 408
  3.   end

点评

貌似不會自适应?  发表于 2014-2-7 16:26
顺便,高度也要改一下,改到和左边那个窗口一样  发表于 2014-2-7 16:23

评分

参与人数 1星屑 +7 收起 理由
taroxd + 7 我很赞同

查看全部评分

萌新瑟瑟发抖
看到我请叫我去干活
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

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

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

开拓者贵宾

68
发表于 2014-2-7 16:30:57 | 只看该作者
本帖最后由 taroxd 于 2014-2-7 16:47 编辑
余烬之中 发表于 2014-2-7 16:08
现在你需要改的是宽度
但是很明显 new没有提供改宽度的方法
但是一个Window需要宽度 这个宽度从哪里来呢 ...


以下内容未经测试,写错勿怪

1. 正是因为不会自适应(还有继承之类的关系),定义方法window_width这样的方法才是有意义的,便于调试。否则一个常量就解决了
一种方法是不断修改这个方法的返回的值,直到改出合适的值为止。
例子楼上已给

2. 另一种方法是通过计算完成。(简单举例:内容宽度 + 边框 * 2 )
计算过程可以写在window_width这样的方法里,便于之后的理解调试。(这正是用方法不用常量的原因)

如果在计算窗口宽度时需要其他窗口的数据,那么计算可以在场景中完成。

举例:
RUBY 代码复制
  1. # 这是一个场景的创建窗口的方法
  2. def create_window1
  3.   @window1 = Window_One.new(...)
  4.   @window1.x = @window2.x + @window2.width       # window2 是一个已经被创建好的窗口
  5.   @window1.width = Graphics.width - @window1.x   # 这使得window1紧靠window2右边,并延伸至画面右端
  6. end


或者参考实际一点的,Scene_Menu的这个方法

RUBY 代码复制
  1. def create_gold_window
  2.   @gold_window = Window_Gold.new
  3.   @gold_window.x = 0  # 使得显示金钱的窗口在左方
  4.   @gold_window.y = Graphics.height - @gold_window.height  # 使得显示金钱的窗口在底部
  5. end

点评

我只是目测高度是一样的 所以没改 大约都是自适应一行文字 应该一样  发表于 2014-2-7 17:26
回复 支持 反对

使用道具 举报

david_ng223 该用户已被删除
69
 楼主| 发表于 2014-2-7 20:25:15 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

百合控

梦石
0
星屑
6443
在线时间
1275 小时
注册时间
2013-8-21
帖子
3657

开拓者

70
发表于 2014-2-7 20:32:02 | 只看该作者
david_ng223 发表于 2014-2-7 20:25
class Window_Pokedex < Window_Base
  include Dream::Pokedex
  #----------------------------------- ...

你有调用draw_pokedex_text这两个方法吗?

点评

沒有......  发表于 2014-2-7 20:54
萌新瑟瑟发抖
看到我请叫我去干活
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-7-2 01:32

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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