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

Project1

 找回密码
 注册会员
搜索
查看: 9010|回复: 16
打印 上一主题 下一主题

[RMVX发布] 新人脚本入门·语法和常用语句(未完编辑中)

[复制链接]

Lv2.观梦者

花开堪折直须折

梦石
0
星屑
681
在线时间
943 小时
注册时间
2010-7-17
帖子
4963

贵宾

跳转到指定楼层
1
发表于 2011-4-20 20:51:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 冰舞蝶恋 于 2011-4-21 13:26 编辑

咱出的第一个脚本教程,希望支持~
另外:咱是脚本白痴,盲,菜鸟,各位前辈别笑……

● 基础入门
最经常使用判断的是:end、if、else、elsif、unless、case、when,还会常用到p、#等等,值得注意的是,end一定要和相应的部分对齐。
if是用来做判断的;
else是不符合的情况下;
elsif是不符合的情况下再次判断(中间就不用加end啦~);
unless也是判断,是除此之外的情况,一般很少用到。

p是用来弹出消息框的,譬如:p "要显示的文字"或是p 变量名(这里就会显示变量)
#后面的文字就会被判断为注释,在脚本中不起任何作用。

运算符号有:+(加)、-(减)、*(乘)、/(除)、()(括号,不能使用中括号或是大括号,但小括号可以叠加使用)

其实还有更偷懒的办法:+=(当前值加上多少)、-=……其他同理,请各位自行在脑内补充完整~
条件判断有:==(在判断中一定不可以用=)、!=(不等于)、>=(大于等于)、<=(小于等于)、>(大于)、<(小于)

变量有:全局变量、类变量、方法变量、局部变量
变量可以是任何中英文的名字,但不可以随意用字符,唯一可以用来表示在变量名称中的字符是“_”,连接符。
全局变量的特征是:$变量名称 【可以在全局调用和修改】
类变量:@@变量名称 【只能在当前类修改调用】
方法变量:@变量名称 【只能在当前的class使用】
局部变量:变量名称 【只能在当前位置使用】

变量大致分 数值类、 文本类、 逻辑类、 数组哈希类四种,空的变量表示为nil。
数值类:顾名思义啦,就是数值。可以进行加减乘除的运算,允许使用小括号。
文本类:用""或是''框起来的内容文字。
逻辑类:用于判断是或否的变量,可为true或false。
数组哈希类:数组是用[]框起来的多个变量,之间用逗号分割,长度不限,类别不限。读取的时候从0开始。比如:数组a = [1,"a",true,b] # 注意:这里的b是一个变量。比如,你想读取到这个数组的1,你就得用:数组a[0],要读取到"a",就用数组a[1],以此类推。
常量也许是特殊的变量?由于常量是用大写字母开头的,所以一般放在module里……
读取就参照下面吧……

联系刚才讲到的东西,这里做一段示例:
  1. a = 5 # 这个是局部变量
  2. @b = true # 方法变量
  3. @@na_s = "66RPG" # 类变量
  4. $WC = "厕所" # 全局变量
  5. s = [a, @b, @@na_s, $WC]# 这是个数组
  6. #--这里演示运算方法---------
  7. a += 2  # 这里实际上是a+2
  8. p a  # =>7
  9. if a > 5
  10.   @b = false
  11. elsif a == 5
  12.   @@na_s = "伪·66RPG"
  13. else
  14.   $WC = s[2]
  15.   p $WC  # 这时候显示的就是@@na_s的内容了~
  16. end # 别忘了要结束!
  17. if $WC != @@na_s # 如果$WC不等于@@na_s会发生什么呢?
  18.   a = nil # 清空变量a
  19. end
复制代码
  1. #-设定常量---
  2. module Abc
  3.   Defg = 40
  4. end
  5. #-读取常量---
  6. Abc::Defg
  7. #-结束---
复制代码

● 脚本语句

开关变量操作
$game_switches[开关号码] = (false/true) # 开启/关闭开关
$game_variables[变量号码] = 变量内容 # 这里控制的是游戏变量,而用脚本则可以不仅限于数值的操控了。

