Project1

标题: 永久取消事件脚本怎么写 [打印本页]

作者: 无心来过    时间: 2009-1-1 22:35
提示: 作者被禁止或删除 内容自动屏蔽
作者: 越前リョーマ    时间: 2009-1-1 22:39
其实一般只是为了让他不发挥作用也看不见吧?
要是事件的话可以用独立开关什么的。
作者: 风花雪月    时间: 2009-1-1 22:39
为什么非要用脚本?直接打开独立开关A,然后新建一个空白事件页,条件是独立开关A开不就行了
作者: 无心来过    时间: 2009-1-1 22:45
提示: 作者被禁止或删除 内容自动屏蔽
作者: 无心来过    时间: 2009-1-2 21:03
提示: 作者被禁止或删除 内容自动屏蔽
作者: 木葬枫    时间: 2009-1-2 21:09
以下引用无心来过于2009-1-2 13:03:08的发言:

然道没人会写吗........

用脚本写出来不是也是同样的效果么==
作者: 后知后觉    时间: 2009-1-2 21:18
可以用最简单的方法达到相同的效果又何必去转牛角尖呢?
给事件设置执行开关,执行完关闭开关就永久消失了{/cy}
$game_switches[xx] = false{/cy}就这句{/cy}
作者: IamI    时间: 2009-1-2 21:44
要坚持的话,
$game_map.events.delete!(ID(自行输入))
然后全图刷新。
没有必要的吧。
作者: 无心来过    时间: 2009-1-3 00:10
提示: 作者被禁止或删除 内容自动屏蔽
作者: 无心来过    时间: 2009-1-3 07:34
提示: 作者被禁止或删除 内容自动屏蔽
作者: trentswd    时间: 2009-1-3 11:52
有俩想法……
看f1,array删除方法是delete(val)
然后尝试$game_map.events.delete($game_map.events)
没反应- -,不过就算成功也不好,会把原来的序列打乱的
第二方法是$game_map.events=nil……用了之后出错了- -因为成功清空所以地图刷新的时候调用了清空后的事件,然后就出错了- -!
感觉怎么删都没用,因为最后rm会读文件,把删了的有读回来,除非你删了之后把数据库给覆盖了……
好吧以上都是废话……
作者: 无心来过    时间: 2009-1-3 22:40
提示: 作者被禁止或删除 内容自动屏蔽
作者: 消隐    时间: 2009-1-3 22:49
提示: 作者被禁止或删除 内容自动屏蔽
作者: 无心来过    时间: 2009-1-3 22:56
提示: 作者被禁止或删除 内容自动屏蔽
作者: 消隐    时间: 2009-1-3 23:01
提示: 作者被禁止或删除 内容自动屏蔽
作者: 无心来过    时间: 2009-1-4 00:24
提示: 作者被禁止或删除 内容自动屏蔽
作者: 消隐    时间: 2009-1-4 01:04
提示: 作者被禁止或删除 内容自动屏蔽
作者: 无心来过    时间: 2009-1-4 01:17
提示: 作者被禁止或删除 内容自动屏蔽
作者: 3nξhα0_lim    时间: 2009-1-4 16:30
提示: 作者被禁止或删除 内容自动屏蔽
作者: TERENCE    时间: 2009-1-4 19:16
m = load_data(sprintf("Data/Map%03d.rxdata",当前地图ID))
m.events.delete(当前地图的事件的ID)
save_data(m,sprintf("Data/Map%03d.rxdata",当前地图ID))
$game_map.setup(当前地图ID)
$scene=Scene_Map.new

还是动了DATA数据库
注意...這是真的永久取消
下次开工程那事件就会真的永久不见了

作者: trentswd    时间: 2009-1-4 22:41
m.events.delete(当前地图的事件的ID)

f1里面的()给的参数是Val吧……
作者: TERENCE    时间: 2009-1-5 00:14
腦殘......屏蔽= =

作者: TERENCE    时间: 2009-1-5 00:57
以下引用trentswd于2009-1-4 14:41:46的发言:
m.events.delete(当前地图的事件的ID)
f1里面的()给的参数是Val吧……

m = load_data(sprintf("Data/Map%03d.rxdata",当前地图ID))
m.events 是一 Hash 表 非 数组
你可以用p測試
p m.events 的結果你會發現  (该地图如果有5个事件)
{5=>.....,4=>.......} (m.events的Hash的內容很庞大,所以我用...代表)
[LINE]1,#dddddd[/LINE]
範例:
a={1=>"A",2=>"B",3=>"C",4=>"D"}
p a    # {1=>"A",2=>"B",3=>"C",4=>"D"}
p a[3] # "C"

a.delete(3)
p a    # {1=>"A",2=>"B",4=>"D"}
p a[3] # nill
作者: 纯子    时间: 2009-1-5 01:15
$scene.del_event(@id)

