Project1

标题: 【脚本教程】rmxp脚本基础教程(开始填坑) [打印本页]

作者: 欧买歌    时间: 2013-11-16 09:32
标题: 【脚本教程】rmxp脚本基础教程(开始填坑)
本帖最后由 欧买歌 于 2015-1-13 17:46 编辑

大家好,脚本的用处是很多滴,事件里有,脚本编辑器有,神马都有,一旦出错就惨哩,怎样?来学习脚本吧?
如果赞的话,就给点经验好人卡呗!毕竟是一个字一个字打出来的。


第一课:注释
大家打开scene_title,也就是标题画面处理类,看到下面有个生成命令窗口。奇怪?我怎么从没听过脚本可以用中文?那是注释,一行的前面输入“#”,“#”后面的字都会变成绿色的,注释的意思你应该懂吧?小学学古诗的时候就有注释。大家一定要多用注释功能哦!否则时间长了连作者也不知道是干什么的了,一看注释,恍然大悟!
作业:大家插入一页脚本页输入exit,看看效果会怎么样,然后加注释吧!
第二课:添加选择项
回到那个生成命令窗口那里,我们s3那行的末尾按一下回车,出现新一行再输入    s4 = "123"      #学习脚本      ,注意除了引号内和#右边的,一定要半角纯英小写,不能全角文字,也不能中文,要英文,也不能英文大写。奇怪输入了没用啊?我们看到下面有一行:
    @command_window = Window_Command.new(192, [s1, s2, s3])
我们在中括号里再输入,s4。啊!测试游戏,标题画面下面又出现了一个123选项,好吧虽然点了没用(喂喂喂,鼠标点当然没用诶),那就用键盘点吧!没用,那就要给他添加功能啦!下次讲!
作业:加到第五个。
第三课:如何添加功能
再移到下面一些,会发现
  1. #--------------------------------------------------------------------------
  2. # ● 刷新画面
  3. #--------------------------------------------------------------------------
  4.   def update
  5.     # 刷新命令窗口
  6.     @command_window.update
  7.     # 按下 C 键的情况下
  8.     if Input.trigger?(Input::C)
  9.       # 命令窗口的光标位置的分支
  10.       case @command_window.index
  11.       when 0  # 新游戏
  12.         command_new_game
  13.       when 1  # 继续
  14.         command_continue
  15.       when 2  # 退出
  16.         command_shutdown
  17.       end
  18.     end
  19.   end
复制代码
我们把它改成
  1. #--------------------------------------------------------------------------
  2. # ● 刷新画面
  3. #--------------------------------------------------------------------------
  4.   def update
  5.     # 刷新命令窗口
  6.     @command_window.update
  7.     # 按下 C 键的情况下
  8.     if Input.trigger?(Input::C)
  9.       # 命令窗口的光标位置的分支
  10.       case @command_window.index
  11.       when 0  # 新游戏
  12.         command_new_game
  13.       when 1  # 继续
  14.         command_continue
  15.       when 2  # 退出
  16.         command_shutdown
  17.       when 3  # 123
  18.               command_123
  19.       end
  20.     end
  21.   end
复制代码
然后在
  1. #--------------------------------------------------------------------------
  2. # ● 命令 : 退出
  3. #--------------------------------------------------------------------------
  4.   def command_shutdown
  5.     # 演奏确定 SE
  6.     $game_system.se_play($data_system.decision_se)
  7.     # BGM、BGS、ME 的淡入淡出
  8.     Audio.bgm_fade(800)
  9.     Audio.bgs_fade(800)
  10.     Audio.me_fade(800)
  11.     # 退出
  12.     $scene = nil
  13.   end
复制代码
的下面再加一个
  1. #--------------------------------------------------------------------------
  2. # ● 命令 : 123
  3. #--------------------------------------------------------------------------
  4.   def command_123
  5. #这里输入内容
  6.   end
复制代码
在这中间面输入内容就行了,大家一定要多多使用复制!
作业:试着把s5也......你懂的。
第四课:使用功能
我们就在
  1. #--------------------------------------------------------------------------
  2. # ● 命令 : 123
  3. #--------------------------------------------------------------------------
  4.   def command_123
