Project1

标题: RB的视频脚本教程【暂停更新,目前期数为8+4】 [打印本页]

作者: RyanBern    时间: 2015-7-16 22:17
标题: RB的视频脚本教程【暂停更新,目前期数为8+4】
本帖最后由 RyanBern 于 2017-8-23 11:50 编辑

给自己开个新坑,不知道自己的视频做得如何呢?走过路过,想要学习脚本的同学们可以过来看看,看后请把你们的意见砸过来吧。
视频上传的优酷,有高清画质(第三期开始是超清画质),看起来感觉还可以,应该不至于看不清吧。
喜欢本视频的同学点一下关注吧,或者在这个主楼点评也行,这样我更新之后你会受到提示的。
每一讲的内容我拆成了若干部分上传,所以看的时候大家可能要看60*N秒的广告,这个我不是故意的。据说分段上传能避免被吞,并且能给高清画质。我第一次整个传的时候youku给我吞个干干净净-_-||
提示:B站的观看效果较清楚一些,如果B站的地址无法观看,请尽快向我反映情况。另外youku上的超清视频的清晰度也是可以的,不过缺点就是有烦人的广告-_-||


写在前面
经过十多天的不懈努力,这个视频教程也初步更新差不多了,目前主要章节有8辑,再加上4个特别篇,感觉够大家看一阵子了。每一辑的总共时常大约一个小时(第八辑是100分钟),为了避免大家看视频产生不耐烦情绪,我把视频分拆成了若干部分,每一部分的时常在20分钟左右。教程里面讲了很多脚本编写的实例,起初大家可以模仿着来,如果有不理解的地方也没有关系,可以到论坛里面和我交流。当然光是看完这些视频,自己写脚本,改脚本仍然会有许多困难,大家不要着急,写脚本的技能是慢慢培养的,只有你多写,多思考,少伸手,你的水平才有可能提高。最后我还是希望大家多评论,你们的关注就是我更新的动力。这个教程并不是不更新了,只是最近精力有限,实在是做不动了,另外我目前能想到的内容也做差不多了,容我找找灵感。如果可能的话,16年1月份会续更。


网盘下载地址:http://pan.baidu.com/s/1i4ANbIP
视频已经全部上传,如果两个站点都无法观看,可以到此网盘里面寻找。



优酷专辑地址:http://list.youku.com/albumlist/show/id_26059746
B站专辑地址:http://www.bilibili.com/video/av2588100/



RB的视频脚本教程第一辑——图片标题(4集全)

Part I:标题文字淡入效果
B站观看地址:http://www.bilibili.com/video/av2588100/index_1.html
Part II:标题文字淡入效果(续)
B站观看地址:http://www.bilibili.com/video/av2588100/index_2.html
Part III:图片标题命令的制作
B站观看地址:http://www.bilibili.com/video/av2588100/index_3.html
Part IV:图片标题的命令制作(续)
B站观看地址:http://www.bilibili.com/video/av2588100/index_4.html
RB的视频脚本教程第二辑——战斗画面美化(4集全)

Part I:横版战斗系统初步
B站观看地址:http://www.bilibili.com/video/av2588100/index_5.html
Part II:HP/SP槽的绘制
B站观看地址:http://www.bilibili.com/video/av2588100/index_6.html
Part III:HP/SP槽的绘制(续)
B站观看地址:http://www.bilibili.com/video/av2588100/index_7.html
Part IV:角色命令窗口的美化
B站观看地址:http://www.bilibili.com/video/av2588100/index_8.html
RB的视频脚本教程第三辑——地图美化(4集全)

Part I:制作地图名和金钱显示窗口
B站观看地址:http://www.bilibili.com/video/av2588100/index_10.html
Part II:制作地图名和金钱显示窗口(续)
B站观看地址:http://www.bilibili.com/video/av2588100/index_11.html
Part III:物品得失提示窗口的设计
B站观看地址:http://www.bilibili.com/video/av2588100/index_12.html
Part IV:物品得失提示窗口的设计(续)
B站观看地址:http://www.bilibili.com/video/av2588100/index_13.html
RB的视频脚本教程第四辑——技能公式(4集全)

