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

Project1

 找回密码
 注册会员
搜索
查看: 3946|回复: 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
星屑
50
在线时间
9 小时
注册时间
2013-2-25
帖子
10
2
发表于 2013-4-20 14:34:34 | 只看该作者
我也不太会,只能翻出这帖
http://rpg.blue/forum.php?mod=vi ... D368%26typeid%3D368

点评

谢了,我去研究一下  发表于 2013-4-20 15:24
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
687 小时
注册时间
2012-10-29
帖子
1543
3
发表于 2013-4-20 18:10:05 | 只看该作者
一般应该都只是用 $game_temp.reserve_common_event(公共事件ID) 来呼叫公共事件执行吧?

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

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
54 小时
注册时间
2013-1-3
帖子
128
4
 楼主| 发表于 2013-4-20 20:26:24 | 只看该作者
j433463 发表于 2013-4-20 18:10
一般应该都只是用 $game_temp.reserve_common_event(公共事件ID) 来呼叫公共事件执行吧?

那个按键脚本我 ...

  #--------------------------------------------------------------------------
  # ● 监听取消键的按下。如果菜单可用且地图上没有事件在运行,则打开菜单界面。
  #--------------------------------------------------------------------------
  def update_call_menu
    if $game_system.menu_disabled || $game_map.interpreter.running?
      @menu_calling = false
    else
      @menu_calling ||= Input.trigger?(:B)
      call_menu if @menu_calling && !$game_player.moving?
    end
  end

就是这个,
我只是改成了按Y键触发然后插在了main之前

其实这个不是重点,我想知道监听动作是否有特别要求,
具体怎么写“键被按下”的判断
1
回复 支持 反对

使用道具 举报

Lv1.梦旅人

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

所以说看不懂啊!这一段应该是在地图上按某键开启菜单的吧?
我记得是 Scene_Map 中的,如果您要另外放在 Main 前,
直接放这一段没有类的方法会有作用吗?起码也要这样:

class Scene_Map < Scene_Base
  #--------------------------------------------------------------------------
  # ● 监听取消键的按下。如果菜单可用且地图上没有事件在运行,则打开菜单界面。
  #--------------------------------------------------------------------------
  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
end

取代原来的 Scene_Map 中 def update_call_menu 才有用吧?
我不明白您目的是什么,看您主楼已经这样了,还没有效果?
唔,好像您主楼最后少了一个 end

这样写,我自己测试的结果,按 S 键是有开启菜单呀!
修改劇本中,仔細審查原來的劇情大綱,覺得有點不太滿意,嘗試編寫不同主角不同主線的劇情,希望能寫得出來。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
54 小时
注册时间
2013-1-3
帖子
128
6
 楼主| 发表于 2013-4-20 21:43:52 | 只看该作者
j433463 发表于 2013-4-20 21:09
所以说看不懂啊!这一段应该是在地图上按某键开启菜单的吧?
我记得是 Scene_Map 中的,如果您要另外放在 M ...


class Scene_Map < Scene_Base
   #--------------------------------------------------------------------------
   # ● 监听Y键的按下
   #--------------------------------------------------------------------------
   def a
       @a ||= Input.trigger?(:Y)
       msgbox "a" if @a
   end
end

以上有需要添加些什么吗?他不做动
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
修改劇本中,仔細審查原來的劇情大綱,覺得有點不太滿意,嘗試編寫不同主角不同主線的劇情,希望能寫得出來。
回复 支持 反对

使用道具 举报

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
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
10
 楼主| 发表于 2013-4-20 22:56:13 | 只看该作者
j433463 发表于 2013-4-20 22:35
在脚本中,会自动反覆执行的大概只有 def update 了吧,我不清楚 RM 怎么写的设置,不过目前为止,要不断刷 ...

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

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

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-8 07:41

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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