复制代码
的下面加上
p "123"
再打开游戏,选择123,就会弹出窗口,显示"123"。
我们新建一个脚本页,输入p "123",打开游戏时也会弹出窗口"123"。
作业:新建一个事件页,输入p "我是s乘b。"然后用大脑把s*b变成缩写试试。
第五课:计算
p 123没有双引号,却可以显示,但英文不是如此,除了数字,其他的符号文字,都要加双引号。
1+1会变成2这也很奇怪,1-1会变成0,可以使用小括号,但是不使用中括号大括号。
1*2等于2,/号也一样,求余数用%,求乘法N次方用**(也就是两个乘号),整数除以整数,会舍去余数,想要得到小数,就要就要把其中一个整数变成小数,如2,就变成2.0,这样才能得到小数。
作业:以上各方法各试两次。
第六课:消除引号
要弹出窗口显示中文,就得加引号,但是加引号之后弹出窗口时也会出现引号,怎么办呢?
把p换成print就可以了。
作业:把print默十次。
第七课:执行公共事件的脚本
$game_temp.common_event_id = 编号
执行编号的公共事件。注意,这个执行和直接在事件中的公共事件有微妙区别。
如你要执行1号公共事件(公共事件名称的左边有编号,自己去打开来看,当然,包括物品之类的也有),就输入 $game_temp.common_event_id = 1 当然,你也可以直接复制此脚本去用,万事大吉了!什么都能通过公共事件执行!
作业:把 $game_temp.common_event_id = 编号 默四次(你爱学不学,这已经很简单了)
第八课:加入、删除角色
加入角色:$game_party.add_actor(编号)
删除角色:$game_party.remove_actor(编号)
初始化角色:$game_party[编号].setup(编号)
作业:当然,和以前一样,默!四次!
第九课:更简单的注释
嗯!是的!我们现在碉堡了!会改脚本了,但是如果要出脚本,有很多注释要说,总不能麻烦地把每一句话都加上#吧?很麻烦,怎么办呢?
我们可以介样:
  1. =begin
  2. 111111111111111111111111
  3. 111111111111111111111111
  4. 222222222222222222222222
  5. 222222222222222222222222
  6. =end
复制代码
就全都变成注释啦!
作业:孩纸们!继续吧!两个词各默四次。
第十课:随机数
我们搞个社区类的游戏,可能用到随机获得东东的脚本,rand就是随机,rand(10)就是随机机获得编号0~9的物品,rand(4)+6就是随机获得编号6~9的东东。
以下挺有用的,都可以用于随机数。
增减金钱:
$game_party.gain_gold(金钱量)

增减物品:
$game_party.gain_item(物品编号,数量)
举例:
$game_party.gain_item(rand(10),rand(10)):随机获得0-9号中某一物品,数量为0-9随机。

增减武器:
$game_party.gain_weapon(物品编号,数量)

增减防具:
$game_party.gain_armor(物品编号,数量)

角色替换:
加入角色:$game_party.add_actor(编号)
删除角色:$game_party.remove_actor(编号)
初始化角色:$game_party[编号].setup(编号)

等待:x=帧数
@wait_count = X 随机等待使用例子:@wait_count = rand X
作业:你敢试试么?但rand一定要默。
第十一课:开与关
有没有看见脚本编辑器有很多true和false?true表示开,false表示关。如以下就用到了:
计时器打开:
$game_system.timer = 需要的秒数;$game_system.timer_working = true
计时器关闭:
$game_system.timer_working = false
更改禁止存档
$game_system.save_disabled = true/false

更改禁止菜单:
$game_system.menu_disabled = true/false

更改禁止遇敌:
$game_system.encounter_disabled = true/false   

角色透明:
$game_player.transparent = true/false
作业:还用说吗?虽然我正在说。
第十二课:随机数n-a
rand(100):返回0-99的随机数
rand(100)+10000:返回10000-10099的随机数
作业:都老熟人了,你知道作业是什么的。
第十三课:更改字体
如何更改字体呢?我们进入main,看到上面有"黑体"这两个字,我们把它改成"幼圆",就有很好的视觉效果啦!
怎样才能知道咱电脑里有啥字体呢?创建一个Word文档打开,从这个Word文档的上面上面就能知道啦!
最好是系统自带的字体,如宋体、黑体、楷体、幼圆等,否则玩家进入游戏看不到字,就算你在游戏说明中说要安装某种字体,玩家也会费很大的劲去安装的。
作业:把字体改成系统自带的字体4种。
第十四课:更改数值
我要让你们知道数字的重要性!
进入Window_Message
看到下面有
  1. #--------------------------------------------------------------------------
  2. # ● 设置窗口位置与不透明度
  3. #--------------------------------------------------------------------------
  4.   def reset_window
  5.     if $game_temp.in_battle
  6.       self.y = 16
  7.     else
  8.       case $game_system.message_position
  9.       when 0  # 上
  10.          self.y = 16
  11.       when 1  # 中
  12.          self.y = 160
  13.       when 2  # 下
  14.         self.y = 304
  15.       end
  16.     end
  17.     if $game_system.message_frame == 0
  18.       self.opacity = 255
  19.     else
  20.       self.opacity = 0
  21.     end
  22.       self.back_opacity = 160
  23.     end