Part I:制作技能的Critical效果
B站观看地址:http://www.bilibili.com/video/av2588100/index_14.html
Part II:制作物理特技沉默和技能消耗物品效果
B站观看地址:http://www.bilibili.com/video/av2588100/index_15.html
Part III:制作武器属性加成技能威力和被动技能"致命一击"的效果
B站观看地址:http://www.bilibili.com/video/av2588100/index_16.html
Part IV:制作"吸血"特技(R考场第二期)
B站观看地址:http://www.bilibili.com/video/av2588100/index_17.html
第四辑范例工程: 技能公式.rar (188.37 KB, 下载次数: 384)
RB的视频脚本教程第五辑——对话框加强(4集全)

Part I:默认对话框脚本解说
B站观看地址:http://www.bilibili.com/video/av2588100/index_19.html
Part II:对话框显示人物的名字和立绘
B站观看地址:http://www.bilibili.com/video/av2588100/index_20.html
Part III:制作对话框文字逐个显示的效果
B站观看地址:http://www.bilibili.com/video/av2588100/index_21.html
Part IV:教你如何给【显示文章】添加额外控制码
B站观看地址:http://www.bilibili.com/video/av2588100/index_22.html
第五辑范例工程: 对话框美化.rar (273.67 KB, 下载次数: 355)
RB的视频脚本教程第六辑——队伍跟随(4集全)

Part I:默认地图人物显示机制的解说以及新类Game_Follower的构造
B站观看地址:http://www.bilibili.com/video/av2588100/index_23.html
Part II:将新建的Game_Follower和Sprite_Character连接
B站观看地址:http://www.bilibili.com/video/av2588100/index_24.html
Part III:队伍跟随的实现
B站观看地址:http://www.bilibili.com/video/av2588100/index_25.html
Part IV:队伍跟随的实现(续)
B站观看地址:http://www.bilibili.com/video/av2588100/index_26.html
第六辑范例工程: 人物跟随.rar (189.02 KB, 下载次数: 289)
RB的视频脚本教程第七辑——任务系统(4集全)

Part I:任务数据库的建立
B站观看地址:http://www.bilibili.com/video/av2588100/index_28.html
Part II:队伍增添任务处理以及任务列表初步描绘
B站观看地址:http://www.bilibili.com/video/av2588100/index_29.html
Part III:任务列表与任务详细信息的描绘
B站观看地址:http://www.bilibili.com/video/av2588100/index_30.html
Part IV:任务详细信息的描绘与任务场景的最终制作
B站观看地址:http://www.bilibili.com/video/av2588100/index_31.html
第七辑范例工程: 任务系统.rar (189.5 KB, 下载次数: 295)
RB的视频脚本教程第八辑——技能升级系统(6集全)

Part I:技能升级数据库的设计
B站观看地址:http://www.bilibili.com/video/av2588100/index_32.html
Part II:显示角色和剩余技能点数
B站观看地址:http://www.bilibili.com/video/av2588100/index_33.html
Part III:制作可升级的技能列表
B站观看地址:http://www.bilibili.com/video/av2588100/index_34.html
Part IV:制作技能升级前后对比窗口
B站观看地址:http://www.bilibili.com/video/av2588100/index_35.html
Part V:技能升级前后对比窗口(续)以及制作升级确认提示窗口
B站观看地址:http://www.bilibili.com/video/av2588100/index_36.html
Part VI:技能升级场景的最终制作
B站观看地址:http://www.bilibili.com/video/av2588100/index_37.html
第八辑范例工程: 技能升级.rar (191.09 KB, 下载次数: 336)
RB的视频脚本教程特别篇——额外内容的收录