class Scene_Map
  def del_event(id)
    for event in $game_map.events.values
      if event.id == id
      $game_map.events.delete(event.id)
      $game_map.need_refresh = true
      @spriteset.dispose
      @spriteset = Spriteset_Map.new
    end
  end
end
end

- -!
作者: 纯子    时间: 2009-1-5 01:23
话说可以用脚本新建一个事件再删除,就不存在重新进入地图再次出现的问题
作者: 菜鸟飞呀飞    时间: 2009-1-5 02:01
提示: 作者被禁止或删除 内容自动屏蔽
作者: 纯子    时间: 2009-1-5 04:06
直接调用其他地图上的事件然后删除
class Scene_Map
def ev(map_id,event_id,x,y)
map = load_data(sprintf("Data/Map%03d.rxdata", map_id))
event = map.events[event_id]
$game_map.events[$game_map.events.size+1] = Game_Event.new($game_map.map_id,event)
$game_map.events[$game_map.events.size].moveto(x,y)
@spriteset.dispose
@spriteset = Spriteset_Map.new
return $game_map.events.size
end
end

- -!
作者: dna_7086    时间: 2009-1-5 04:55
提示: 作者被禁止或删除 内容自动屏蔽
作者: 无心来过    时间: 2009-1-5 05:01
提示: 作者被禁止或删除 内容自动屏蔽
作者: 菜鸟飞呀飞    时间: 2009-1-5 05:24
提示: 作者被禁止或删除 内容自动屏蔽
作者: 无心来过    时间: 2009-1-5 06:02
提示: 作者被禁止或删除 内容自动屏蔽
作者: 纯子    时间: 2009-1-5 06:39
LZ的这个问题相当于在问怎么把F1快捷键帮助取消……
不过我想办法是人想出来的。。应该会有办法。。
作者: TERENCE    时间: 2009-1-5 09:20
让我这麼说好了.....
以目前LZ想要永久取消事件的方法,
用简单几个脚本语句是写不出来的,

地图上的事件(存在)描述是 在Data資料夾底下的Map***.rxdata中,
即便用$game_map.events.delete(ID)刪了某事件,

下次再进入该地图
$game_map仍会从Map***.rxdata载入事件
$game_map.events又会被存放该地图的所有事件

所以RM里才有了开关变量
(开关变量会随著游戏的进行而改变)
每次地图载入事件后
事件会根据开关变量的值去处里,事件因此而产生变化(或动作)

换句话说RM默认脚本中....
目前 没有 提供 永久取消某地图上某事件 的 脚本方法 可以調用

明瞭了沒??
作者: 纯子    时间: 2009-1-5 19:28
就算改了存档里的数据我想也要先关闭工程然后再打开工程才能显现的出来吧- -!
作者: 无心来过    时间: 2009-1-6 03:02
提示: 作者被禁止或删除 内容自动屏蔽
作者: TERENCE    时间: 2009-1-6 04:31
以下引用无心来过于2009-1-5 19:02:46的发言:
我之前就说过默认没有永久取消了......
如果默认里有的话我就不用问了对吧!!!
然道改脚本还不行吗!?暂时取消改成永久行不行呢!????????我看了下暂时取消..但我改了为什么进入了还会看到....要怎么改才会永久取消呢?????????

狂汗~~
我已经说过了
不容易写出来的,


示意圖:

即便用$game_map.events.delete(ID)或其他方法刪了某事件
下次再进入该地图仍会从Map***.rxdata载入事件

有了开关变量
进入该地图....
才能決定是否永久取消该事件
系統会根据开关变量的值去处里事件(--是否永久取消该事件)!!
作者: 最後一滴淚    时间: 2009-1-6 09:16
{/hx}
我修改成功了!!!嘿嘿{/hx}
作者: TERENCE    时间: 2009-1-6 22:26
以下引用最後一滴淚于2009-1-6 1:16:58的发言:
我修改成功了!!!嘿嘿

真的??
東西拿出來讓我看看....

作者: trentswd    时间: 2009-1-6 23:06
以下引用TERENCE于2009-1-4 16:57:20的发言:


以下引用trentswd于2009-1-4 14:41:46的发言:
m.events.delete(当前地图的事件的ID)
f1里面的()给的参数是Val吧……


m = load_data(sprintf("Data/Map%03d.rxdata",当前地图ID))
m.events 是一 Hash 表 非 数组
你可以用p測試
p m.events 的結果你會發現  (该地图如果有5个事件)
{5=>.....,4=>.......} (m.events的Hash的內容很庞大,所以我用...代表)



範例:
a={1=>"A",2=>"B",3=>"C",4=>"D"}
p a    # {1=>"A",2=>"B",3=>"C",4=>"D"}
p a[3] # "C"

a.delete(3)
p a    # {1=>"A",2=>"B",4=>"D"}
p a[3] # nill

原来如此……感谢




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