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

Project1

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

[已经解决] 如何通过脚本使公共事件发生?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
54 小时
注册时间
2013-1-3
帖子
128
跳转到指定楼层
1
发表于 2013-4-20 12:57:41 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
本帖最后由 asdwds 于 2013-4-25 18:20 编辑

  
通过脚本,做动公共事件的脚本是什么?写这个需要哪些条件?

--

另外监听按键的脚本是怎么写的?按照Scene_map里面的x键打开菜单
直接写
class Scene_Map < Scene_Base
  #--------------------------------------------------------------------------
  # ● 监听C键的按下。
  #--------------------------------------------------------------------------
  def update_call_menu
    if $game_system.menu_disabled || $game_map.interpreter.running?
      @menu_calling = false
    else
      @menu_calling ||= Input.trigger?(:Y)
      call_menu if @menu_calling && !$game_player.moving?
    end
  end

是不行的吗?
1

Lv1.梦旅人

梦石
0
星屑
55
在线时间
1119 小时
注册时间
2012-7-24
帖子
600
15
发表于 2013-4-22 06:44:38 | 只看该作者
你的所谓本事件无非就是一个id而已,利用脚本,可以让动画在指定事件上发生,也能改动任何事件的自用开关。这个都不是问题,比起调用公共事件而言,这些反倒很简单!

点评

6rp
明明说是用脚本调用公共事件,还那么依赖原有命令的格式干什么。直接完全脚本化,改成子程序执行算了,  发表于 2013-4-22 19:34
其实如果有自带的调用公共事件的话,绝对是这个简单  发表于 2013-4-22 17:24
怕鼠的猫
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
1119 小时
注册时间
2012-7-24
帖子
600
14
发表于 2013-4-21 20:12:35 | 只看该作者
我的理解是,公共事件很难启动,反倒是普通事件很容易启动。 你改成普通事件吧,调用它的start方法就行了。

点评

那真的不一样,毕竟我是要普通事件中出现一个执行公共事件,并且这个公共事件运用“本事件“ 但是我没有多余的事件页写这个执行公共事件的动作  发表于 2013-4-21 22:18
怕鼠的猫
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
687 小时
注册时间
2012-10-29
帖子
1543
13
发表于 2013-4-21 19:51:13 | 只看该作者
方法都在上面了,其实如果没有另外要用到独立开关,用独立开关比较方便吧?有得用却放着不用能算是省吗?

点评

但是我怀疑abcd我都要用,所以我打算试试变量和1楼的方法  发表于 2013-4-21 22:16
修改劇本中,仔細審查原來的劇情大綱,覺得有點不太滿意,嘗試編寫不同主角不同主線的劇情,希望能寫得出來。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
54 小时
注册时间
2013-1-3
帖子
128
12
 楼主| 发表于 2013-4-21 12:24:27 | 只看该作者
j433463 发表于 2013-4-20 23:07
不明白您的意思,在要指定某个事件只要用 $game_map.events[事件id] 就可以了,如果是要指定在某个事件上显 ...

是地图上有好几个士兵事件,看到我后会根据我的主角色播放不同的动作
如果我不是人类的话,他们会冲过来打我,如果我是其他的则各种动作

关于这些判断和动作我都用公共事件写了,所以当发现脚本(我已经写了)通过后我想要让只有看到我的士兵事件执行公共事件
其实打开独立开关,自动执行-执行公共事件的确是可以了,但是我想省下一个独立开关

所以我想问如何通过脚本,让特定事件执行一次公共事件





1
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
687 小时
注册时间
2012-10-29
帖子
1543
11
发表于 2013-4-20 23:07:31 | 只看该作者
本帖最后由 j433463 于 2013-4-20 23:30 编辑

不明白您的意思,在要指定某个事件只要用 $game_map.events[事件id] 就可以了,如果是要指定在某个事件上显示动画,就是 $game_map.events[事件id].animation_id = 动画编号,

我忘了本事件的事件 id 是用 0 还是 -1 了...


喔,对了,还有直接指定一个事件的独立开关开启 / 关闭:$game_self_switches[[地图编号,事件编号,"A"]] = true/false

譬如,要指定Map003 的 EV005 事件独立开关C开启,就这样:

$game_self_switches[[3, 5, "C"]] = true

修改劇本中,仔細審查原來的劇情大綱,覺得有點不太滿意,嘗試編寫不同主角不同主線的劇情,希望能寫得出來。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
54 小时
注册时间
2013-1-3
帖子
128
10
 楼主| 发表于 2013-4-20 22:56:13 | 只看该作者
j433463 发表于 2013-4-20 22:35
在脚本中,会自动反覆执行的大概只有 def update 了吧,我不清楚 RM 怎么写的设置,不过目前为止,要不断刷 ...

我用过了,的确是只是调用了公共事件

所以我想问下,有没有以本事件的身份调用公共事件的方法呢?
我想要尽量不使用自带的abcd独立开关,通过脚本在本事件播放出不同的动画,然后开启本事件的某个独立开关
1
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
687 小时
注册时间
2012-10-29
帖子
1543
9
发表于 2013-4-20 22:35:56 | 只看该作者
在脚本中,会自动反覆执行的大概只有 def update 了吧,我不清楚 RM 怎么写的设置,不过目前为止,要不断刷新的大概脱不了用这个,或者用回圈方式,要不然不会说一变动就马上运行。

$game_temp.reserve_common_event 其实就是在 Game_Temp 中的一个 def reserve_common_event,括号中的参数只有一个,就是公共事件的 id,所以它只会去调用指定 id 的公共事件,至于被调用的是哪个,是不是本事件没有关系,而 Game_Temp 另有一个 reserved_common_event 可以取得当前调用的事件,所以 $game_temp.reserved_common_event.id 会回传现在用的公共事件 ID。
修改劇本中,仔細審查原來的劇情大綱,覺得有點不太滿意,嘗試編寫不同主角不同主線的劇情,希望能寫得出來。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
54 小时
注册时间
2013-1-3
帖子
128
8
 楼主| 发表于 2013-4-20 22:16:11 | 只看该作者
j433463 发表于 2013-4-20 22:11
我想您误会了,不是 def a 它就会执行的,在脚本中,您要去调用它,好比 def update_call_menu,它会作用是 ...

谢谢,原来是这样,我误会成是设置了一个事件,达成条件时就动作的那样了

-----

关于执行公共事件,写 $game_temp.reserve_common_event(1) 就够了吗?
这个执行是有没有办法用本事件?
1
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
687 小时
注册时间
2012-10-29
帖子
1543
7
发表于 2013-4-20 22:11:17 | 只看该作者
我想您误会了,不是 def a 它就会执行的,在脚本中,您要去调用它,好比 def update_call_menu,它会作用是因为在 Scene_Map 中大约第 80 行:

    update_call_menu unless scene_changing?

而 def update_scene 执行是因为第 65 行的

    update_scene if scene_change_ok?

也就是说,因为 def update 是重覆执行的,当它执行到 65 行 if scene_change_ok? 成立时,才会去执行 def update_scene,而此时若 unless scene_changing? 成立,才会去执行 def update_call_menu,此时若按键 :B 被按下,才会去开启窗口,这都有关连的,您 def a 没有任何会执行它的条件,它当然是不会起作用。

点评

为什么update会一直在动呢?是规定吗? 非常感谢,一下子解决了我很多问题  发表于 2013-4-20 22:28
修改劇本中,仔細審查原來的劇情大綱,覺得有點不太滿意,嘗試編寫不同主角不同主線的劇情,希望能寫得出來。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-8 09:47

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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