EPS01:p函数查错范例
B站观看地址:http://www.bilibili.com/video/av2588100/index_9.html
EPS02:数据库功能拓展
B站观看地址:http://www.bilibili.com/video/av2588100/index_18.html
EPS03:alias使用方法简介
B站观看地址:http://www.bilibili.com/video/av2588100/index_27.html
EPS04:谈谈各种类型的变量
B站观看地址:http://www.bilibili.com/video/av2588100/index_38.html


最后的最后:如果你想支持RB的话,就塞一些糖给我吧/w\
求糖.rb (19 Bytes, 下载次数: 4, 售价: 20 星屑)
作者: 美丽晨露    时间: 2015-7-16 23:20
路过围观一下,结果发现视频失效
录视频的话,自我感觉选对录制软件是关键吧(大雾)
然后优酷的审核比较奇怪,一直不想在优酷放视频也是个原因。
魔女喜欢放在土豆上。不过视频的唯一缺点就是有广告(大雾)
作者: 墨凌羽    时间: 2015-7-16 23:25
是实现视频播放的脚本么QAQ
作者: 墨凌羽    时间: 2015-7-17 00:59
本帖最后由 墨凌羽 于 2015-7-17 15:05 编辑

鉴于视频还没传好(结果写完发现已经好了ORZ) 我就在这擅做主张的讲几个Ruby脚本的小坑/小技巧(班门弄斧,还望见谅)
说坑是因为稍不注意就会让你耗费很长时间去debug,而说小技巧则是用得好可以带来很不错的效果
内容

作者: x水管修理工x    时间: 2015-7-20 00:49
本帖最后由 x水管修理工x 于 2015-7-20 07:38 编辑

