//#include "leveltrack.h" inherit "/std/object"; #define LEV_AD "/w/anirudh/levelstuff/level_adjuster" mapping guild_data = ([ ]); void save_function() { if(m_sizeof(guild_data)) save_object("/save/leveltracker"); } void restore_function() { if(!m_sizeof(guild_data)) restore_object("/save/leveltracker"); } void setup() { set_name("leveltracker"); restore_function(); } int level_advanced(object playerob) { int time_now, level, age, i; object g_ob; string g_name; if(!playerob) return 0; if(playerob->query_creator() || strsrch(playerob->query_name(),"test") != -1) return 0; restore_function(); if(!guild_data) guild_data = ([ ]); g_ob = playerob->query_guild_ob(); g_name = g_ob->query_name(); level = playerob->query_level(); age = playerob->query_time_on(); if(!guild_data[g_name]) guild_data[g_name] = ({ }); for(i=sizeof(guild_data[g_name]);i<(2*level+1);i++) guild_data[g_name]+=({ 0 }); guild_data[g_name][2*level-2]++; guild_data[g_name][2*level-1]+=age/60; save_function(); LEV_AD->level_advanced(playerob); return 1; } void query_total_guild_data() { string *ind; int *avgs = ({ }),i,j; ind = m_indices(guild_data); for(i=0;i<sizeof(ind);i++) { for(j=sizeof(avgs);j<sizeof(guild_data[ind[i]]);j++) avgs+=({ 0 }); for(j=0;j<sizeof(guild_data[ind[i]]);j++) avgs[j]+=guild_data[ind[i]][j]; } for(i=0;i<sizeof(avgs);i+=2) if(avgs[i]) write((i/2+1)+" "+avgs[i]+" "+(-avgs[i+1]/avgs[i]/60)+"\n"); } void query_guild_totals() { int i,j,sum; string *ind; ind = m_indices(guild_data); for(i=0;i<sizeof(ind);i++) { sum = 0; for(j=0;j<sizeof(guild_data[ind[i]]);j+=2) sum += guild_data[ind[i]][j]; write(ind[i]+": "+sum+"\n"); } } void query_one_guild_data(string guild) { int i; for(i=0;i<sizeof(guild_data[guild]);i+=2) if(guild_data[guild][i]) write((i/2+1)+" "+guild_data[guild][i]+" "+(-guild_data[guild][i+1]/ guild_data[guild][i]/60)+"\n"); } mapping query_guild_data() { return guild_data; } mapping reset_guild_data() { guild_data = ([ ]); save_object("/save/leveltracker"); return guild_data; } mapping reset_one_guild(string guild) { if(guild_data[guild]) guild_data = m_delete(guild_data,guild); return guild_data; } void dest_me() { save_function(); ::dest_me(); }