文章的显示
set_message_waiting # 刷新对话框
$game_message.texts.push("显示内容") # 显示文章
$game_message.face_name = "头像名" # 更改对话头像
$game_message.face_index = 头像索引 # 从0~7,具体可以参考事件的显示文章
$game_message.position = 0 # 更改窗口位置,0上,1中,2下
$game_message.background = 0 # 更改窗口特征,0普通窗口,1背景变暗,2透明

获取角色/敌人
$game_party.members[队伍编号] # 队伍角色的编号从0开始。0代表第1人,以此类推。
$game_actors[数据库编号] # 数据库的角色设定中,从1开始。
$data_enemies[数据库编号] # 敌人
# 以下是获取角色的能力值等,请在上方获取的角色后加.,如:$game_actors[1].maxhp。敌人同理。不过还是要啰嗦一下,敌人是没有等级、头像、行走图和装备等的,所以请注意不要用混了~
编号:id
名称:name
等级:level
生命:hp
最大生命:maxhp
魔法:mp
最大魔法:maxmp
所属职业的编号:class_id
攻击力:atk
防御力:def
精神力:spi
敏捷性:agi
数据库中设定的初始等级:initial_level
行走图名:character_name
行走图索引:character_index # 如果是用默认的8个一组的行走图的话,0~7
头像名:face_name
头像索引:face_index # 同上。
是否二刀流:two_swords_style # 返回true或false
是否固定装备:fix_equipment
是否自动战斗:auto_battle
是否超强防御力:super_guard
是否药物知识:pharmacology
是否暴击加强:critical_bonus

物品/特技/装备(从数据库中获取)
$data_items[数据库编号] # 物品
$data_skills[编号] # 特技
$data_weapons[编号] # 武器
$data_armors[编号] # 防具
# 这里用来读取,同样,读取的时候也需要加.,如:$data_items[1].price。
【通用】
编号:id
名字:name
备注:note
图标索引:icon_index
描述:description

【特技和物品通用】
使用范围:scope # 请自己参照数据库吧,返回值从0开始。
使用场合:occasion
动画编号:animation_id
公共事件编号:common_event_id
基础伤害值:base_damage
分散度:variance
攻击关系度:atk_f
精神关系度:spi_f
是否物理攻击:physical_attack
是否魔法伤害:damage_to_mp
是否吸收伤害:absorb_damage
是否无视防御:ignore_defense

【物品】
价格:price
是否是消耗物品:consumable # 返回true/false
生命回复量:hp_recovery
魔法回复量:mp_recovery
生命回复率:hp_recovery_rate
魔法回复率:mp_recovery_rate

【特技】
魔法消耗:mp_cost
成功率:hit

【装备】
武器动画编号:animation_id
价格:price
攻击力:atk
防御力:def
精神力:spi
敏捷性:agi
是否双手武器:two_handed
是否先发制人:fast_attack
是否频发暴击:critical_bonus
是否连击:dual_attack
防具类别:kind
是否防止暴击:prevent_critical
是否减半魔法消耗:half_mp_cost
是否双倍经验:double_exp_gain
是否自动恢复生命:auto_hp_recover

职业(这个用途不是很大)
$data_classes[编号]
编号:id
名字:name
位置:position # 0前卫,1中卫,2后盾
可装备的武器:weapon_set # 返回数组
可装备的防具:armor_set # 返回数组
可习得的特技:learnings # 返回数组

到这里这个常用的语句库就结束啦~欢迎各位补充【因为还不太全啊啊!
咱这个事件党的脚本小白继续跑回去做事件好了……

另外讲一下rand随机的用法好了~
rand(b)+a
那么随机数的最小值是a,最大值是a+b-1
比如需要2~5的随机数,那么rand(4)+2即可。
还有一个方法,就是rand(a),那么随机数的最小值则是0,最大值a-1。

点评

写的很好,对我这这种菜鸟来说真的很有用.....加油!  发表于 2011-5-15 12:29
我居然最高可以加7分了,以前都3分的(不要鄙视我,我是好人),都给你把  发表于 2011-4-23 16:28
妹的,你们就不要鄙视咱的7分了。。。。。咱最高只能加7分啊好不好啊你们~~  发表于 2011-4-21 11:36

评分

参与人数 6星屑 +1050 梦石 +4 收起 理由
liweiliniu + 6
killkill2298 + 14 支持
DeathKing + 776 + 4 D计划鼓励。
一箭烂YiJL + 40 算是工资的填补吧~= =
蕾米莉亚·斯卡雷特 + 200 再接再厉, 偷偷用一下权限~
clande + 14 支持= =

