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

Project1

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

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

[复制链接]
david_ng223 该用户已被删除
51
 楼主| 发表于 2014-2-5 23:35:21 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

百合控

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

开拓者

52
发表于 2014-2-6 08:30:37 | 只看该作者
david_ng223 发表于 2014-2-5 23:35
經過這4天學習ruby的日子,
雖然余烬之中和taroxd都說ruby很簡單,
再加上兩位悉心的教導,

学习算不上……因为都只是走马观花 看了VB C/C++ Java 算是明白基础语法 但不能说会……
比较起来ruby还算是很容易的

如果以脚本为目的的话 现在你可以尝试着去写了
当然 根据你想要的功能你常常要翻一下RGSS3游戏内建类  或者参考一下自带脚本 这是很正常的

点评

我輕輕叫喚您,喚醒心中愛火XD  发表于 2014-2-6 21:18
萌新瑟瑟发抖
看到我请叫我去干活
回复 支持 反对

使用道具 举报

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

使用道具 举报

Lv4.逐梦者 (版主)

百合控

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

开拓者

54
发表于 2014-2-6 21:29:59 | 只看该作者
david_ng223 发表于 2014-2-6 20:27
請問@viewport是什么來的??
@taroxd @余烬之中


简单地说 比如一个游戏  窗口是544*416的 现在我要显示两个精灵 不想让A遮挡或影响到B 或者有好多精灵想要分组管理 就使用viewport
一般情况下viewport不需要指定
萌新瑟瑟发抖
看到我请叫我去干活
回复 支持 反对

使用道具 举报

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

使用道具 举报

Lv4.逐梦者 (版主)

百合控

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

开拓者

56
发表于 2014-2-6 22:51:45 | 只看该作者
david_ng223 发表于 2014-2-6 22:34
#--------------------------------------------------------------------------
  # ● 创建敌人类型 ...

因为涉及到各种类的新定义方法 所以解释起来很复杂
但是关键的一点
找到方法所述的实例 找到实例所述的类 找到类中关于方法的定义
RUBY 代码复制
  1. @category_window.item_window = @list_window

item_window 是@category_window的方法 而@category_window = Window_EnemyType.new(0, 0)
所以你到class Window_EnemyType中寻找item_window 的定义就OK
不过貌似你的脚本不是自带脚本 所以我找不到……新定义的类在定义中寻找 这是脚本作者定义的方法
@list_window.info_window = @detail_window同理

点评

55樓的腳本來自[url=http://bbs.66rpg.com/thread-223640-1-1.html]敌人图鉴 VA[/url]  发表于 2014-2-6 22:55
萌新瑟瑟发抖
看到我请叫我去干活
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

百合控

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

开拓者

57
发表于 2014-2-6 23:07:00 | 只看该作者
可以找到
RUBY 代码复制
  1. def item_window=(item_window)
  2.     @item_window = item_window
  3.     update
  4.   end

所以在Window_EnemyType 这个类中寻找有关@item_window的操作
RUBY 代码复制
  1. def update
  2.     super
  3.     @item_window.category = current_symbol if @item_window
  4.   end

基本上就是这样
那么 现在关注@item_window.category = current_symbol
我们知道 这个@item_window实际上是
RUBY 代码复制
  1. @category_window.item_window = @list_window

于是找 @list_window
RUBY 代码复制
  1. @list_window = Window_EnemyList.new(0, 48, 160, Graphics.height-48)

现在又找Window_EnemyList
RUBY 代码复制
  1. class Window_EnemyList < Window_ItemList

并且class Window_EnemyList中并没有category方法 所以我们找他的父类 这个父类在内部类中

就这样 一层一层找下去 会发现这个category会在下级窗口中显示指定类别的物品(普通、防具、武器、贵重)【为什么我知道 这只不过是用得多了自然记住 不需要特别的记

另外一个@list_window.info_window = @detail_window也是一样
info_window 方法是新的方法 @detail_window属于Window_EnemyDetail 是新的类 我今晚时间不够 就只说这么多了
萌新瑟瑟发抖
看到我请叫我去干活
回复 支持 反对

使用道具 举报

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

使用道具 举报

Lv4.逐梦者 (版主)

百合控

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

开拓者

59
发表于 2014-2-7 09:01:20 | 只看该作者
david_ng223 发表于 2014-2-7 08:35
那么即是說:
@category_window的下级窗口會显示指定类别的物品,
而這個會显示指定类别物品的窗口就是@lis ...


是的 我再举个例子

比如我们要实现一个场景Scene_Review  这个场景目的是显示已经经历过的情节

那么场景的左边是一个窗口 用来选择事件(比如【哈斯顿战役】)  右边是另一个窗口 显示详细的描述(XX年XX月XX日  哈斯顿城…………)
假设左边的窗口有这样的部分定义
RUBY 代码复制
  1. class Widow_ReviewList < Window_Base
  2.   def info_window=(iw)
  3.      @info_window = iw
  4.   end
  5.  
  6.   def update
  7.      # update self
  8.      update_info if @info_window
  9.   end
  10.  
  11.   def update_info
  12.     @info_window.set_text(INFORMATION[@index])
  13.   end
  14. end

右边的窗口有这样的定义
RUBY 代码复制
  1. class Window_ReviewDetail < Window_Base
  2.   def set_text(text)
  3.      contents.clear
  4.      draw_text_ex(0,0,100,100,text)
  5.   end
  6. end

很显然   左边的List需要一个下属机构    List会把详细内容告诉下属机构   下属机构负责描绘出来    其中INFORMATION是一个数组   INFORMATION[@index]获取指定序号的事件的详细信息*

那么 我们可以在场景中这样
RUBY 代码复制
  1. class Scene_Review < Scene_Base
  2.   def start
  3.     super
  4.     create_detail_window
  5.     create_list_window
  6.   end
  7.  
  8.   def create_detail_window
  9.     @detail_window = Window_ReviewDetail.new
  10.     # do something or not
  11.   end
  12.  
  13.   def create_list_window
  14.       @list_window = Window_ReviewList.new
  15.       @list_window.info_window = @detail_window
  16.       # do sth. or not
  17.   end
  18. end



* 获取指定序号的详细信息并不安全  因为随着游戏进程  各种事件的序号会改变  但这里只是举个例子

点评

私以为这种时候应该直接丢出一本教程  发表于 2014-2-7 09:07
萌新瑟瑟发抖
看到我请叫我去干活
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-24 11:33

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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