赞 | 0 |
VIP | 0 |
好人卡 | 0 |
积分 | 1 |
经验 | 7526 |
最后登录 | 2021-4-24 |
在线时间 | 31 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 59
- 在线时间
- 31 小时
- 注册时间
- 2009-1-30
- 帖子
- 207
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
{/se}{/se}
上网的时候无意发现的=。=
虽然F1中很详细 但是不集中 新手复制过去放到小本本里随时翻翻
最后还有各种事例
{/hx}正在将游戏从事件劲可能都写成脚本形式中
- 变量类型:
- 全局变量 $var
- 实变量 @var
- 局部变量 var
- 常量 VAR
- 数据类型(注:RGSS中变量类型为弱变量,无需定义,只要初始化即可。):
- 数值型 0~9
- 浮点型 0~9,小数点
- 字符串型 加了""的在ASCII码表上的任意字符。
- 布尔型 true/false
- 空型 nil
- RGSS是Ruby的游戏脚本系统,所以关键字与Ruby原版大同小异,但也有少数修改,如:
- RGSS1.02J(或更高版本)中,puts()函数功能被简化为p,添加了print函数,
- RGSS1.03J中添加了块注释方法,即以“=begin”开头,以“=end”结束。
- RGSS遇到换行符就自动结束当前的这一行,这一点是与VB相似的,当然,RGSS也可以象C语言那样以西文分号结束,这点看习惯。
- RGSS主程序开始与结束
- begin
- 程序段
- end
- RGSS库的开始与结束
- modle 库名
- 程序段
- end
- RGSS类的开始与结束
- class 类名 < [父类]
- 程序段
- end
- RGSS自定义函数的开始与结束
- def 函数名[(参数)]
- 程序段
- end
- RGSS库的调用
- include 库名
- RGSS类的调用
- 类名.new[(类中initialize函数的参数)]
- RGSS自定义函数的调用
- 函数名[(参数)]
- RGSS中的条件分歧
- 1.if语句
- 示例:
- if $a == "66rpg"
- print("欢迎来到#{$a}")
- end
- 2.if...else语句
- 示例:
- if $username == "admin" and $password == "abc"
- print("你好,Admin")
- else
- print("您无权察看!!")
- exit
- end
- 3,if...elsif...else语句
- 示例:
- if $name == "Tony" and $lastname == "Fox"
- print("Welcome, Tony Fox!")
- elseif $name == "Iceandsnow" and $lastname == "Fox"
- print("Welcome, Iceandsnow Fox!")
- else
- print("Unable Name")
- end
- 4.case语句
- case 变量
- when 值
- 语句块
- when 值
- 语句块
- else
- 语句块
- end
- RGSS中的循环
- while ~ end在满足特定条件期间进行循环的情况下使用 while 语句。
- a = 0 # 为变量 a 赋值代入 0。
- i = 1 # 为变量 i 赋值代入 1。
- while i <= 5 # 当变量 i 为 5 以下时循环开始(重复以下处理),
- a += i # 变量 a 加上 i 的值。
- i += 1 # 变量 i 的值增加 1。
- end # 循环结束。
- p a # 显示计算结果。
- 这个示例是求从 1 到 5 这五个数字总和的程序。在这里,变量 i 是用来产生从 1 到 5 这五个数字用的。当然变量名也可以不用 i,一般情况下循环处理用的变量会使用 i、j、k 为名称。
- 那么,这个程序最重要的是 i += 1 这行。如果没有这行 i 的值永远为 1,而 i <= 5 的条件也会一直满足,就会成为无限循环。因此,这里每次都向 i 加上 1 使得 i 的值依次变为 2、3、4、5、6 从而使得循环结束。
- 变量 a 和 i 的数值变化,如下表所示。
- 循环 a 的值 i 的值
- 初始状态 0 1
- 1 次后 1 2
- 2 次后 3 3
- 3 次后 6 4
- 4 次后 10 5
- 5 次后 15 6
- 循环 5 次后,在 a 的数值里面实际上进行了 1+2+3+4+5 的计算,i 的值也超过了 5 而执行 end 使得循环结束。
- 然后以 p 命令显示最终 a 的值,就会显示出答案 15。
- 变化范围
- 数值的范围,例如类似于「从 1 到 5」这样的概念就称为变化范围。
- 1..5
- 上述示例表示「从 1 到 5」的意思。使用 .. 运算符,就能作成一个变化范围。
- 而且,使用 ... 运算符也可以。
- 1...5
- 和 .. 不同的是「不含最后一个数」。所以,这种情况实际上表示的是「从 1 到 4」的意思。
- for ~ in ~ end
- 想在变化范围表示的范围内循环的情况下使用 for 语句。
- a = 0 # 为变量 a 赋值代入 0。
- for i in 1..5 # 变量 i 的值按从 1 到 5 的范围变化,
- a += i # 变量 a 加上 i 的值。
- end # 循环结束。
- p a # 显示计算结果。
- 这个示例和使用 while 语句的示例完全相同,也是求从 1 到 5 这五个数字总和的程序,但比使用 while 的情况更加简洁。在 while 中变量 i 加上 1 表示的是从 1 到 5 的范围,然而在 for 中是用变量 i 按「从 1 到 5 的范围」的顺序代入来表示。表面看起来不同,但实际上进行的是意思完全相同的处理。
- Ruby 中有许多语法,循环中也存在各种各样不同的方法。在不同语法使用中,请按照这个示例提示的「让编写更简便」的方式来思考。实际上,如果理解了条件分歧和循环的话,就能进行大部分逻辑运算了。
- loop do ~ end
- 未指定循环次数和条件的情况下,也就是想进行无限循环时使用 loop 语句。这个与 while 和 for 语句的性质稍微有所不同,一般情况下没有必要注意。
- i = 0 # 为变量 i 赋值代入 0。
- loop do # 循环开始。
- i += 1 # 变量 i 的值增加 1。
- p i # 显示变量 i 的值。
- end # 循环结束。
- 这个示例是「一边把 i 的值加上 1,一边显示 i 的值」的程序,没有结束条件。一旦运行的话就会连续显示 1、2、3……。如果这种对话框不断显示的话,就算要结束程序也是不可能的,只能按着 F12 键不放强行关闭对话框,并点击右上方的结束按钮关闭程序。
- break
- 想中途中断循环就要使用 break 命令。
- i = 0 # 为变量 i 赋值代入 0。
- loop do # 循环开始。
- i += 1 # 变量 i 的值增加 1。
- if i == 5 # 如果变量 i 的值为 5 的话,
- break # 中断循环。
- end # 条件分歧结束。
- p i # 显示变量 i 的值。
- end # 循环结束。
- 上述示例在程序中加上了「i 等于 5 的就中断循环」的条件。运行该程序,显示 1、2、3、4 就结束了。
- break 即使在 while 和 for 等其它方法作成的循环中也能使用。
- next
- 在不中断循环的情况下,跳过本次循环而进入下一次循环时使用 next 命令。
- for i in 1..5 # 变量 i 的值按从 1 到 5 的范围变化,
- if i == 3 # 如果变量 i 的值为 3 的话,
- next # 进入下一次循环。
- end # 条件分歧结束。
- p i # 显示变量 i 的值。
- end # 循环结束。
- 运行这个示例,会显示 1、2、4、5。
- [编辑本段]程序示例
- 1,helloworld程序
- begin
- print("HelloWorld!!")
- end
- 2,数值运算
- begin
- x = 10
- y = 20
- p x+y
- end
- 3,条件判断
- begin
- a = 10
- if a>=5
- print("a的值大于等于5")
- else
- print("a的值小于等于5")
- end
- end
- 4,循环
- begin
- for i in 1..3
- print("这是第#次显示")
- end
- end
- begin
- do
- print("这是第#次显示")
- while i <= 4
- end
- begin
- loop do
- i++
- print("这是第#次显示")
- if i = 4
- break
- end
- end
- end
- 5,函数调用
- class My_Class
- def mian # 主处理
- x = 6
- y = 5
- addnum(x, y)
- end
- def addnum(num1, num2)
- sum = num1 + num2
- p sum
- end
- end
- 6,类的调用
- begin
- if $scene != nil
- $scene.main
- else
- exit
- end
- $scene = Scene_MyClass.new
- end
- 7,库的生成及调用
- module MYMODULE
- def division(num1, num2)
- sum = num1/num2
- return sum
- end
- end
- class My_Class
- include MYMODULE
- def main
- x = 25
- y = 16
- z = division(x, y)
- p z
- end
复制代码
还有个很好的东西 VX 自定义的一些命令
- [quote][b]以下引用[u]superufo于2008-1-24 9:39:35[/u]的发言:[/b]
- 本帖得到版主鼓励,积分增加150
- 本贴悬赏额度如下:VIP:0 积分:31
- 先声明:这个不是教学,你可以把它当作查询手册。如果有你需要的脚本而这里没有收录,请回帖提出,谢谢!
- 使用方法:你需要哪个就自己找一下,或者用ctrl+f搜索一下,自己在事件里面打1、2遍,以后这个知识就是你自己的了。如果每次都ctrl+v ctrl+v,什么时候才能学会呢?
- 显示文章:
- $game_message.texts.push("****")
- 显示引号中的文章。一般要配合初始化显示文章使用。
- 更改文章选项:
- $game_message.position = 0,1,2
- 表示上、中、下,三个位置
- 更改文章背景:
- $game_message.background = 0 ,1,2
- 表示普通窗口、背景变暗、透明,三种效果
- 初始化显示文章:
- set_message_waiting
- 注:这个用了以后下一次显示文章时的文章选项、背景恢复正常,如果不用这个的话所有显示的文章将并在一个框里,有兴趣的去试一下。
- 中断事件处理:
- command_end
- 把某一个事件暂时消除
- $game_map.events[X].erase
- 其中X表示把X号事件暂时消除,如果是消除本事件X = @event_id
- 执行公共事件:
- $game_temp.common_event_id = 编号
- 执行编号的公共事件。
- 开关操作:
- $game_switches[编号] = true / false
- true是打开,false是关闭
- 变量操作:
- $game_variables[编号] = 数值
- 这里有一些常用的内容:
- rand(100):返回0-99的随机数
- rand(100)+10000:返回10000-10099的随机数
- $game_party.item_number($data_items[X]):编号物品的个数
- 角色相关:以下为某编号的角色的相关属性
- $game_actors[编号]
- 生命:~.hp
- 魔法:~.mp
- 生命上限:~.maxhp
- 魔法上限:~.maxmp
- ID:~.id
- 名字:~.name
- 职业ID:~.class_id
- 初期等级:~.initial_level
- 是否二刀流:~.two_swords_style
- 是否装备固定:~.fix_equipment
- 是否自动战斗:~.auto_battle
- 是否强力防御:~.super_guard
- 是否药理知识:~.pharmacology
- 是否会心频发:~.critical_bonus
- 是否学会特技:~.skill_learn?(编号)
- 学会特技:~.learn_skill(编号)
- 攻击力:~.atk
- 防御力:~.def
- 精神力:~.spi
- 敏捷性:~.agi
- 地图ID:$game_map.map_id
- 同伴总人数:$game_party.members.size
- 步数:$game_party.steps
- 金钱:$game_party.gold
- 游戏总时间(秒数):Graphics.frame_count / Graphics.frame_rate
- 游戏总帧数:Graphics.frame_count
- 游戏帧速率(可直接=n调整):Graphics.frame_rate
- 计时器剩余秒数:$game_system.timer / Graphics.frame_rate
- 存档次数:$game_system.save_count
- 独立开关操作:
- $game_self_switches[[地图编号,事件编号,"A"]] = true/false
- 把地图编号的地图上的事件编号的事件的A开关打开。其实不光ABCD,还可以建立更多独立开关,不过调用也得用同样脚本。
- 计时器打开:
- $game_system.timer = 需要的秒数;$game_system.timer_working = true
- 计时器关闭:
- $game_system.timer_working = false
- 增减金钱:
- $game_party.gain_gold(金钱量)
- 增减物品、武器、防具:
- $game_party.gain_item(物品,数量)
- 举例:
- $game_party.gain_item($data_items[1],1):获得1号物品
- $game_party.gain_item($data_weapons[1],1):获得1号武器
- 角色替换:
- 加入角色:$game_party.add_actor(编号)
- 删除角色:$game_party.remove_actor(编号)
- 更改窗口外观:
- 窗口:self.windowskin = Cache.system("文件名")
- 更改禁止存档
- $game_system.save_disabled = true/false
- 更改禁止菜单:
- $game_system.menu_disabled = true/false
- 更改禁止遇敌:
- $game_system.encounter_disabled = true/false
- 地图卷动:
- $game_map.start_scroll(方向,距离,速度)
- 地图某角色显示动画:
- $game_map.events[id].animation_id = 动画编号
- 角色透明:
- $game_player.transparent = true/false
- 开始更改色调:
- 平时:$game_map.screen.start_tone_change(Tone.new(R,G,B,A),帧数)
- 战斗:$game_troop.screen.start_tone_change(Tone.new(R,G,B,A),帧数)
- 画面闪烁:
- 平时:$game_map.screen.start_flash(Color.new(R,G,B,A),帧数)
- 战斗:$game_troop.screen.start_flash(Color.new(R,G,B,A),帧数)
- 画面振动:
- 平时:$game_map.screen.start_shake(力度,速度,帧数)
- 战斗:$game_troop.screen.start_shake(力度,速度,帧数)
- 显示图片:
- $game_map.screen.pictures[number].show(name, origin, x, y, zoom_x, zoom_y, opacity, blend_type)
- 移动图片:
- $game_map.screen.pictures[number].move(duration, origin, x, y, zoom_x, zoom_y, opacity, blend_type)
- 其中:
- # name : 文件名
- # origin : 原点
- # x : X 坐标
- # y : Y 坐标
- # zoom_x : X 方向放大率
- # zoom_y : Y 方向放大率
- # opacity : 不透明度
- # blend_type : 合成方式
- # duration : 时间
- 旋转图片:
- $game_map.screen.pictures[number].rotate(速度)
- 删除图片:
- $game_map.screen.pictures[number].erase
- 显示动画(战斗中)
- battler.animation_id = 动画编号
- battler可以是敌人或者自己人,请先定义。
- 战斗中断:
- $game_temp.battle_abort = true
- 调用菜单:
- $scene = Scene_Menu.new
- 调用存档画面:
- $scene = Scene_File.new(true,false,true)
- 调用读档画面:
- $scene = Scene_File.new(false,false,true)
- 游戏结束:
- $scene = Scene_Gameover.new
- 返回标题画面:
- $scene = Scene_Title.new
- 强行启动事件:
- $game_map.events[编号].start
- 通行判定:
- $game_player.passable?(x,y,方向)
- 用来判断地图某处是否在某个方向可通行
- 正在移动判定:
- $game_player.moving?
- $game_map.events[编号].moving?
- 播放SE:
- Sound.play_*****
- 例:Sound.play_decision
- 系统用语:
- Vocab::****
- 例:Vocab::hp
- 判断某角色在队伍中:$game_party.members.include?($game_actors[编号])
- 按下某键的时候:Input.press?(键),Input.trigger?(键)
- 这两个请参考脚本中的其他定义推理
- [本贴由作者于 2008-2-8 9:12:08 最后编辑]
- [/quote]
复制代码 是转火星机械的某个帖子的{/cy}我都是看这那个写的 |
|