查看全部评分

大家好,我叫节操,有一天,我被吃了。
http://forever-dream.5d6d.com
永恒の梦制作组论坛

129993099
永恒の梦制作组QQ群

Lv1.梦旅人

简史

梦石
0
星屑
120
在线时间
422 小时
注册时间
2008-7-4
帖子
736

开拓者

2
发表于 2011-4-20 21:08:19 | 只看该作者
本帖最后由 clande 于 2011-4-20 21:11 编辑

支持的说。。沙发求浮云

点评

感谢支持  发表于 2011-4-20 21:16
回复 支持 反对

使用道具 举报

Lv2.观梦者

花开堪折直须折

梦石
0
星屑
681
在线时间
943 小时
注册时间
2010-7-17
帖子
4963

贵宾

3
 楼主| 发表于 2011-4-20 21:16:43 | 只看该作者
写得很累……算了,偷个懒,明天再补上吧~那啥先休息去了~
占楼等编辑。
大家好,我叫节操,有一天,我被吃了。
http://forever-dream.5d6d.com
永恒の梦制作组论坛

129993099
永恒の梦制作组QQ群
回复 支持 反对

使用道具 举报

Lv1.梦旅人

百合乡の蕾咪

梦石
0
星屑
55
在线时间
151 小时
注册时间
2011-1-12
帖子
198
4
发表于 2011-4-20 21:24:28 | 只看该作者
module    是定义模块不是定义类.

回复 支持 反对

使用道具 举报

Lv4.逐梦者

弓箭手?剑兰

梦石
0
星屑
5704
在线时间
833 小时
注册时间
2010-11-17
帖子
1140
5
发表于 2011-4-20 21:56:00 | 只看该作者
其实需要先教一下什么表达式么?

关于量的特性的说:
A = 0 # 常量, 不能变,其余特性和局部变量一样
a = 0 # 局部变量, 不能跟保留字一样, 在环境(函数/模组)过后自动释放
@a = 0 # 实例变量, 在整个环境(类/模组/函数)里一直使用
@@a = 0 # 类变量, 在同一个类中的共同使用的变量
$a = 0 # 全局变量, 跨越环境至任何地方都能用的变量

比较要注意的是实例变量,他可以扩展为公共实例变量。
还有就是出了上述的变量外,还有一种叫做伪变量,意思是一个代号或假名,
常见有:self(自身)、nil(空/无)、false、true


其实你"逻辑类"就是布林值(Bool),分为true和false,也就是真类和伪类。

然而在变量方面我们不能分为四大类,普通的Bitmap.new也是一个类了,
0、[ ]、{ }、" "、' '、nil、true、false
前五者是Ruby所提供的字面分辨/字面含义,不像C/C++等语言要先定义变量的类型,才能修改。
而后三者是伪变量,其实他们分别是NilClass、TrueClass、FalseClass。

全部类都应该继承Object(物件类),Object又包括Kernel(核心模块),但是我们在全局定义一些函数或者变量,也就等于在Kernel定义了。Object和Kernel的环境营造了面向对象(?)

点评

本来就是盲……  发表于 2011-4-21 13:03
都能写教程了,还说是脚本盲...  发表于 2011-4-21 12:56
那啥,咱这种脚本盲还是溜回去写事件系统吧……= =||  发表于 2011-4-21 12:45
前后说话不一致= =  发表于 2011-4-21 12:36
前辈真的是很厉害的!很佩服!  发表于 2011-4-21 12:24

评分

参与人数 1星屑 +24 收起 理由
summer92 + 24 内牛满面,关于变量的作用域我终于了解了.

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

百合乡の蕾咪

梦石
0
星屑
55
在线时间
151 小时
注册时间
2011-1-12
帖子
198
6
发表于 2011-4-20 22:26:02 | 只看该作者
变量的作用区域应该是在 变量的定义的那个区间内才对.
如果把 a = 0 写到 class 之外去的话, 它也能成为一个类似的全局变量.

另外, 类变量应该是说在同一个类的实例中共同使用的变量

点评

