//エラー検出 public static void MakeCheckErrors(uint mapid, List <FELint.ErrorSt> errors) { List <uint> tracelist = new List <uint>(); uint wmapid = MapSettingForm.GetWorldMapEventIDWhereMapID(mapid); if (wmapid == 0) {//存在しない return; } //FE7はINDEX uint p; InputFormRef InputFormRef = N_Init(null); p = InputFormRef.IDToAddr(wmapid); if (p == U.NOT_FOUND) { errors.Add(new FELint.ErrorSt(FELint.Type.MAPSETTING_WORLDMAP, U.NOT_FOUND , R._("対応するワールドマップイベント({0})が存在しません。", U.To0xHexString(wmapid)))); } else { uint event_addr = Program.ROM.u32(p); FELint.CheckEventPointer(event_addr, errors, FELint.Type.WORLDMAP_EVENT, p, true, tracelist); } }
public static uint GetEventByMapID(uint mapid) { uint wmapid = MapSettingForm.GetWorldMapEventIDWhereMapID(mapid); if (wmapid == 0) {//存在しない return(U.NOT_FOUND); } //FE6はPLISTが格納されている. return(MapPointerForm.PlistToOffsetAddr(MapPointerForm.PLIST_TYPE.WORLDMAP_FE6ONLY, wmapid)); }
public static uint GetEventByMapID(uint mapid, bool isBefore) { //FE8はINDEX uint p; if (isBefore) { uint wmapid = MapSettingForm.GetWorldMapEventIDWhereMapID(mapid); if (wmapid == 0) {//存在しない return(U.NOT_FOUND); } InputFormRef InputFormRef = N_Init(null); p = InputFormRef.IDToAddr(wmapid); } else { uint wmapid = mapid; if (wmapid == 0) {//存在しない return(U.NOT_FOUND); } InputFormRef InputFormRef = Init(null); p = InputFormRef.IDToAddr(wmapid); } if (p == U.NOT_FOUND) { return(U.NOT_FOUND); } uint event_addr = Program.ROM.p32(p); if (!U.isSafetyOffset(event_addr)) { return(U.NOT_FOUND); } return(event_addr); }
//エラー検出 public static void MakeCheckErrors(uint mapid, List <FELint.ErrorSt> errors) { List <uint> tracelist = new List <uint>(); uint wmapid = MapSettingForm.GetWorldMapEventIDWhereMapID(mapid); if (wmapid == 0) {//存在しない return; } //FE6はPLISTが格納されている. uint p; uint event_addr = MapPointerForm.PlistToOffsetAddrFast(MapPointerForm.PLIST_TYPE.WORLDMAP_FE6ONLY, wmapid, out p); if (event_addr == U.NOT_FOUND) { errors.Add(new FELint.ErrorSt(FELint.Type.MAPSETTING_WORLDMAP, U.NOT_FOUND , R._("対応するワールドマップイベント({0})が存在しません。", U.To0xHexString(wmapid)))); } else { FELint.CheckEvent(event_addr, errors, FELint.Type.WORLDMAP_EVENT, p, true, tracelist); } }
//全データの取得 public static void MakeAllDataLength(List <Address> list) { List <uint> tracelist = new List <uint>(); uint mapmax = MapSettingForm.GetDataCount(); for (uint mapid = 0; mapid < mapmax; mapid++) { uint wmapid = MapSettingForm.GetWorldMapEventIDWhereMapID(mapid); if (wmapid == 0) {//存在しない continue; } //FE6はPLISTが格納されている. uint p; uint event_addr = MapPointerForm.PlistToOffsetAddrFast(MapPointerForm.PLIST_TYPE.WORLDMAP_FE6ONLY, wmapid, out p); if (event_addr == U.NOT_FOUND) { continue; } string name = "WorldMapEvent " + U.To0xHexString(mapid) + " "; EventScriptForm.ScanScript(list, p, true, true, name, tracelist); } }