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

Project1

 找回密码
 注册会员
搜索

如何用脚本生成事件并运行?

查看数: 2873 | 评论数: 10 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2011-11-1 16:26

正文摘要:

本帖最后由 gamedev0001 于 2011-11-1 17:02 编辑 我想用代码生成事件该怎么写,F1没看到例子。 想实现事件中更改角色,更改地图远景这样的事件功能,用代码该怎么写呢? 目前这么写,但是没有什么效果evt_page ...

回复

亿万星辰 发表于 2011-11-2 12:39:39
其实在某一张地图上摆放一些事件模型会比较方便,把一些需要变动的内容修改掉即可。

点评

那岂不是钻牛角尖了么…… 一个.clone就能实现的东西……  发表于 2011-11-2 13:27
代码粉不喜欢用事件......喜欢code everything  发表于 2011-11-2 12:46
gamedev0001 发表于 2011-11-2 12:38:01
提示: 作者被禁止或删除 内容自动屏蔽
后知后觉 发表于 2011-11-1 23:01:30
先插入下面代码
  1. $HEvent = RPG::Event.new(1, 1)
  2. $HEvent.id = 999
  3. $HEvent.pages[0].trigger = 3
  4. $HEvent.pages[0].list[0].code = 101
  5. $HEvent.pages[0].list[0].parameters[0] = "显示文章第一行"
  6. $HEvent.pages[0].list[1] = RPG::EventCommand.new(401, 0, ["第二行"])
  7. $HEvent.pages[0].list[2] = RPG::EventCommand.new(401, 0, ["第三行"])
  8. $HEvent.pages[0].list[3] = RPG::EventCommand.new(401, 0, ["第四行"])
  9. $HEvent.pages[0].list[4] = RPG::EventCommand.new
复制代码
然后找到 Game_Map 的第 74 75 76 77 这 4 行
  1.     @events = {}
  2.     for i in @map.events.keys
  3.       @events[i] = Game_Event.new(@map_id, @map.events[i])
  4.     end
复制代码
在第 74 行下面加一行变成这样
  1.     @events = {}
  2.     @map.events[$HEvent.id] = $HEvent
  3.     for i in @map.events.keys
  4.       @events[i] = Game_Event.new(@map_id, @map.events[i])
  5.     end
复制代码
搞定.一个【自动执行】【显示文章】的事件就做好了 事件 id 为 999
然后说你主楼里的脚本

ce1 = RPG::EventCommand.new(101,0,"hello")
第 3 个参数应该是个数组

evt_page.list = [ce1]
这个 list 数组的尾部少了一个空白命令(RPG::EventCommand实例)

最后在说一下 code 这个东西.
在 F1 里只能查到 命令的第一行 的 code
比如 显示文章 F1 里说 code 是 101
这个命令一次可以写 4 行.
第 1 行 code 是 101 没错.但第2 3 4 行却是 401
这些东西要么去 Interpreter 里找那些命令的定义里看.
要么就 Interpreter 2 里用 p 命令 给 p 出来
全局搜索 case @list[@index].code 可以快速定位

点评

标准答案,拜神~~~~  发表于 2011-11-2 08:19
精灵使者 发表于 2011-11-1 22:55:02
美兽的“爱护环境,人人有责”这个里面就用了事件生成脚本……
如果需要的话再找找吧,宝典里有
darkscout3000 发表于 2011-11-1 22:36:06
gamedev0001 发表于 2011-11-1 06:10
请问随便P一个是什么意思?能给个演示么,新手才接触,类和函数还不太熟。

感谢4楼,实验中

那啥⋯⋯
提示的错误不是方法未定义,而是实例没有初始化⋯⋯
你把add_event放在了Scene_Title 的     $scene = Scene_Map.new 后面
但是这个时候Spriteset_Map类的实例还没有初始化⋯⋯所以你调用add_event 的时候会找不到@spriteset这个对象⋯⋯
因为那个实例是在Scene_Map的main方法里头初始化的⋯⋯

简单地说就是⋯⋯你得换个地方调用add_event方法⋯⋯
比如就放在Scene_Map里main方法里头⋯⋯在@spriteset = Spriteset_Map.new 之后

点评

放在Spriteset_Map.new之后还是不行,不过感谢,用后知后觉的方法解决了  发表于 2011-11-2 08:20
fux2 发表于 2011-11-1 18:15:24
随便p一个事件就知道了啊。
iisnow 发表于 2011-11-1 17:38:44
这个问题我以前问过:
参考一下:
http://rpg.blue/thread-211792-1-1.html
雁行疏 发表于 2011-11-1 17:29:58
很好奇为什么楼主要用脚本写,不是能用事件就用事件么??

点评

因为不习惯用事件,写代码写习惯了,想用代码实现一切,so.....  发表于 2011-11-1 17:57
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

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

GMT+8, 2024-11-24 01:33

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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