【解压地图和事件】 map_infos=load_data("Data/MapInfos.rxdata") map_num=map_infos.size # 地图总数
file=File.open("../RXData/MapInfos.as","w") file.write("//这些代码是系统自动生成的,请不要修改这些代码\n") file.write(\ "//获取地图图块的方法:game.maps.map[地图id].data[第几层][x坐标][y坐标]\n") file.write("\n") file.write("package RXData\n") file.write("{\n") file.write(" public class MapInfos\n") file.write(" {\n") file.write(" public var num:int="+map_num.to_s+"; //地图总数\n") file.write(" public var start_pos:Object={map_id:"+system.start_map_id.to_s) file.write(",x:"+system.start_x.to_s+",y:"+system.start_y.to_s+"}") file.write("; //角色开始位置\n") file.write(" public var map:Array=new Array();\n") file.write(" public function MapInfos()\n"); file.write(" {\n");
# 遍历所有地图 for map_id in 1..map_num map_file_name=sprintf("Data/Map%03d.rxdata",map_id) map=load_data(map_file_name) # 打开地图文件 # 输出地图信息 file.write("\t\t\tmap["+map_id.to_s+"]=new Object();\n") file.write("\t\t\tmap["+map_id.to_s+"].name=\""+\ map_infos[map_id].name+"\";\n") file.write("\t\t\tmap["+map_id.to_s+"].parent_id="+map_infos[map_id].\ parent_id.to_s+";\n") file.write("\t\t\tmap["+map_id.to_s+"].order="+map_infos[map_id].\ order.to_s+";\n") file.write("\t\t\tmap["+map_id.to_s+"].expanded="+map_infos[map_id].\ expanded.to_s+";\n") file.write("\t\t\tmap["+map_id.to_s+"].scroll=["+map_infos[map_id].\ scroll_x.to_s+","+map_infos[map_id].scroll_y.to_s+"];\n") file.write("\t\t\tmap["+map_id.to_s+"].tileset_id="+map.tileset_id.\ to_s+";\n") file.write("\t\t\tmap["+map_id.to_s+"].width="+map.width.to_s+";\n") file.write("\t\t\tmap["+map_id.to_s+"].height="+map.height.to_s+";\n") file.write("\t\t\tmap["+map_id.to_s+"].autoplay_bgm="+map.autoplay_bgm.\ to_s+";\n") file.write("\t\t\tmap["+map_id.to_s+"].autoplay_bgs="+map.autoplay_bgs.\ to_s+";\n") #BGM file.write("\t\t\tmap["+map_id.to_s+"].bgm=new Object();\n") file.write("\t\t\tmap["+map_id.to_s+"].bgm.name=\""+map.bgm.name+"\";\n") file.write("\t\t\tmap["+map_id.to_s+"].bgm.volume="+map.bgm.\ volume.to_s+";\n") file.write("\t\t\tmap["+map_id.to_s+"].bgm.pitch="+map.bgm.\ pitch.to_s+";\n") #BGS file.write("\t\t\tmap["+map_id.to_s+"].bgs=new Object();\n") file.write("\t\t\tmap["+map_id.to_s+"].bgs.name=\""+map.bgs.name+"\";\n") file.write("\t\t\tmap["+map_id.to_s+"].bgs.volume="+map.bgs.\ volume.to_s+";\n") file.write("\t\t\tmap["+map_id.to_s+"].bgs.pitch="+map.bgs.\ pitch.to_s+";\n") file.write("\t\t\tmap["+map_id.to_s+"].encounter_list=["+map.\ encounter_list.join(",")+"];\n") # 遇敌目录。为队伍 ID 的数组。 file.write("\t\t\tmap["+map_id.to_s+"].encounter_step="+map.\ encounter_step.to_s+";\n") # 遇敌步数 file.write("\t\t\tmap["+map_id.to_s+"].data=new Array();\n") for i in 0..2 file.write("\t\t\tmap["+map_id.to_s+"].data["+i.to_s+"]=[") for y in 0..map.height-1 for x in 0..map.width-1 file.write(map.data[x,y,i].to_s) file.write(",") unless (x==map.width-1 and y==map.height-1) end #file.write(" ") end file.write("];\n") end # 输出事件 s="\t\t\tmap["+map_id.to_s+"].events"; file.write(s+"=new Array();\n") for i in 1..map.events.length s2=s+"["+i.to_s+"]"; file.write(s2+"=new Object();\n") e=map.events[i]; file.write(s2+".id="+e.id.to_s+";\n") file.write(s2+".name=\""+e.name+"\";\n") file.write(s2+".x="+e.x.to_s+";\n") # 位置 file.write(s2+".y="+e.y.to_s+";\n") file.write(s2+".pages=new Array();\n") for j in 0..e.pages.length-1 s3=s2+".pages["+j.to_s+"]" p=e.pages[j] file.write(s3+"=new Object();\n") # 条件 file.write(s3+".condition=new Object();\n") file.write(s3+".condition.switch1_valid="+p.condition.\ switch1_valid.to_s+";\n") file.write(s3+".condition.switch2_valid="+p.condition.\ switch2_valid.to_s+";\n") file.write(s3+".condition.variable_valid="+p.condition.\ variable_valid.to_s+";\n") file.write(s3+".condition.self_switch_valid="+p.condition.\ self_switch_valid.to_s+";\n") file.write(s3+".condition.switch1_id="+p.condition.\ switch1_id.to_s+";\n") file.write(s3+".condition.switch2_id="+p.condition.\ switch2_id.to_s+";\n") file.write(s3+".condition.variable_id="+p.condition.\ variable_id.to_s+";\n") file.write(s3+".condition.variable_value="+p.condition.\ variable_value.to_s+";\n") file.write(s3+".condition.self_switch_ch=\""+p.condition.\ self_switch_ch+"\";\n") # 图像 file.write(s3+".graphic=new Object();\n") file.write(s3+".graphic.tile_id="+p.graphic.tile_id.to_s+";\n") file.write(s3+".graphic.character_name=\""+p.graphic.\ character_name+"\";\n") file.write(s3+".graphic.character_hue="+p.graphic.\ character_hue.to_s+";\n") file.write(s3+".graphic.direction="+p.graphic.\ direction.to_s+";\n") file.write(s3+".graphic.pattern="+p.graphic.\ pattern.to_s+";\n") file.write(s3+".graphic.opacity="+p.graphic.\ opacity.to_s+";\n") file.write(s3+".graphic.blend_type="+p.graphic.\ blend_type.to_s+";\n") # 移动路线 file.write(s3+".move_type="+p.move_type.to_s+";\n") file.write(s3+".move_speed="+p.move_speed.to_s+";\n") file.write(s3+".move_frequency="+p.move_frequency.to_s+";\n") file.write(s3+".move_route=new Object();\n") file.write(s3+".move_route.repeat="+p.move_route.repeat.to_s+";\n") file.write(s3+".move_route.skippable="+p.move_route.skippable.to_s+";\n") file.write(s3+".move_route.list=new Array();\n") scr_ar=[] for k in 0..p.move_route.list.length-1 l=p.move_route.list[k] s4=s3+".move_route.list["+k.to_s+"]" file.write(s4+"=new Object();\n") file.write(s4+".code="+l.code.to_s+";\n") next if (l.code==209) if l.code==45 # 如果是脚本,则加上字符串符号 file.write(s4+".parameters="+$game_scripts.length.to_s+";\n") scr_ar.push(l.parameters[0]) else file.write(s4+".parameters=["+l.parameters.join(",")+"];\n") # 如果还有脚本组未导出 if (scr_ar.length>0) $game_scripts.push(scr_ar) scr_ar=[] end end end # 如果最后一条指令是脚本,也要导出脚本组 $game_scripts.push(scr_ar) if (scr_ar.length>0) file.write(s3+".walk_anime="+p.walk_anime.to_s+";\n") file.write(s3+".step_anime="+p.step_anime.to_s+";\n") # 停止时动画 file.write(s3+".direction_fix="+p.direction_fix.to_s+";\n") file.write(s3+".through="+p.through.to_s+";\n") file.write(s3+".always_on_top="+p.always_on_top.to_s+";\n") file.write(s3+".trigger="+p.trigger.to_s+";\n") # 触发条件 # 输出执行内容 file.write(s3+".list=new Array();\n") scr_ar=[] for k in 0..p.list.length-1 l=p.list[k] next if (l.code==509 || l.code==209) next if (l.code==108 || l.code==408) # 跳过注释 s4=s3+".list["+k.to_s+"]" file.write(s4+"=new Object();\n") file.write(s4+".code="+l.code.to_s+";\n") file.write(s4+".indent="+l.indent.to_s+";\n") if l.code==355 or l.code==655 # 脚本 file.write(s4+".parameters=["+$game_scripts.length.to_s+"];\n") scr_ar.push(l.parameters[0]) else pars=l.parameters if ([101,123,401].include?(l.code)) pars[0]=pars[0].gsub(/\\(\w)/,"\\\\\\\\\\1") pars[0]=pars[0].gsub(/"/,"\\\"") pars[0]="\""+pars[0]+"\"" # 参数0加字符串符号 end file.write(s4+".parameters=["+pars.join(",")+"];\n") # 如果还有脚本组未导出 if (scr_ar.length>0) $game_scripts.push(scr_ar) scr_ar=[] end end end end end end
file.write(" }\n"); file.write(" }\n") file.write("}") file.close()
|