视频的清晰度看不太清楚啊,能不能把工程也发上来看看?
作者: taroxd    时间: 2015-7-20 07:08
噗……那个工程上网络脚本是要干什么用……
作者: 布罗利    时间: 2015-7-22 08:06
能不能教教怎么写队列系统呢?虽然有现成的,但是缺点太多,除了第一个角色,其他的角色不能判断坐标,还全是日文注释。
作者: chd114    时间: 2015-7-22 20:45
RBQ教程点赞那么RB考场的题目现在还在收集?
作者: 布罗利    时间: 2015-7-26 13:42
按照你的那个逐字描绘的教程,我做出来的为什么什么字都没有呢,不知道哪一步做错了,帮忙看看呗(前面的名称窗口的头像没加,直接做的逐字描绘)
RUBY 代码复制
  1. #==============================================================================
  2. # ■ Window_Message
  3. #------------------------------------------------------------------------------
  4. #  显示文章的信息窗口。
  5. #==============================================================================
  6.  
  7. class Window_Message < Window_Selectable
  8.   Mes_Speed = 1
  9.   #--------------------------------------------------------------------------
  10.   # ● 初始化状态
  11.   #--------------------------------------------------------------------------
  12.   def initialize
  13.     super(80, 304, 480, 160)
  14.     self.contents = Bitmap.new(width - 32, height - 32)
  15.     self.visible = false
  16.     self.z = 9998
  17.     @fade_in = false
  18.     @fade_out = false
  19.     @contents_showing = false
  20.     @cursor_width = 0
  21.     @contents_drawing = false
  22.     @x = @y = 0
  23.     @delay = 0
  24.     @text = ""
  25.     self.active = false
  26.     self.index = -1
  27.   end
  28.   #--------------------------------------------------------------------------
  29.   # ● 释放
  30.   #--------------------------------------------------------------------------
  31.   def dispose
  32.     terminate_message
  33.     $game_temp.message_window_showing = false
  34.     if @input_number_window != nil
  35.       @input_number_window.dispose
  36.     end
  37.     super
  38.   end
  39.   #--------------------------------------------------------------------------
  40.   # ● 处理信息结束
  41.   #--------------------------------------------------------------------------
  42.   def terminate_message
  43.     self.active = false
  44.     self.pause = false
  45.     self.index = -1
  46.     self.contents.clear
  47.     # 清除显示中标志
  48.     @contents_showing = false
  49.     # 呼叫信息调用
  50.     if $game_temp.message_proc != nil
  51.       $game_temp.message_proc.call
  52.     end
  53.     # 清除文章、选择项、输入数值的相关变量
  54.     $game_temp.message_text = nil
  55.     $game_temp.message_proc = nil
  56.     $game_temp.choice_start = 99
  57.     $game_temp.choice_max = 0
  58.     $game_temp.choice_cancel_type = 0
  59.     $game_temp.choice_proc = nil
  60.     $game_temp.num_input_start = 99
  61.     $game_temp.num_input_variable_id = 0
  62.     $game_temp.num_input_digits_max = 0
  63.     # 开放金钱窗口
  64.     if @gold_window != nil
  65.       @gold_window.dispose
  66.       @gold_window = nil
  67.     end
  68.     return
  69.     @text = text.clone
  70.   end
  71.  
  72.   def draw_single_character(c)
  73.     # \\ 的情况下
  74.         if c == "\000"
  75.           # 还原为本来的文字
  76.           c = "\\"
  77.         end
  78.         # \C[n] 的情况下
  79.         if c == "\001"
  80.           # 更改文字色
  81.           text.sub!(/\[([0-9]+)\]/, "")
  82.           color = $1.to_i
  83.           if color >= 0 and color <= 7
  84.             self.contents.font.color = text_color(color)
  85.           end
  86.           # 下面的文字
  87.           next
  88.         end
  89.         # \G 的情况下
  90.         if c == "\002"
  91.           # 生成金钱窗口
  92.           if @gold_window == nil
  93.             @gold_window = Window_Gold.new
  94.             @gold_window.x = 560 - @gold_window.width
  95.             if $game_temp.in_battle
  96.               @gold_window.y = 192
  97.             else
  98.               @gold_window.y = self.y >= 128 ? 32 : 384
  99.             end
  100.             @gold_window.opacity = self.opacity
  101.             @gold_window.back_opacity = self.back_opacity
  102.           end
  103.           # 下面的文字
  104.           next
  105.         end
  106.         # 另起一行文字的情况下
  107.         if c == "\n"
  108.           # 刷新选择项及光标的高
  109.           if y >= $game_temp.choice_start
  110.             @cursor_width = [@cursor_width, x].max
  111.           end
  112.           # y 加 1
  113.           y += 1
  114.           x = 0
  115.           # 移动到选择项的下一行
  116.           if y >= $game_temp.choice_start
  117.             x = 8
  118.           end
  119.           # 下面的文字
  120.           next
  121.         end
  122.         # 描绘文字
  123.         self.contents.draw_text(4 + x, 32 * y, 40, 32, c)
  124.         # x 为要描绘文字的加法运算
  125.         x += self.contents.text_size(c).width
  126.     end
  127.   #--------------------------------------------------------------------------
  128.   # ● 设置窗口位置与不透明度
  129.   #--------------------------------------------------------------------------
  130.   def reset_window
  131.     if $game_temp.in_battle
  132.       self.y = 16
  133.     else
  134.       case $game_system.message_position
  135.       when 0  # 上
  136.         self.y = 16
  137.       when 1  # 中
  138.         self.y = 160
  139.       when 2  # 下
  140.         self.y = 304
  141.       end
  142.     end
  143.     if $game_system.message_frame == 0
  144.       self.opacity = 255
  145.     else
  146.       self.opacity = 0
  147.     end
  148.     self.back_opacity = 160
  149.   end
  150.   #--------------------------------------------------------------------------
  151.   # ● 刷新画面
  152.   #--------------------------------------------------------------------------
  153.   def update
  154.     super
  155.     # 渐变的情况下
  156.     if @fade_in
  157.       self.contents_opacity += 24
  158.       if @input_number_window != nil
  159.         @input_number_window.contents_opacity += 24
  160.       end
  161.       if self.contents_opacity == 255
  162.         @fade_in = false
  163.       end
  164.       @contents_drawing = true
  165.       return
  166.     end
  167.     if @contents_drawing
  168.       if @delay > 0
  169.         @delay -= 1
  170.         return
  171.       end
  172.       if @text != nil && (c = @text.slice!(/./m)) != nil
  173.         draw_single_character(c)
  174.         @delay = Mes_Speed
  175.         return
  176.       end
  177.       # 选择项的情况
  178.       if $game_temp.choice_max > 0
  179.         @item_max = $game_temp.choice_max
  180.         self.active = true
  181.         self.index = 0
  182.       end
  183.       # 输入数值的情况
  184.       if $game_temp.num_input_variable_id > 0
  185.         digits_max = $game_temp.num_input_digits_max
  186.         number = $game_variables[$game_temp.num_input_variable_id]
  187.         @input_number_window = Window_InputNumber.new(digits_max)
  188.         @input_number_window.number = number
  189.         @input_number_window.x = self.x + 8
  190.         @input_number_window.y = self.y + $game_temp.num_input_start * 32
  191.       end
  192.       @contents_drawing = false
  193.       return
  194.     end
  195.     # 输入数值的情况下
  196.     if @input_number_window != nil
  197.       @input_number_window.update
  198.       # 确定
  199.       if Input.trigger?(Input::C)
  200.         $game_system.se_play($data_system.decision_se)
  201.         $game_variables[$game_temp.num_input_variable_id] =
  202.           @input_number_window.number
  203.         $game_map.need_refresh = true
  204.         # 释放输入数值窗口
  205.         @input_number_window.dispose
  206.         @input_number_window = nil
  207.         terminate_message
  208.       end
  209.       return
  210.     end
  211.     # 显示信息中的情况下
  212.     if @contents_showing
  213.       # 如果不是在显示选择项中就显示暂停标志
  214.       if $game_temp.choice_max == 0
  215.         self.pause = true
  216.       end
  217.       # 取消
  218.       if Input.trigger?(Input::B)
  219.         if $game_temp.choice_max > 0 and $game_temp.choice_cancel_type > 0
  220.           $game_system.se_play($data_system.cancel_se)
  221.           $game_temp.choice_proc.call($game_temp.choice_cancel_type - 1)
  222.           terminate_message
  223.         end
  224.       end
  225.       # 确定
  226.       if Input.trigger?(Input::C)
  227.         if $game_temp.choice_max > 0
  228.           $game_system.se_play($data_system.decision_se)
  229.           $game_temp.choice_proc.call(self.index)
  230.         end
  231.         terminate_message
  232.       end
  233.       return
  234.     end
  235.     # 在渐变以外的状态下有等待显示的信息与选择项的场合
  236.     if @fade_out == false and $game_temp.message_text != nil
  237.       @contents_showing = true
  238.       $game_temp.message_window_showing = true
  239.       reset_window
  240.  
  241.       Graphics.frame_reset
  242.       self.visible = true
  243.       self.contents_opacity = 0
  244.       if @input_number_window != nil
  245.         @input_number_window.contents_opacity = 0
  246.       end
  247.       @fade_in = true
  248.       return
  249.     end
  250.     # 没有可以显示的信息、但是窗口为可见的情况下
  251.     if self.visible
  252.       @fade_out = true
  253.       self.opacity -= 48
  254.       if self.opacity == 0
  255.         self.visible = false
  256.         @fade_out = false
  257.         $game_temp.message_window_showing = false
  258.       end
  259.       return
  260.     end
  261.   end
  262.   #--------------------------------------------------------------------------
  263.   # ● 刷新光标矩形
  264.   #--------------------------------------------------------------------------
  265.   def update_cursor_rect
  266.     if @index >= 0
  267.       n = $game_temp.choice_start + @index
  268.       self.cursor_rect.set(8, n * 32, @cursor_width, 32)
  269.     else
  270.       self.cursor_rect.empty
  271.     end
  272.   end
  273. end