复制代码
我们把22行的    self.back_opacity = 160,改成    self.back_opacity = 0,对话框透明了!,改成    self.back_opacity = 255,对话框完全不透明了!
然后其他的都有注释,很容易看懂然后改的。
所以,在脚本里面,英文最重要,其次数字,最后才是引号里的中文符号等。
作业:至少在脚本编辑器里更改8次数字,并测试。
第十五课:加法
在脚本中,任何地方都能用到加法。
  1. 欧买歌万岁 = 88
  2. 欧买歌神也 = 44
  3. p rand(欧买歌万岁+欧买歌神也)#0~131
  4. p rand(欧买歌万岁-欧买歌神也)#0~43
  5. p rand(欧买歌万岁*欧买歌神也)#0~3871
  6. p rand(欧买歌万岁/欧买歌神也)#0~1
复制代码
作业:实在想不出什么作业来呢~那就我教过你们的全部句子复习后默一遍。
第十六课:简易变量脚本

  1. a = rand 2         # 为变量 a 代入 随机数0~1。

  2. case a              # 分歧开始。
  3. when 0              #  当 a 为 0 时,
  4.   print "欧买歌万岁"#   显示 欧买歌万岁。
  5. when 1              #  当 a 为 1 时,
  6.   print "欧买歌神也"#   显示 欧买歌神也。
  7. when 2              #  当 a 为 2 时,
  8.   print "欧买歌无敌"#   显示 欧买歌无敌。
  9. end                 # 分歧结束。
  10. #随机弹出窗口欧买歌万岁或欧买歌神也
  11. [code]
  12. 看懂了吗?我为你们带来了变量脚本,有注释的哦!你一定看的懂!
  13. 作业:case、when默四次,整个简易变量脚本默四次。[hr]第十七课:各种变量[code]$Omige
复制代码
以$开头的变量叫做“全局变量”,全局变量就是说连标题画面都能使用的变量,甚至可以在各个存档中公共使用!!
  1. @Omige
复制代码
以@开头的变量叫做“实例变量”,实例变量是用于给特定的对象用的,比如角色的能力值。
  1. omige
  2. $Omige_omige
复制代码
小写或者_开头的变量叫做“局部变量”
  1. OMIGE
复制代码
大写字母开头的叫做常量,这个以后解释。
  1. nil
  2. ture
  3. false
复制代码
以上的都叫伪变量,nil表示无,ture表示真,false表示假。
全局变量、实例变量一开始都为nil,你需要把它们初始化才能使用,也就是$Omige = 0之类的,没初始化不能进行加减乘除,当然没初始化也可以随便赋值。
作业:弄一个二周目三周目、x周目系统
第十八课:条件分支
其实不光case、when,用?语句也可以。
  1. a = 1#赋值1
  2. print ( a == 1 ? "Omige~~" : "omige")
复制代码
如果a==1(条件分支是==,赋值是=),就显示Omige~~,否则显示omige
作业:判断局部变量a是否存在。
第十九课:条件分支2
?条件分支可能会有点难以理解,那么我再列出两个简单的条件分支方式。
  1. a = 1                      #赋值a为1
  2. if a >= 3                                      #如果a大于或等于3的情况下
  3.   print "~\(≧▽≦)/~"                  #就显示~\(≧▽≦)/~
  4. elsif a = 2                                     #除此之外继续判断,如果a等于2的情况下
  5.   print "你是一个好人"                 #就显示你是一个好人
  6. elsif a = 1                                     #除此之外继续判断,如果a等于1的情况下
  7.   print "呵呵"                               #就显示呵呵
  8. else                                              #否则
  9.   print "或许你真的不适合"          #显示或许你真的不适合
  10. end                                             #分支结束
  11. #显示呵呵