也可以. 只是静态方法不能访问非静态的变量就是了. 不知道 Ruby 里是不是这样的~~  发表于 2011-4-21 15:50
类的静态上下文中也能访问类变量。  发表于 2011-4-21 15:01

评分

参与人数 2星屑 +26 收起 理由
summer92 + 24 啊,这种模糊的定义又跟其他语言不一样了,.
一箭烂YiJL + 2 纠正对

查看全部评分

回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1195
在线时间
1564 小时
注册时间
2008-7-30
帖子
4418

贵宾

7
发表于 2011-4-20 23:08:15 | 只看该作者
排版控路过。
回复 支持 反对

使用道具 举报

Lv2.观梦者

花开堪折直须折

梦石
0
星屑
681
在线时间
943 小时
注册时间
2010-7-17
帖子
4963

贵宾

8
 楼主| 发表于 2011-4-21 13:35:22 | 只看该作者
经过不懈努力,总算更新完毕……
大家好,我叫节操,有一天,我被吃了。
http://forever-dream.5d6d.com
永恒の梦制作组论坛

129993099
永恒の梦制作组QQ群
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
110
在线时间
953 小时
注册时间
2007-4-25
帖子
805
9
发表于 2011-4-21 15:17:26 | 只看该作者
回复 一箭烂YiJL 的帖子
还有一种叫做伪变量,意思是一个代号或假名,
常见有:self(自身)、nil(空/无)、false、true

这个说法我没听过,我只知道 PHP 有个伪变量 `$this',因为它的字面值看起来像是 PHP 的变量。Ruby 正式用语中似乎没有这个说法,不知能否援用一下相关材料。

分为true和false,也就是真类和伪类。

`true' 和 `false' 都是实例,不是类。

Object又包括Kernel(核心模块)

这个的正式术语叫做“mix-in”,中文界有不少人称其为“混入”。

但是我们在全局定义一些函数或者变量,也就等于在Kernel定义了。

全局上下文有两个隐式上下文:default definee 和 `self',其中 default definee 是 Object,`self' 引用的是一个被命名为 `main' 的 `Object' 实例。因此,全局定义的方法会成为 Object 的实例方法,变量则属于 `main' 这个 `Object' 实例的实例上下文。
关于 default definee 可以参考 tips 的 77、76 楼:
http://rpg.blue/forum.php?mod=re ... 1&fromuid=57686
关于顶层环境可以参考:
http://szsu.wordpress.com/2009/11/07/top_level_object_kernel/
(不过这个没有提到 default definee,因为写的时候还不知道有 default definee 这个东西)
[email protected]:~> repeat 1 fortune
Matz is nice, so we are nice.
回复 支持 反对

使用道具 举报

Lv4.逐梦者

弓箭手?剑兰

梦石
0
星屑
5704
在线时间
833 小时
注册时间
2010-11-17
帖子
1140
10
发表于 2011-4-21 18:44:15 | 只看该作者
回复 苏小脉 的帖子
伪变量

PHP我不懂。Ruby相关材料这里有写一点,但是不多:http://www.kuqin.com/rubycndocument/man/syntax_vac.html
在"伪变量"一栏中。

`true' 和 `false' 都是实例,不是类。

我5楼的小错误真多。`true' 和 `false' 是实例,但无可否认,他们是TrueClass和FalseClass的实例。("`true' 和 `false' 是类"好像也说的通吧。)这个是一个实验:
  1. a = false
  2. p a.is_a?(FalseClass) rescue p "Error"             # => true
  3. p a.is_a?(false) rescue p "Error"                  # => Error

  4. b = nil
  5. p b.is_a?(NilClass) rescue p "Error"               # => true
  6. p b.is_a?(nil) rescue p "Error"                    # => Error

  7. p nil.to_a   # => [ ]
  8. p nil.to_i   # => 0
  9. p nil.to_f   # => 0.0
  10. p nil.to_s   # => " "

  11. p NilClass.new   # => NoMethodError
  12. # 我们并不能创建"另外一个nil"
复制代码
这个的正式术语叫做“mix-in”,中文界有不少人称其为“混入”。

Ruby语法不是include Kernel么?

顶层、Object、Kernel

后者的文章跟我的想法一样,像就更清楚和认定这种说法了。
但是前文(default definee),我真的乱了{:4_84:}。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-21 23:40

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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