作者: RyanBern    时间: 2015-7-26 20:19
布罗利 发表于 2015-7-26 13:42
按照你的那个逐字描绘的教程,我做出来的为什么什么字都没有呢,不知道哪一步做错了,帮忙看看呗(前面的名 ...

大致看了一下,发现如下问题:
1. process_all_characters方法没有定义,那个@text = text.clone本来是此方法的一句话,结果被误写到terminate_message里面去了。由于没有处理文字的这一步骤,所以文字当然就不显示了。
2. draw_single_character里面的变量x, y, text均要变为实变量@x, @y, @text,原因请自己思考。
3. draw_single_character里面的next要变成return,这是因为原来这些语句是在while循环当中,而当方法独立出来之后没有循环,所以此时结束本次描绘需要写return。

不过既然范例工程都放出来了为什么不先对照看看呢?
作者: chd114    时间: 2015-7-28 22:08
美丽晨露 发表于 2015-7-16 06:20
路过围观一下,结果发现视频失效
录视频的话,自我感觉选对录制软件是关键吧(大雾)
然后优酷的 ...

你要看的话给你个下载地址好了···
http://www.bilibilijj.com/video/av2588100/index_X.html
把X改成1到27你就可以下载RB视频脚本教程的任意一课程
作者: RyanBern    时间: 2015-7-30 19:07
近期应该是最后一更了,自顶。
实际是我把我想到的内容都做完了,不知道大家有没有想听的内容,可以通知我。
如果可能的话,我会续更的。
作者: chd114    时间: 2015-7-30 19:13
RyanBern 发表于 2015-7-30 02:07
近期应该是最后一更了,自顶。
实际是我把我想到的内容都做完了,不知道大家有没有想听的内容,可以通知我 ...

你可以把下载地址放出来···
作者: 千佑冰    时间: 2015-7-31 16:45
VA和XP的脚本语音什么的都一样的吗??怕按教程学会后VA不同呢~
作者: xingxing991219    时间: 2015-8-1 21:05
我建议可以宏观地讲一下自己编写或修改脚本的总体思路~~就是说从哪入手、遇到各种问题怎么解决之类的。当然我知道这个不那么好讲,更多的属于经验,个人意见,仅供参考哈( ゚ω゚)不过说实话已经很好了,对我帮助挺大的哈哈,谢谢lz~
作者: 2283522939    时间: 2015-8-11 16:03
脚本是难点啊,学会真不容易
作者: 凯凯星    时间: 2015-8-14 19:32
第七讲第三辑不能看- 。-
作者: zhangbaocs    时间: 2015-8-15 17:40
{:2_270:}   大神,视频可以提供一个百度云之类的定期更新方便下载吗!
作者: 凯凯星    时间: 2015-8-15 18:32
凯凯星 发表于 2015-8-14 19:32
第七讲第三辑不能看- 。-

可以了(o゚ω゚o)
作者: 邪月长啸    时间: 2015-8-17 21:50
收藏~
虽然对脚本还是一知半解
慢慢看了,慢慢学习
其实我一直在期待有一个自己满意的战斗系统
希望RB版主能继续更新下去
作者: wgr273    时间: 2015-8-28 23:51
非常感谢楼主!找这种学习资源很久了!{:2_275:}
作者: wgr273    时间: 2015-8-29 10:13
希望楼主能够上传视频中用到的素材,好让我们一步一步跟着学习,这样掌握的速度跟效率会更好!
作者: 无端忆君    时间: 2016-8-22 10:07
太好啦,谢谢楼主,期待继续更新,
作者: bboodd    时间: 2016-12-3 13:26
先占楼,再慢慢看,谢谢大神。
作者: 南都青林    时间: 2016-12-11 13:33
感谢分享,虚心求教,慢慢磨
作者: 761194397    时间: 2019-3-26 16:11
大神,你QQ多少?
作者: myownroc    时间: 2019-3-26 21:55
哇~rb酱的呻吟声音吼吼听~\(≧▽≦)/~
作者: taeckle    时间: 2023-4-24 01:52
RB大神可以开放一门有关提升RPG Maker XP游戏窗口分辨率的课程吗?




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