Project1

标题: 问个事件脚本的问题 [打印本页]

作者: 越前リョーマ    时间: 2008-8-19 23:29
标题: 问个事件脚本的问题
怎么做才能用事件脚本运行某X某Y的事件? [LINE]1,#dddddd[/LINE]版务信息:本贴由楼主自主结贴~
作者: Ж纯Ж蓝Ж    时间: 2008-8-19 23:32
某X某Y......

看不懂.....
作者: 越前リョーマ    时间: 2008-8-19 23:33
以下引用Ж纯Ж蓝Ж于2008-8-19 15:32:14的发言:

某X某Y......

看不懂.....

即直接运行某某坐标的事件。
作者: 灯笼菜刀王    时间: 2008-8-19 23:33
可以强行执行地图上某个编号的事件
$game_map.events[编号].start

也可以获得地图上某个编号事件的X和Y

但是用X,Y来获得编号的话,我要想想怎么做- -....
作者: 越前リョーマ    时间: 2008-8-19 23:35
以下引用灯笼菜刀王于2008-8-19 15:33:37的发言:

可以强行执行地图上某个编号的事件
$game_map.events[编号].start

也可以获得地图上某个编号事件的X和Y

但是用X,Y来获得编号的话,我要想想怎么做- -....

$game_map.events[编号].start 我已经知道了,
但是用这个做判断超级麻烦,
所以需要的是坐标不是编号。
作者: Ж纯Ж蓝Ж    时间: 2008-8-19 23:36
利用X.Y.来获得事件的编号......

用对比的方法应该可以吧....
作者: 越前リョーマ    时间: 2008-8-19 23:36
以下引用Ж纯Ж蓝Ж于2008-8-19 15:36:07的发言:

利用X.Y.来获得事件的编号......

用对比的方法应该可以吧....

事件里有这种高级功能么…… = =
作者: IamI    时间: 2008-8-19 23:37
for i in $game_map.events
if i.x == X and i.y == Y
i.start
end
end
真的很简单,菜刀你在干吗= =
改掉大些的XY [LINE]1,#dddddd[/LINE]系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
作者: 越前リョーマ    时间: 2008-8-19 23:40
以下引用IamI于2008-8-19 15:37:58的发言:

for i in $game_map.events
if i.x == X and i.y == Y
i.start
end
end
真的很简单,菜刀你在干吗= =
改掉大些的XY


[本贴由作者于 2008-8-19 15:38:14 最后编辑]

插在main前?
事件脚本里写什么?
作者: IamI    时间: 2008-8-19 23:43
看LX吧,我错了= =
作者: 灯笼菜刀王    时间: 2008-8-19 23:44
原来默认脚本已经有这个定义了= =....
def check_event(x, y)
    for event in $game_map.events.values
      if event.x == x and event.y == y
        return event.id
      end
    end
  end
调用$game_map.check_event(x,y)就可以获得该地点上事件的ID

a = $game_map.check_event(x,y)
$game_map.events[a].start
就可以启动该地点上的事件。
作者: 越前リョーマ    时间: 2008-8-19 23:46
以下引用IamI于2008-8-19 15:43:02的发言:

不,事件脚本里就这么写= =你把大写的X,Y改掉就行。当然你要偷懒的话也行
加入脚本
class Interpreter
def set_on(ax,ay)
for i in $game_map.events
if i.x == ax and i.y == ay
i.start
end
end
end
end

然后事件脚本直接set_on(x坐标,y坐标)

但是我要说的是这个效率并不是很高

那么你之前的那个效率高一些?
作者: IamI    时间: 2008-8-19 23:46
我错了我错了= =看菜刀
作者: 越前リョーマ    时间: 2008-8-19 23:47
囧rz,我刚认可你……  - -
[LINE]1,#dddddd[/LINE]
以下引用灯笼菜刀王于2008-8-19 15:44:37的发言:

原来默认脚本已经有这个定义了= =....
def check_event(x, y)
   for event in $game_map.events.values
     if event.x == x and event.y == y
       return event.id
     end
   end
end
调用$game_map.check_event(x,y)就可以获得该地点上事件的ID

a = $game_map.check_event(x,y)
$game_map.events[a].start
就可以启动该地点上的事件。

直接
a = $game_map.check_event(x,y)
$game_map.events[a].start

不用插入什么脚本?
作者: 灯笼菜刀王    时间: 2008-8-19 23:47
悄悄连帖....
以下引用IamI于2008-8-19 15:37:58的发言:

for i in $game_map.events
if i.x == X and i.y == Y
i.start
end
end
真的很简单,菜刀你在干吗= =
改掉大些的XY


[本贴由作者于 2008-8-19 15:38:14 最后编辑]

= =我一开始也打算这样写,因为对game_map不熟悉,去查了下原脚本,原脚本有定义获得xy上的事件ID的定义了,直接用就可以了-。-,不用在循环判断一次。
作者: IamI    时间: 2008-8-19 23:48
以下引用灯笼菜刀王于2008-8-19 15:47:51的发言:

悄悄连帖....

以下引用IamI于2008-8-19 15:37:58的发言:

for i in $game_map.events
if i.x == X and i.y == Y
i.start
end
end
真的很简单,菜刀你在干吗= =
改掉大些的XY


[本贴由作者于 2008-8-19 15:38:14 最后编辑]


= =我一开始也打算这样写,因为对game_map不熟悉,去查了下原脚本,原脚本有定义获得xy上的事件ID的定义了,直接用就可以了-。-,不用在循环判断一次。

问题是我漏了一个values,这是最大问题= =来吧,我们去开水区转分,我给你349,我先去开帖子
作者: 灯笼菜刀王    时间: 2009-6-12 08:00
不用不用,无所谓-。-不用了。

回小柯,直接在事件里用脚本:a = $game_map.check_event(x,y)
                            $game_map.events[a].start
就可以了,默认脚本。




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1