复制代码
  1. a = 2                           #赋值a为2
  2. unless a = 1                    #如果a不等于
  3.   print "n(*≧▽≦*)n"    #显示n(*≧▽≦*)n
  4. end                                #分支结束
  5. #显示n(*≧▽≦*)n
复制代码
作业:判断$a是否为"呵呵"
第二十课:定义
有时候因为事件中的脚本编辑框太小了写不下脚本肿么办?
我教你一个办法!!!!
在脚本编辑器里,写:
  1. class Dingyi                        #定义一个类,首字母必须大写
  2.     def dingyi                       #定义一个函数,首字母建议小写
  3.         #脚本内容
  4.     end                                #函数定义结束
  5. end                                    #类定义结束
复制代码
然后在事件中的脚本编辑框里写:
  1. alex=Dingyi.new        #类
  2. alex.dingyi                 #函数
复制代码
RM里的函数是什么呢,比如之前的exit、rand都是RM之前定义过的“函数”了。
作业:重定义几个函数


作者: MustDante    时间: 2013-11-16 09:41
表示你发错区了

而且一个注释有必要发么
作者: 欧买歌    时间: 2013-11-16 09:43
MustDante 发表于 2013-11-16 09:41
表示你发错区了

而且一个注释有必要发么

什么?我要从基础打起,我一天一课,越来越高深。
作者: 秋寒    时间: 2013-11-16 10:03
这里是橙光区,哪来的脚本,你要发教程请到RM区
作者: MustDante    时间: 2013-11-16 10:11
虽然我也是脚本菜鸟
不过目测这个星期我是没什么新东西学了
预计下星期的内容我也会了。。。
坐等移动或删帖
@木下凌枫
作者: 无脑之人    时间: 2013-11-16 12:27
这辈子没见过这样的教程,我可以跟着你一起学习如何写脚本吗?
作者: RyanBern    时间: 2013-11-16 13:52
我是脚本盲啊,最近刚好要学脚本,不知楼主是否可以帮一把呢?
作者: 火星·奈    时间: 2013-11-16 18:27
赶不上F1。
作者: 恐惧剑刃    时间: 2013-11-17 10:43
本帖最后由 恋′挂机 于 2013-11-17 10:51 编辑

菜鸟来了~果然是好教程。LZ能教教我么?

作者: 欧买歌    时间: 2013-11-24 11:46
恋′挂机 发表于 2013-11-17 10:43
菜鸟来了~果然是好教程。LZ能教教我么?

哦不!居然是一个新兵教圣骑士,和其他各位高人!
作者: 星星人    时间: 2013-11-24 12:35
菜鸟来了
作者: 欧买歌    时间: 2013-12-7 10:11
俺顶!俺顶顶顶!为什么这么快就沉了?
作者: 欧买歌    时间: 2013-12-7 10:23
更新了咩!(其实我是在顶,顶啊顶!顶顶顶!)
作者: 欧买歌    时间: 2013-12-8 12:19
本帖最后由 欧买歌 于 2013-12-25 17:58 编辑

现在有了付费主题,再也不用怕没人给我好评了!
作者: 欧买歌    时间: 2013-12-14 17:13
@恋′挂机  @星星人 @火星·奈 @无脑之人 @RyanBern @MustDante @呼唤全楼 。
作者: 恐惧剑刃    时间: 2013-12-14 18:41
楼主加油吧
作者: 星星人    时间: 2013-12-15 10:52

楼主加油
作者: 欧买歌    时间: 2013-12-25 17:08
给点经验好人卡呗!毕竟是一个字一个字打出来的。
作者: 欧买歌    时间: 2014-1-5 18:02
教你们的太多了,我实在想不出什么了,所以本教程将会越来越烂。
作者: 欧买歌    时间: 2014-1-18 17:49
终于停更了!
作者: 欧买歌    时间: 2014-12-27 18:55
开始填坑鸟……
作者: 123hjh    时间: 2016-1-20 15:01
秋寒 发表于 2013-11-16 10:03
这里是橙光区,哪来的脚本,你要发教程请到RM区

额!是你看错了吧!这里是rpg maket讨论区{:8_463:}




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