Project1

标题: 怎样用脚本显示文本? [打印本页]

作者: xcqxhb2011    时间: 2011-8-11 23:17
标题: 怎样用脚本显示文本?
本帖最后由 xcqxhb2011 于 2011-8-11 23:19 编辑

初涉Ruby,想学一下怎样用脚本显示文字,就像事件里的显示文章一样,可以自己设置文字框位置之类的。我觉得这种脚本应该比较容易理解。dsu_plus_rewardpost_czw
作者: Wind2010    时间: 2011-8-11 23:18
去改写Window_Gold吧
作者: xcqxhb2011    时间: 2011-8-11 23:20
Wind2010 发表于 2011-8-11 23:18
去改写Window_Gold吧

??不太懂……是一个组吗?改了有什么效果呢?
作者: Wind2010    时间: 2011-8-11 23:23
xcqxhb2011 发表于 2011-8-11 23:20
??不太懂……是一个组吗?改了有什么效果呢?

默认脚本中的Window_Gold类
个人认为这是一个比较容易修改的窗口类,里面涉及到了窗口生成、位置、画布、描绘方法等
作者: xcqxhb2011    时间: 2011-8-11 23:36
Wind2010 发表于 2011-8-11 23:23
默认脚本中的Window_Gold类
个人认为这是一个比较容易修改的窗口类,里面涉及到了窗口生成、位置、画布、 ...

我试试……不过……本帖重点在“画框显字”,好奇心爆发ing……


xcqxhb2011于2011-8-11 23:39补充以下内容:
怎么只有27行……
作者: Wind2010    时间: 2011-8-11 23:39
xcqxhb2011 发表于 2011-8-11 23:36
我试试……不过……本帖重点在“画框显字”,好奇心爆发ing……

画框就是生成个窗口,显字就是
  1. self.contents.draw_text(x,y,w,h,str,align)
复制代码
具体其他的描绘多看看F1里的Bitmap
作者: 竹轩轩    时间: 2011-8-12 15:20
事件中的“显示文章”等:
1。显示文章
  1. $game_temp.message_text = "你想要的文字"
复制代码
比如你在事件脚本里打上$game_temp.message_text = "啊啊啊!",那就会出现一个对话框写着“啊啊啊!”。

2。更改对话框位置
  1. $game_system.message_position = 数字
复制代码
这个数字代表的是对话框的显示位置,默认的只有三个位置,但是可以通过在脚本Window_Message里面自行添加新的位置(不是本教程的内容,就不说了。)0代表在上面显示,1代表在中间,2代表在下面。当然也可以是别的数字,不过必须在Window_Message里面定义。
  1. #其实添加新位置就在Window_Message类里
  2. case $game_system.message_position
  3.         when 0 # 上
  4.           self.y = 16
  5.         when 1 # 中
  6.           self.y = 160
  7.         when 2 # 下
  8.           self.y = 304
  9.         end
复制代码
后面接着添就行了

3。更改对话框透明度
  1. $game_system.message_frame = 数字
复制代码
这里的数字只能是0或者1,0代表完全不透明,1代表完全不透明。当然这个和对话框的显示位置一样,也可以在脚本Window_Message里面添加新的选项以做出不同的透明度。
#方法同上,只是把if条件句换成case条件句就OK了.

作者: 忧雪の伤    时间: 2011-8-12 15:56
本帖最后由 忧雪の伤 于 2011-8-12 16:05 编辑

标准输出:
p(objects ... )
print(objects ...)


生成窗口:
window = Window_Base.new(x, y, width, height)


生成画布:
window.contents = Bitmap.new(window.width - 32, window.height - 32)


描绘文字:
window.contents.draw_text(x, y, width, height, str[, align])


an example:
  1. window = Window_Base.new(0, 0, 128, 64) # 调用 Window_Base.new ,构建实例。
  2. window.contents = Bitmap.new(0, 0, 32, 96) # 调用 Window#contents 。
  3. window.contents.draw_text(0, 0, 32, 96, 'window') # 调用 Bitmap#draw_text 。
  4. loop { Graphics.update } # 这个不需要理解。
复制代码
* 这个回帖有待完善。
作者: 退屈£无聊    时间: 2011-8-12 16:00
本帖最后由 退屈£无聊 于 2011-8-12 16:06 编辑

好吧。
  1. class Window_NM < Window_Base
  2. def initialize(*args)
  3. super;self.contents = Bitmap.new(width-32,height-32)
  4. end
  5. def draw_text(text)
  6. self.contents.clear
  7. self.contents.draw_text(0,0,self.width,self.height,text,1)
  8. end
  9. end

  10. 先调个Window_NM
  11. 再用draw_text("我说我想要OOXX")
  12. XY什么的直接改就可以了。。
复制代码

作者: 忧雪の伤    时间: 2011-8-12 16:09
退屈£无聊 发表于 2011-8-12 16:00
好吧。

super(args) <=> super(*args)
pass a array <=> pass each item
作者: xcqxhb2011    时间: 2011-8-13 19:04
竹轩轩 发表于 2011-8-12 15:20
事件中的“显示文章”等:
1。显示文章比如你在事件脚本里打上$game_temp.message_text = "啊啊啊!",那就 ...

如果我要自定义文字框的位置,比如x,y,高,宽等,那怎么做呢?也就是说,“显示文章”的事件是怎样用脚本写成的呢?
作者: 竹轩轩    时间: 2011-8-13 19:19
xcqxhb2011 发表于 2011-8-13 19:04
如果我要自定义文字框的位置,比如x,y,高,宽等,那怎么做呢?也就是说,“显示文章”的事件是怎样用脚 ...

在脚本中的Window_Message

作者: xcqxhb2011    时间: 2011-8-17 10:30
Wind2010 发表于 2011-8-11 23:39
画框就是生成个窗口,显字就是具体其他的描绘多看看F1里的Bitmap

这些是什么意思?
  1.   def initialize
  2.     super(0, 0, 160, 64)
  3.     self.contents = Bitmap.new(width - 32, height - 32)
  4.     refresh
  5.   end
复制代码


xcqxhb2011于2011-8-18 09:39补充以下内容:
改Window_Gold的话……我想就用这种窗口显示位置(在哪个地图),于是我把Window_Gold的内容复制到了新的组“位置”里并修改成:
  1. #==============================================================================
  2. # ■ Window_Place
  3. #------------------------------------------------------------------------------
  4. #  显示位置的窗口。
  5. #==============================================================================

  6. class Window_Place < Window_Base
  7.   #--------------------------------------------------------------------------
  8.   # ● 初始化窗口
  9.   #--------------------------------------------------------------------------
  10.   def initialize
  11.     super(0, 0, 160, 64)
  12.     self.contents = Bitmap.new(width - 32, height - 32)
  13.     refresh
  14.   end
  15.   #--------------------------------------------------------------------------
  16.   # ● 刷新
  17.   #--------------------------------------------------------------------------
  18.   def refresh
  19.     self.contents.clear
  20.     cx = contents.text_size($data_system.words.gold).width
  21.     self.contents.font.color = normal_color
  22.     self.contents.draw_text(4, 0, 120-cx-2, 32, $game_party.place.to_s, 2)
  23.   end
  24. end
复制代码
可是,要修改哪里的代码才能让这个“金钱”窗口显示在地图界面上(就是小人仔在地图走的界面)呢?是Window_Base还是什么Map的组?
然后,我想新建一个和gold一样的变量place,再在场景变换时加入条件分歧,地图id为一时place=“XXX”,可是我不知道把这个条件分歧放在哪里……




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