Code: Show/Hide #include "../asss.h" local Ilogman *lm; local Iflags *flags; local Imapdata *mapdata; local void FlagPos(Arena *arena, int fid, int x, int y, int freq) { if (mapdata->InRegion(arena, "noflags", x, y)) { //lm->LogA(L_DRIVEL, "hs_flagmover", arena, "Neuting flag %i", fid); ArenaFlagData *fd = flags->GetFlagData(arena); fd->flags[fid].state = FLAG_NONE; flags->ReleaseFlagData(arena); } } EXPORT int MM_hs_flagmover(int action, Imodman *mm, Arena *arena) { if (action == MM_LOAD) { lm = mm->GetInterface(I_LOGMAN, ALLARENAS); flags = mm->GetInterface(I_FLAGS, ALLARENAS); mapdata = mm->GetInterface(I_MAPDATA, ALLARENAS); if (!lm || !flags || !mapdata) { mm->ReleaseInterface(lm); mm->ReleaseInterface(flags); mm->ReleaseInterface(mapdata); return MM_FAIL; } return MM_OK; } else if (action == MM_UNLOAD) { mm->ReleaseInterface(lm); mm->ReleaseInterface(flags); mm->ReleaseInterface(mapdata); return MM_OK; } else if (action == MM_ATTACH) { mm->RegCallback(CB_FLAGPOS, FlagPos, arena); return MM_OK; } else if (action == MM_DETACH) { mm->UnregCallback(CB_FLAGPOS, FlagPos, arena); return MM_OK; } return MM_FAIL; } |