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

Project1

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

[已经解决] 脚本中生成的事件不能执行

[复制链接]

Lv3.寻梦者

梦石
0
星屑
4721
在线时间
387 小时
注册时间
2012-11-8
帖子
276
跳转到指定楼层
1
发表于 2014-6-20 14:12:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 qq634488405 于 2014-6-20 14:21 编辑

我仿照夏娜大人的在游戏中制作事件的脚本做一个NPC任务,对话后会在任意一张地图生成一个事件,但是生成的事件无法执行,代码如下
RUBY 代码复制
  1. class Game_Temp
  2.   attr_accessor : task_aim # 目标事件
  3.   attr_accessor : task_map # 目标地图
  4.   def initialize
  5.     super
  6.     @task_map=0
  7.     @task_aim=RPG::Event.new(0,0)
  8.     @task_aim.name="XX"
  9.     @task_aim.pages[0].graphic.character_name="YY"
  10.     @task_aim.pages[0].list[0].code=355
  11.     @task_aim.pages[0].list[0].parameters=["$scene=Scene_Task.new(ZZ)"]
  12.   end
  13. end

这是在$game_temp里先生成一个事件,其中Scene_Task是处理任务的类,在地图上直接创建的事件插入内容为脚本:$scene=Scene_Task.new(ZZ)时正常运行。
在发布任务的NPC处接受任务的事件中,用脚本修改task_aim的坐标
脚本:
RUBY 代码复制
  1. map_id=rand(X)
  2. $game_temp.task_map=map_id
  3. x_y=rand($available_area[map_id].size)
  4. $game_temp.task_aim.x, $game_temp.task_aim.y=x_y

其中$available_area是一个记录所有地图可以放置事件的坐标点的数组,$available_area[map_id]是ID为map_id的地图中可以放置事件的店,得到的x_y是[x坐标,y坐标]
接着我修改了Game_Map中的setup()方法
RUBY 代码复制
  1. # 初始化显示坐标
  2. @display_x = 0
  3. @display_y = 0
  4. # 清除刷新要求标志
  5. @need_refresh = false
  6. # 设置地图事件数据
  7. @events = {}
  8. for i in @map.events.keys
  9.   @events[i] = Game_Event.new(@map_id, @map.events[i])
  10. end

这是setup()方法的一个片段,在下面这一段的下方,即从Game_Map 79行起添加了如下代码
RUBY 代码复制
  1. if @map_id==$game_temp.task_map
  2.   $game_temp.task_aim.id=@events.size+1
  3.   @events[@events.size+1]=Game_Event.new(@map_id,$game_temp.task_aim)
  4.   @map.events[@events.size]=$game_temp.task_aim
  5. end

到了所在地图中能显示事件但是按ENTER无法执行脚本:"$scene=Scene_Task.new(ZZ),这是怎么回事,有点长。。先谢谢各位了。。。

Lv5.捕梦者 (管理员)

老黄鸡

梦石
0
星屑
42387
在线时间
7601 小时
注册时间
2009-7-6
帖子
13506

开拓者贵宾

2
发表于 2014-6-20 17:39:57 | 只看该作者
ZZ是个什么东西。

点评

setup方法里的Game_Event.new是把$game_temp.task_aim放入地图事件的哈希,意义和@events[i] = Game_Event.new(@map_id, @map.events[i])一样,@map.events[i]等同于$game_temp.task_aim  发表于 2014-6-20 23:36
setup方法里新建了一个事件,这个有意义吗?换成$game_temp.task_aim试试  发表于 2014-6-20 18:46
没有出错,就是在新建的事件按回车没有反应,事件可以显示,就是按回车不能执行相应的脚本  发表于 2014-6-20 18:43
具体的出错提示能截个图吗?  发表于 2014-6-20 17:58
那个没问题  发表于 2014-6-20 17:53
RGDirect - DirectX驱动的RGSS,点我了解.
RM全系列成套系统定制请联系QQ1213237796
不接受对其他插件维护的委托
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
4721
在线时间
387 小时
注册时间
2012-11-8
帖子
276
3
 楼主| 发表于 2014-6-21 00:24:10 | 只看该作者
fux2 发表于 2014-6-20 17:39
ZZ是个什么东西。

解决了!我看了一下Interpreter以及Game_Event相关脚本,以我之前方法创建的事件命令只有一行,这样会被系统认为这是空事件,所以,只要Game_Temp脚本里加一句@task_aim.pages[0].list.push(RPG::EventCommand.new)使事件有两行命令就行了
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-21 22:12

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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