查看: 2527|回复: 2

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

[复制链接]
梦石
0
星屑
4756
在线时间
389 小时
注册时间
2012-11-8
回帖
235
发表于 2014-6-20 14:12:14 | 显示全部楼层 |阅读模式

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

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

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

我仿照夏娜大人的在游戏中制作事件的脚本做一个NPC任务,对话后会在任意一张地图生成一个事件,但是生成的事件无法执行,代码如下
[pre lang="ruby" line="1"]class Game_Temp
  attr_accessor : task_aim # 目标事件
  attr_accessor : task_map # 目标地图
  def initialize
    super
    @task_map=0
    @task_aim=RPG::Event.new(0,0)
    @task_aim.name="XX"
    @task_aim.pages[0].graphic.character_name="YY"
    @task_aim.pages[0].list[0].code=355
    @task_aim.pages[0].list[0].parameters=["$scene=Scene_Task.new(ZZ)"]
  end
end[/pre]
这是在$game_temp里先生成一个事件,其中Scene_Task是处理任务的类,在地图上直接创建的事件插入内容为脚本:$scene=Scene_Task.new(ZZ)时正常运行。
在发布任务的NPC处接受任务的事件中,用脚本修改task_aim的坐标
脚本:
[pre lang="ruby" line="1"]map_id=rand(X)
$game_temp.task_map=map_id
x_y=rand($available_area[map_id].size)
$game_temp.task_aim.x, $game_temp.task_aim.y=x_y[/pre]
其中$available_area是一个记录所有地图可以放置事件的坐标点的数组,$available_area[map_id]是ID为map_id的地图中可以放置事件的店,得到的x_y是[x坐标,y坐标]
接着我修改了Game_Map中的setup()方法
[pre lang="ruby" line="1"]# 初始化显示坐标
@display_x = 0
@display_y = 0
# 清除刷新要求标志
@need_refresh = false
# 设置地图事件数据
@events = {}
for i in @map.events.keys
  @events = Game_Event.new(@map_id, @map.events)
end[/pre]
这是setup()方法的一个片段,在下面这一段的下方,即从Game_Map 79行起添加了如下代码
[pre lang="ruby" line="1"]if @map_id==$game_temp.task_map
  $game_temp.task_aim.id=@events.size+1
  @events[@events.size+1]=Game_Event.new(@map_id,$game_temp.task_aim)
  @map.events[@events.size]=$game_temp.task_aim
end[/pre]
到了所在地图中能显示事件但是按ENTER无法执行脚本:"$scene=Scene_Task.new(ZZ),这是怎么回事,有点长。。先谢谢各位了。。。

老黄鸡

梦石
4
星屑
45739
在线时间
7952 小时
注册时间
2009-7-6
回帖
13338

MZ评测员RM创作大赛01组委会开拓者贵宾

发表于 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
不接受对其他插件维护的委托
回复

使用道具 举报

梦石
0
星屑
4756
在线时间
389 小时
注册时间
2012-11-8
回帖
235
 楼主| 发表于 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)使事件有两行命令就行了
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部