Project1
标题:
【已解决】如何初始化某张ID地图
[打印本页]
作者:
l734273398
时间:
2020-12-14 11:59
标题:
【已解决】如何初始化某张ID地图
本帖最后由 l734273398 于 2020-12-17 15:40 编辑
如题:如何做到在地图中初始化某张ID的地图【初始化该地图出现的所有开关、变量等等】
打个比方:我想初始化某张ID的地图,但又不想整个游戏中所有地图都初始化了,只想初始化1号ID地图【或10号ID地图】的地图中的所有开关和变量
就是将某张ID的地图初始化为最初状态,所有的事件的独立开关都关闭,所有的事件都回归未触发状态。
作者:
Im剑侠客
时间:
2020-12-14 20:17
我觉得吧,开关与变量作为全局变量,简单地初始化会有很多隐性问题。
换个角度想,对每一个开关与变量了如指掌、如同自家后院,这不正是一个游戏制作人细腻的体现么。
作者:
RPGzh500223
时间:
2020-12-15 12:07
没太看懂你的需求,也没什么思路
如果你只是了解当前地图事件的位置的话
很多游戏不是有一个"地图"的功能吗
你写一个不就行了……
作者:
guoxiaomi
时间:
2020-12-16 20:13
关闭所有的独立开关很简单,但是如何知道变量和开关应该设置为什么值呢?估计只能这样做:
1. 读取所有的事件的触发条件,记录其中的开关ID和变量ID
2. 在某时刻记录这些开关、变量的值,然后在另一时刻还原
作者:
RPGzh500223
时间:
2020-12-16 20:33
只能帮你关闭某张ID地图的所有事件的独立开关
class Game_Map
def self_switches_refresh!(a_map_id)
if a_map_id > 0
the_map = load_data(sprintf("Data/Map%03d.rxdata", a_map_id))
for event in the_map.events.values
for page in event.pages
ch = page.condition.self_switch_ch
key = [a_map_id, event.id, ch]
$game_self_switches[key] = false
end
end
end
end
end
比如重置2号地图的独立开关
$game_map.self_switches_refresh!(2)
作者:
enghao_lim
时间:
2020-12-17 01:22
拿了楼上的脚本改了改,顺便把开关和变量一起放进去了,只是开关和变量其实会随着流程更懂,顶多能帮你就是把被设为条件的开关关闭和把变量设置成0。
在main之前插入脚本:
class Game_Map
attr_reader:map_id
def reset(a_map_id)
if a_map_id > 0
the_map = load_data(sprintf("Data/Map%03d.rxdata", a_map_id))
for event in the_map.events.values
for page in event.pages
c = page.condition
$game_switches[c.switch1_id] = false if c.switch1_valid
$game_switches[c.switch2_id] = false if c.switch2_valid
$game_variables[c.variable_id] = 0 if c.variable_valid
$game_self_switches[[a_map_id, event.id, c.self_switch_ch]] = false if c.self_switch_valid
end
end
if (@map_id == a_map_id)
@need_refresh = true
end
end
end
end
复制代码
在事件里调用脚本:
$game_map.reset(地图的ID);
复制代码
如果当前的地图和重置地图ID相同会顺便触发地图刷新。
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1