Project1

标题: 关于独立开关的问题 [打印本页]

作者: 越前リョーマ    时间: 2008-8-27 07:38
标题: 关于独立开关的问题
其实是个事件脚本的问题…… = =

$game_self_switches[[地图编号,事件编号,"A"]] = true/false
是丢某个编号的事件的操作,但是这样在不知道坐标的情况下超级麻烦,所以我需要请大家改进一下,效果就是操作某某坐标的独立开关。 [LINE]1,#dddddd[/LINE]版务信息:本贴由楼主自主结贴~
作者: 灯笼菜刀王    时间: 2008-8-27 11:46
狠PAI不懂得举一反三的小柯

上次强制执行的那招用到这里还是管用。

a = $game_map.check_event(x,y)
$game_self_switches[[地图编号, a,"A"]] = true/false

OK
[LINE]1,#dddddd[/LINE]系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
作者: 越前リョーマ    时间: 2008-8-27 19:51
以下引用灯笼菜刀王于2008-8-27 3:46:55的发言:

狠PAI不懂得举一反三的小柯

上次强制执行的那招用到这里还是管用。

a = $game_map.check_event(x,y)
$game_self_switches[[地图编号, a,"A"]] = true/false

OK

我问柳之一他说很复杂…… = =
顺便再问个问题……如果有两个事件重叠在一起,用坐标直接运行事件或者判断事件名之类的会怎么样……
作者: 灯笼菜刀王    时间: 2008-8-27 21:20
重叠的话判断坐标可能会有问题吧....第一句是获得这个坐标上的事件ID。如果重叠,不知道会获得什么样的ID= =,你试试再那句下面写个p a 看看提示是什么数字~~~

判断事件名的话就不会有什么问题了,除非两个事件名是一样的....其实事件名和ID差不多,ID是唯一的,所以判断事件名不如判断ID~~~
作者: IamI    时间: 2008-8-27 21:22
ID在前的先执行。
另外呢……菜刀你是不是忘了独立开关是要刷新Game_Map的……{/hx}
作者: 灯笼菜刀王    时间: 2008-8-27 21:24
要吗?

其实我一直不知道{/hx}

我还是看看GAME MAP去比较好{/gg}....

------分割分割------------

{/hx}多谢IAMI君指教。
在下面加句$game_map.need_refresh = true
刷新地图才可以产生效果~~~~
一直无视Interpreter类{/gg} 抱歉~~~
作者: 越前リョーマ    时间: 2008-8-27 21:45
以下引用IamI于2008-8-27 13:22:04的发言:

ID在前的先执行。
另外呢……菜刀你是不是忘了独立开关是要刷新Game_Map的……

也就是说执行两个都会执行?(两个都执行倒没关系……)
那么两个事件重叠到底会怎么样呢…… =、 =
作者: IamI    时间: 2008-8-27 21:47
只执行一个,就是ID在前的哪一个
我怀疑后面要加$game_map.need_refresh = true
你试试看好了,我的1.02每次不加就没反应
作者: 越前リョーマ    时间: 2008-8-27 21:48
以下引用IamI于2008-8-27 13:47:31的发言:

只执行一个,就是ID在前的哪一个
我怀疑后面要加$game_map.need_refresh = true
你试试看好了,我的1.02每次不加就没反应

那我还得把原来那个事件删了再建立一个…… = =
执行是执行ID前的那个,那么判断事件名、打开独立开关这些呢?也是前的?
作者: IamI    时间: 2008-8-27 21:51
主要原因就是Check_Event只返回ID在前的那1个事件。for被return强制中断了
那么什么执行事件,独立开关MS会统统的唯一化
说实话这是个MS……
实践是检验真理的唯一标准。
作者: 灯笼菜刀王    时间: 2008-8-27 21:56
实验过了,确实只执行和判断前面的ID。

如果想都执行,要用别的办法了....
作者: IamI    时间: 2008-8-27 21:58
以下引用灯笼菜刀王于2008-8-27 13:56:02的发言:

实验过了,确实只执行和判断前面的ID。

如果想都执行,要用别的办法了....

其实很简单。
原文
  1.   def check_event(x, y)
  2.     for event in $game_map.events.values
  3.       if event.x == x and event.y == y
  4.         return event.id
  5.       end
  6.     end
  7.   end
复制代码

追加定义
  1.   def check_eventx(x, y)
  2.     a = []
  3.     for event in $game_map.events.values
  4.       if event.x == x and event.y == y
  5.         a.push(event.id)
  6.       end
  7.     end
  8.     return a
  9.   end
复制代码

我被蛋糕的a给a了所以是a……
好吧,实际上是a[rray]
作者: 灯笼菜刀王    时间: 2008-8-27 22:11
对哦,使用数组就可以了~~~

我还在一直想  if a != 0
                b += 1
               "a"+"b.to_s" = a
= =.........

作者: IamI    时间: 2008-8-27 22:15
那个还真是A……那么,根据之前的问题给出解答:
脚本

  1. class Game_Map
  2. def check_eventx(x, y)
  3.    a = []
  4.    for event in $game_map.events.values
  5.      if event.x == x and event.y == y
  6.        a.push(event.id)
  7.      end
  8.    end
  9.    return a
  10. end
  11. end
复制代码

事件内
  1. a = $game_map.check_eventx(x,y)
  2. for i in a
  3. $game_self_switches[[map_id,i,'D']] = true
  4. end
  5. #$game_map.need_refresh = true
复制代码


话说……map_id怎么拿来着……{/gg}
如果看不出视觉效果去掉最后一行的注释号试试看
习惯性签名:未经测试
作者: 越前リョーマ    时间: 2008-8-27 23:26
能运行一个就够了……




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