#if defined(macintosh)
#include <types.h>
#else
#include <sys/types.h>
#include <sys/time.h>
#endif
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
#include <time.h>
#include "merc.h"
#include "interp.h"
#include "magic.h"
#include "recycle.h"
#include "tables.h"
#include "lookup.h"
void load_leaderboard()
{
FILE *fp;
if ((fp = fopen("../txt/leader.txt", "r")) == NULL)
{
log_string("Error: leader.txt not found!");
exit(1);
}
leader_board.bestpk_name = fread_string(fp);
leader_board.bestpk_number = fread_number(fp);
leader_board.pk_name = fread_string(fp);
leader_board.pk_number = fread_number(fp);
leader_board.pd_name = fread_string(fp);
leader_board.pd_number = fread_number(fp);
leader_board.mk_name = fread_string(fp);
leader_board.mk_number = fread_number(fp);
leader_board.md_name = fread_string(fp);
leader_board.md_number = fread_number(fp);
leader_board.tt_name = fread_string(fp);
leader_board.tt_number = fread_number(fp);
leader_board.qc_name = fread_string(fp);
leader_board.qc_number = fread_number(fp);
fclose(fp);
}
void save_leaderboard()
{
FILE *fp;
if ((fp = fopen("../txt/leader.txt","w")) == NULL)
{
log_string("Error writing to leader.txt");
return;
}
fprintf(fp, "%s~\n", leader_board.bestpk_name);
fprintf(fp, "%d\n", leader_board.bestpk_number);
fprintf(fp, "%s~\n", leader_board.pk_name);
fprintf(fp, "%d\n", leader_board.pk_number);
fprintf(fp, "%s~\n", leader_board.pd_name);
fprintf(fp, "%d\n", leader_board.pd_number);
fprintf(fp, "%s~\n", leader_board.mk_name);
fprintf(fp, "%d\n", leader_board.mk_number);
fprintf(fp, "%s~\n", leader_board.md_name);
fprintf(fp, "%d\n", leader_board.md_number);
fprintf(fp, "%s~\n", leader_board.tt_name);
fprintf(fp, "%d\n", leader_board.tt_number);
fprintf(fp, "%s~\n", leader_board.qc_name);
fprintf(fp, "%d\n", leader_board.qc_number);
fclose (fp);
}
void do_leader( CHAR_DATA *ch, char *argument )
{
char buf[MAX_STRING_LENGTH];
if (IS_NPC(ch)) return;
stc("{Y-{8=========================={YLEADER BOARD{8=========================={Y-{x\n\r\n\r",ch);
send_to_char(" {yMr. Best PK'er {C---> ",ch);
sprintf(buf, "{G%-13s",leader_board.bestpk_name);
send_to_char(buf,ch);
sprintf(buf, " {ywith a {G%d {yPK score{x\n\r",leader_board.bestpk_number);
send_to_char(buf,ch);
send_to_char(" {yMr. Deadly {C---> ",ch);
sprintf(buf, "{G%-13s",leader_board.pk_name);
send_to_char(buf,ch);
sprintf(buf, " {ywith {G%d {ypkills{x\n\r",leader_board.pk_number);
send_to_char(buf,ch);
send_to_char(" {yMr. Pathetic {C---> ",ch);
sprintf(buf, "{G%-13s",leader_board.pd_name);
send_to_char(buf,ch);
sprintf(buf, " {ywith {G%d {ypdeaths{x\n\r",leader_board.pd_number);
send_to_char(buf,ch);
send_to_char(" {yMr. Slayer {C---> ",ch);
sprintf(buf, "{G%-13s",leader_board.mk_name);
send_to_char(buf,ch);
sprintf(buf, " {ywith {G%d {ymkills{x\n\r",leader_board.mk_number);
send_to_char(buf,ch);
send_to_char(" {yMr. Wimpy {C---> ",ch);
sprintf(buf, "{G%-13s",leader_board.md_name);
send_to_char(buf,ch);
sprintf(buf, " {ywith {G%d {ymdeaths{x\n\r",leader_board.md_number);
send_to_char(buf,ch);
send_to_char(" {yMr. No life {C---> ",ch);
sprintf(buf, "{G%-13s",leader_board.tt_name);
send_to_char(buf,ch);
sprintf(buf, " {ywith {G%d {yHours played{x\n\r",leader_board.tt_number);
send_to_char(buf,ch);
send_to_char(" {yMr. Questor {C---> ",ch);
sprintf(buf, "{G%-13s",leader_board.qc_name);
send_to_char(buf,ch);
sprintf(buf, " {ywith {G%d {yQuests completed{x\n\r",leader_board.qc_number);
send_to_char(buf,ch);
stc("Y-{8=========================={YLEADER BOARD{8=========================={Y-{x\n\r\n\r",ch);
return;
}
void check_leaderboard( CHAR_DATA *ch )
{
bool changed = FALSE;
if (IS_NPC(ch)) return;
if (ch->level > 206) return;
if (get_ratio(ch) > leader_board.bestpk_number || !str_cmp(leader_board.bestpk_name , ch->name))
{
leader_board.bestpk_number = get_ratio(ch);
free_string(leader_board.bestpk_name);
leader_board.bestpk_name = str_dup(ch->name);
changed = TRUE;
}
if (ch->mdeaths > leader_board.md_number)
{
leader_board.md_number = ch->mdeaths;
free_string(leader_board.md_name);
leader_board.md_name = str_dup(ch->name);
changed = TRUE;
}
if (ch->pcdata->mkills > leader_board.mk_number)
{
leader_board.mk_number = ch->pcdata->mkills;
free_string(leader_board.mk_name);
leader_board.mk_name = str_dup(ch->name);
changed = TRUE;
}
if (ch->pkill > leader_board.pk_number)
{
leader_board.pk_number = ch->pkill;
free_string(leader_board.pk_name);
leader_board.pk_name = str_dup(ch->name);
changed = TRUE;
}
if (ch->pdeath > leader_board.pd_number)
{
leader_board.pd_number = ch->pdeath;
free_string(leader_board.pd_name);
leader_board.pd_name = str_dup(ch->name);
changed = TRUE;
}
if (ch->questscomp > leader_board.qc_number)
{
leader_board.qc_number = ch->questscomp;
free_string(leader_board.qc_name);
leader_board.qc_name = str_dup(ch->name);
changed = TRUE;
}
if (get_age(ch)-17*2 > leader_board.tt_number)
{
leader_board.tt_number = (get_age(ch)-17)*2;
free_string(leader_board.tt_name);
leader_board.tt_name = str_dup(ch->name);
changed = TRUE;
}
if (changed) save_leaderboard();
return;
}
void do_leaderclear(CHAR_DATA *ch, char *argument )
{
if (IS_NPC(ch)) return;
if (ch->level < 7) return;
free_string(leader_board.bestpk_name);
leader_board.bestpk_name = str_dup("Noone");
leader_board.bestpk_number = 0;
free_string(leader_board.pk_name);
leader_board.pk_name = str_dup("Noone");
leader_board.pk_number = 0;
free_string(leader_board.pd_name);
leader_board.pd_name = str_dup("Noone");
leader_board.pd_number = 0;
free_string(leader_board.md_name);
leader_board.md_name = str_dup("Noone");
leader_board.md_number = 0;
free_string(leader_board.mk_name);
leader_board.mk_name = str_dup("Noone");
leader_board.mk_number = 0;
free_string(leader_board.qc_name);
leader_board.qc_name = str_dup("Noone");
leader_board.qc_number = 0;
free_string(leader_board.tt_name);
leader_board.tt_name = str_dup("Noone");
leader_board.tt_number = 0;
save_leaderboard();
send_to_char("Leader board cleared.\n\r",ch);
return;
}