Code: Show/Hide #include "asss.h" local Imodman *mm; local Iarenaman *aman; local Imainloop *mainloop; local Iplayerdata *pd; local int timer(void *arena_) { Arena *arena = arena_; Player *p; Link *link; pd->Lock(); FOR_EACH_PLAYER(p) { //crashes here } pd->Unlock(); return 1; } EXPORT int MM_mymodule(int action, Imodman *mm_, Arena *arena) { if (action == MM_LOAD) { mm = mm_; aman = mm->GetInterface(I_ARENAMAN, ALLARENAS); mainloop = mm->GetInterface(I_MAINLOOP, ALLARENAS); pd = mm->GetInterface(I_PLAYERDATA, ALLARENAS); if (!aman || !mainloop || !pd) return MM_FAIL; return MM_OK; } else if (action == MM_UNLOAD) { mainloop->ClearTimer(timer, NULL); mm->ReleaseInterface(pd); mm->ReleaseInterface(mainloop); mm->ReleaseInterface(aman); return MM_OK; } else if (action == MM_ATTACH) { mainloop->SetTimer(timer, 500, 100, arena, arena); return MM_OK; } else if (action == MM_DETACH) { mainloop->ClearTimer(timer, arena); return MM_OK; } return MM_FAIL; } |