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

Project1

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

[讨论] 【推广向】这个世界将是我们事件脚本流的天下!RMVA小脚本

[复制链接]

Lv2.观梦者

梦石
0
星屑
581
在线时间
106 小时
注册时间
2011-2-19
帖子
82
跳转到指定楼层
1
发表于 2014-1-25 23:11:15 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
玩坏了DLL,以后RMVA就可以在事件中直接插入功能相当精致的脚本了。
估计RMVX和RMXP也能用类似的方法改造的说。
感谢Sion大神的修改方法。跟我一起膜拜Sion大神原帖吧
嘛,还有人找到了突破12行限制的方法。http://rpg.blue/thread-347641-1-1.html
不过后来发现更早的时候已经被人用诡异的方法解决了Orz这……怎么看怎么诡异……不过实用度MAX
以前只能通过更改Game_Interpreter实现的功能,有相当一部分能通过事件脚本来实现啦。
这样做有如下好处。
1、会让你的工程更加简洁。经常修改Game_Interpreter的技术宅们会经常发现自己的脚本编辑器里堆积了一大堆不知道到底有没有在游戏里用上的可疑脚本,而小白们则更会头晕目眩,甚至忘记调用脚本的方法。把小段(?)脚本存储在TXT中,然后放入文件夹,需要的时候拿取即可,完全不会搞乱你的脚本编辑器。
2、会让你的工程更加条理。一段脚本放在脚本编辑器里,如果再不是很条理(比如我就喜欢在原来的东西上乱改不做标记……捂脸)很容易就会造成各种麻烦。而使用事件脚本不会“弄脏”甚至“玩坏”你的脚本编辑器——大不了只要把事件一删就行了。
3、方便学习沟通。每当要开新坑的时候,就不用在两个脚本库之间筛选和搬运脚本了。当别人求助的时候,小段的脚本总比大段的好学习和操作吧……
4、移到事件脚本以后,脚本体积变小。剧烈地变小。
5、兼容性应该……貌似……大概会好一些……吧?虽然说本质上和放入Game_Interpreter的差别并不大,但总觉得会好一些的说。
当然,这里的提倡用事件脚本只是用于解决能解决的问题,实在不能做的还是塞给脚本编辑器好了。毕竟人家才是专业的。
嘛,本人脚本渣,从XP的时候就在学脚本,零零散散,到VA都出来了,也没怎么学会(捂脸)。这次来就是提出个这么个理念,然后各路大神来讨论对错。不准打人骂人。顺带学习一下VA的脚本。

Lv2.观梦者

梦石
0
星屑
581
在线时间
106 小时
注册时间
2011-2-19
帖子
82
2
 楼主| 发表于 2014-1-25 23:16:29 | 只看该作者
事件脚本练习作一:
改编自 喵呜喵5 大人的 "生成TXT"
版权归 喵呜喵5 所有,转载请去原帖查看声明,我只是大自然的搬运工……
原帖地址:膜拜喵呜喵5大人 喵呜喵5
代码:
  1. #其中OutputTXT可以换成任意英文。
  2. OutputTXT = File.open("文件名称.txt",'w')
  3. OutputTXT.puts "文件内容"
  4. OutputTXT.close
复制代码
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
581
在线时间
106 小时
注册时间
2011-2-19
帖子
82
3
 楼主| 发表于 2014-1-25 23:20:28 | 只看该作者
事件脚本练习作二:
改编自 喵呜喵5 大人的 "打开网页"
版权归 @喵呜喵5 所有,转载请去原帖查看声明,我只是大自然的搬运工……
原帖地址:膜拜喵呜喵5大人  
代码:
  1. #其中OpenWebsite可以换成任意英文。
  2. OpenWebsite = Win32API.new('shell32.dll','ShellExecuteA',%w(p p p p p i),'i')
  3. OpenWebsite.call(0, 'open','www.qidian.com',0, 0, 1)
复制代码
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
581
在线时间
106 小时
注册时间
2011-2-19
帖子
82
4
 楼主| 发表于 2014-1-25 23:24:13 | 只看该作者
事件脚本练习作三:
改编自 喵呜喵5 大人的 "全局变量"
版权归 @喵呜喵5 所有,转载请去原帖查看声明,我只是大自然的搬运工……
原帖地址:膜拜喵呜喵5大人
代码:
这个分两段,SAVE段和LOAD段。
顾名思义,存储时用SAVE段,读取时用LOAD段。
SAVE段:
  1. #SAVE段
  2. GlobalVariables = [1,2]
  3. Globalobj = []
  4. GlobalVariables.each {|index| Globalobj.push $game_variables[index]}
  5. save_data(Globalobj, "Saves/GlobalSave.rvdata2")
复制代码
LOAD段:
  1. #LOAD段
  2. GlobalVariables = [1,2]
  3. return if !File.exist?("Saves/GlobalSave.rvdata2")
  4. Globalobj = load_data("Saves/GlobalSave.rvdata2")
  5. Globalobj.each_with_index\
  6. {|v,i| $game_variables[GlobalVariables[i]] = v }
复制代码
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
20975
在线时间
9335 小时
注册时间
2012-6-19
帖子
7106

开拓者短篇九导演组冠军

5
发表于 2014-1-26 01:24:32 | 只看该作者
本帖最后由 喵呜喵5 于 2014-1-26 01:38 编辑

事件脚本和Game_Interpreter没多大区别吧……

至少我自己觉得Game_Interpreter更方便管理一些,大不了写脚本的时候顺手写一些注释什么的……

特别是你上面那些情况,写进Game_Interpreter以后直接一句“读取全局变量”、“保存全局变量”完事,哪还要每次调用的时候都写上好几行代码……

我自己的话基本上是代码只有1~2行时、进行循环时或者测试一小段代码的时候会去用事件脚本……

点评

赞同  发表于 2014-1-26 18:55
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
581
在线时间
106 小时
注册时间
2011-2-19
帖子
82
6
 楼主| 发表于 2014-1-26 09:42:34 | 只看该作者
喵呜喵5 发表于 2014-1-26 01:24
事件脚本和Game_Interpreter没多大区别吧……

至少我自己觉得Game_Interpreter更方便管理一些,大不了写脚 ...

是因为我比较邋遢而且健忘的缘故吧……大概
不过我总觉得全局运行的东西还是尽量少一点好……占内存的吧?
……不过话说回来一个变量才能占多少内存……

点评

定义个方法能占多少内存……  发表于 2014-1-26 18:55
不行了我得去找只猫吸一吸,你们先聊着别等我了
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
76
在线时间
1379 小时
注册时间
2012-7-5
帖子
1698

开拓者

7
发表于 2014-1-26 10:06:18 | 只看该作者
我是来围观LZ神头像的
另外把事件中用到的脚本做成方法扔到Interpreter里面会比较好
  1. def link(str)
  2.   openwebsite = Win32API.new('shell32.dll','ShellExecuteA',%w(p p p p p i),'i')
  3.   openwebsite.call(0, 'open',str,0, 0, 1)
  4. end
复制代码

  -fk: -azogi:
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2207
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

8
发表于 2014-1-27 09:06:02 | 只看该作者
本帖最后由 taroxd 于 2014-1-27 09:12 编辑
1、会让你的工程更加简洁。经常修改Game_Interpreter的技术宅们会经常发现自己的脚本编辑器里堆积了一大堆不知道到底有没有在游戏里用上的可疑脚本,而小白们则更会头晕目眩,甚至忘记调用脚本的方法。把小段(?)脚本存储在TXT中,然后放入文件夹,需要的时候拿取即可,完全不会搞乱你的脚本编辑器。

忘记了随时查不就好了!查脚本编辑器比查TXT快多了!举个栗子:

首先绿色的字体很清晰美观,其次实在太多不想找可以Ctrl + F找中英文皆可
2、会让你的工程更加条理。一段脚本放在脚本编辑器里,如果再不是很条理(比如我就喜欢在原来的东西上乱改不做标记……捂脸)很容易就会造成各种麻烦。而使用事件脚本不会“弄脏”甚至“玩坏”你的脚本编辑器——大不了只要把事件一删就行了。

放在Game_Interpreter里面也是只要把事件一删就行了。我看不出上面那张图哪里没有条理、哪里玩坏了。
3、方便学习沟通。每当要开新坑的时候,就不用在两个脚本库之间筛选和搬运脚本了。当别人求助的时候,小段的脚本总比大段的好学习和操作吧……

开新坑当然是直接把Script.rvdata2复制过去啦~ 另外,放在脚本编辑器里才是“小段”哦~ 对Game_Interpreter没有必要筛选,因为脚本编辑器里写了一条完全没用上的方法也是没有任何问题的。
4、移到事件脚本以后,脚本体积变小。剧烈地变小。

地图体积变大。更剧烈地变大。
5、兼容性应该……貌似……大概会好一些……吧?虽然说本质上和放入Game_Interpreter的差别并不大,但总觉得会好一些的说。

除非方法重名我实在想不到在事件里写脚本兼容性哪里好了。
当然,这里的提倡用事件脚本只是用于解决能解决的问题,实在不能做的还是塞给脚本编辑器好了。毕竟人家才是专业的。
嘛,本人脚本渣,从XP的时候就在学脚本,零零散散,到VA都出来了,也没怎么学会(捂脸)。这次来就是提出个这么个理念,然后各路大神来讨论对错。不准打人骂人。顺带学习一下VA的脚本。

以上,我只是说出我的见解而已,并非和你过不去,也请不要打人骂人。有什么想反驳的说出来就好了。
回复 支持 反对

使用道具 举报

Lv3.寻梦者

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

贵宾

9
发表于 2014-1-27 10:25:38 | 只看该作者
本帖最后由 DeathKing 于 2014-1-27 10:26 编辑
taroxd 发表于 2014-1-27 09:06
忘记了随时查不就好了!查脚本编辑器比查TXT快多了!举个栗子:

首先绿色的字体很清晰美观,其次实在太多 ...


那个事件指令扩展可以单独做出来发布,像什么获得所有道具、所有装备什么的,测试起来会比较方便。




脚本放事件指令里面有个坏处,就是出现错误了的话它无法定位

See FScript Here:https://github.com/DeathKing/fscript
潜心编写URG3中。
所有对URG3的疑问和勘误或者建议,请移步至发布页面。
欢迎萌妹纸催更
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2207
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

10
发表于 2014-1-27 10:46:44 | 只看该作者
DeathKing 发表于 2014-1-27 10:25
那个事件指令扩展可以单独做出来发布,像什么获得所有道具、所有装备什么的,测试起来会比较方便。

这种模仿 Game_Party#setup_battle_test_items 写写就行了。用到再写吧=。=

我写脚本都是要用的时候才写的说,写了有用的话就不删了,没用而且对游戏有影响的话就直接扔到Main后面,不会特意去做什么功能。所以相当多的功能都是鸡肋。而且像Taroxd::MAX_TP这种明显自己用着玩儿的常量,发布起来不方便的吧。这个还好,如果要alias的话,alias的方法都是自己定义的。(http://rpg.blue/thread-347871-1-1.html
这种鸡肋的东西都是扔在这里的节奏 http://rpg.blue/thread-344203-1-1.html (见笑)

顺便脚本渣坐等蓄势待发啥的
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-2 19:44

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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