/*************************************************************************** 
*     This is the first snippet ive written, and well I hope that          *
*  it is accepted, and used; As I really dont know who all would want      *
*  to use this.                                                            *
*                                                                          *
*     That being said, please feel free to change, move around, delete     *
*  and improve this as you wish to. There is only one thing I ask, and     *
*  that is, if you find a faster way to do this, please let me know so     *
*  I might be able to update mine as well.                                 *
*                                                                          *
*  Please note that if you do not currently have a Player Killing Points   *
*  within your MU*, You will not need 'char pk_ranku', and will have to    *
*  sort through the code to remove the strings that refer to it.           *
*                                                                          *
*  Also change the location of the text file you wish to write to, as if   *
*  you do not have that, what would be the point?                          *
*                                                                          *
*  Vist Dementia.Mudmagic.com for an example.                              *
*                                                                          *
*  xkinnix@hotmail.com                                                     *
*  dementia.mudmagic.com:5000                                              *
***************************************************************************/

Within the file Update.c add the following :

Under 'void 	quest_update	args( ( void ) );'

Add   'void    who_update		args( ( void ) );'

-

Under 'quest_update( );'

Add   'who_update ( );'

-

Tword the bottom of the file, as to not mix anything up add the following :


char pk_ranku(CHAR_DATA *ch)
{
 if(IS_NPC(ch))
  return '-';
 if(ch->pcdata->pkp<10) 	return 'Z';
 if(ch->pcdata->pkp<20) 	return 'Y';
 if(ch->pcdata->pkp<30) 	return 'X';
 if(ch->pcdata->pkp<40) 	return 'W';
 if(ch->pcdata->pkp<60) 	return 'V';
 if(ch->pcdata->pkp<80)		return 'U';
 if(ch->pcdata->pkp<100)	return 'T';
 if(ch->pcdata->pkp<150)	return 'S';
 if(ch->pcdata->pkp<200)	return 'R';
 if(ch->pcdata->pkp<250)	return 'Q';
 if(ch->pcdata->pkp<300)	return 'P';
 if(ch->pcdata->pkp<400)	return 'O';
 if(ch->pcdata->pkp<500)	return 'N';
 if(ch->pcdata->pkp<600)	return 'M';
 if(ch->pcdata->pkp<700)	return 'L';
 if(ch->pcdata->pkp<900)	return 'K';
 if(ch->pcdata->pkp<1100)	return 'J';
 if(ch->pcdata->pkp<1300)	return 'I';
 if(ch->pcdata->pkp<1500)	return 'H';
 if(ch->pcdata->pkp<1750)	return 'G';
 if(ch->pcdata->pkp<2000)	return 'F';
 if(ch->pcdata->pkp<2500) 	return 'E';
 if(ch->pcdata->pkp<3000)	return 'D';
 if(ch->pcdata->pkp<4000)	return 'C';
 if(ch->pcdata->pkp<5000)	return 'B';
 if(ch->pcdata->pkp>=5000)	return 'A';
 return '-';

}

void who_update( void )
{
    	FILE *fp;
		CHAR_DATA *ch;
		CHAR_DATA *ch_next;
		char buf[MAX_STRING_LENGTH];
		int count=0,icount=0;

		/* Define if the player is shadow walking, and if so replace with */
		/* Someone, or if Immortal, Immortal. */
		char *name;
		/* Define the level the player is, IE, Immortal, 110 = OWN, Hero, */
		/* level 101 = HRO */
		char *level;

		/* Define the HTML FONT color tags - Kinni*/
		char *bred,*bgreen,*byellow,*bblue,*bpink,*bcyan,*white;
		char *dred,*dgreen,*dyellow,*dblue,*dpink,*dcyan,*gray,*black;
		char *end,*space;

		/* Set the HTML FONT colors for each of the defined color tags - Kinni */
		/* Sloppy, misused, bad coding? Perhaps, but it works - Kinni */

		/* Bright Color Tags */

		bred	= "<font color = '#ff0000'>";
		bgreen	= "<font color = '#00ff00'>";
		byellow = "<font color = '#ffff00'>";
		bblue	= "<font color = '#0000ff'>";
		bpink	= "<font color = '#ff00ff'>";
		bcyan	= "<font color = '#00ffff'>";
		white	= "<font color = '#ffffff'>";

		/* Dark Color Tags */

		dred	= "<font color = '#800000'>";
		dgreen  = "<font color = '#008000'>";
		dyellow = "<font color = '#808000'>";
		dblue	= "<font color = '#000080'>";
		dpink	= "<font color = '#800080'>";
		dcyan	= "<font color = '#008080'>";
		gray	= "<font color = '#c0c0c0'>";
		black	= "<font color = '#808080'>";
		
		/* Font Ending Tag */

		end		= "</font>";
		space	= "<font color = '000000'>..</font>";

		/* Location of the who.txt file, change it to your location */

		fp = fopen("../../public_html/who.txt","w");

		fprintf( fp,"%s-%s--%s-|%sI%sm%smorta%sl%ss%s|-%s--%s-%s<br>",gray,white,black,dblue,bblue,black,bblue,dblue,black,white,gray,end);

		/* Immortal Who List */

		for( ch = char_list; ch != NULL; ch = ch_next)
        {
			ch_next = ch->next;

			if(IS_NPC(ch))
				continue;

			if(IS_IMMORTAL(ch) && ch->level == 110)
			{
					if(ch->invis_level >= LEVEL_HERO || ch->ghost_level >= LEVEL_HERO || ch->incog_level >= LEVEL_HERO)
					continue;

					name = ch->name;
					sprintf(buf,"%sO%sW%sN%s",bred,dred,bred,end);
					level = buf;

			fprintf( fp, "%s[%s%s%3s%s%s%s%-5s%s%s%s%s%s%s%s%c%s%s]%s%s%s%s%s<br>",black,end,white,level,end,space,gray,pc_race_table[ch->race].who_name,end,space,bcyan,capitalize(class_table[ch->class].who_name),end,space,bblue,pk_ranku(ch),end,black,end,space,gray,name,end);
			icount += 1;
			}
		}
		for( ch = char_list; ch != NULL; ch = ch_next)
        {
			ch_next = ch->next;

			if(IS_NPC(ch))
				continue;

			if(IS_IMMORTAL(ch) && ch->level == 109)
			{

					if(ch->invis_level >= LEVEL_HERO || ch->ghost_level >= LEVEL_HERO || ch->incog_level >= LEVEL_HERO)
					continue;

					name = ch->name;
					sprintf(buf,"%sI%sM%sP%s",bred,dred,bred,end);
					level = buf;

			fprintf( fp, "%s[%s%s%3s%s%s%s%-5s%s%s%s%s%s%s%s%c%s%s]%s%s%s%s%s<br>",black,end,white,level,end,space,gray,pc_race_table[ch->race].who_name,end,space,bcyan,capitalize(class_table[ch->class].who_name),end,space,bblue,pk_ranku(ch),end,black,end,space,gray,name,end);
			icount += 1;
			}
		}
		for( ch = char_list; ch != NULL; ch = ch_next)
        {
			ch_next = ch->next;

			if(IS_NPC(ch))
				continue;

			if(IS_IMMORTAL(ch) && ch->level == 108)
			{

					if(ch->invis_level >= LEVEL_HERO || ch->ghost_level >= LEVEL_HERO || ch->incog_level >= LEVEL_HERO)
					continue;

					name = ch->name;
					sprintf(buf,"%sE%sN%sF%s",black,dred,white,end);
					level = buf;

			fprintf( fp, "%s[%s%s%3s%s%s%s%-5s%s%s%s%s%s%s%s%c%s%s]%s%s%s%s%s<br>",black,end,white,level,end,space,gray,pc_race_table[ch->race].who_name,end,space,bcyan,capitalize(class_table[ch->class].who_name),end,space,bblue,pk_ranku(ch),end,black,end,space,gray,name,end);
			icount += 1;
			}
		}
		for( ch = char_list; ch != NULL; ch = ch_next)
        {
			ch_next = ch->next;

			if(IS_NPC(ch))
				continue;

			if(IS_IMMORTAL(ch) && ch->level == 107)
			{

					if(ch->invis_level >= LEVEL_HERO || ch->ghost_level >= LEVEL_HERO || ch->incog_level >= LEVEL_HERO)
					continue;

					name = ch->name;
					sprintf(buf,"%sL%sD%sB%s",black,dcyan,white,end);
					level = buf;
				

			fprintf( fp, "%s[%s%s%3s%s%s%s%-5s%s%s%s%s%s%s%s%c%s%s]%s%s%s%s%s<br>",black,end,white,level,end,space,gray,pc_race_table[ch->race].who_name,end,space,bcyan,capitalize(class_table[ch->class].who_name),end,space,bblue,pk_ranku(ch),end,black,end,space,gray,name,end);
			icount += 1;
			}
		}
		for( ch = char_list; ch != NULL; ch = ch_next)
        {
			ch_next = ch->next;

			if(IS_NPC(ch))
				continue;

			if(IS_IMMORTAL(ch) && ch->level == 106)
			{
					if(ch->invis_level >= LEVEL_HERO || ch->ghost_level >= LEVEL_HERO || ch->incog_level >= LEVEL_HERO)
					continue;

					name = ch->name;
					sprintf(buf,"%sH%sQ%sI%s",black,dgreen,white,end);
					level = buf;


			fprintf( fp, "%s[%s%s%3s%s%s%s%-5s%s%s%s%s%s%s%s%c%s%s]%s%s%s%s%s<br>",black,end,white,level,end,space,gray,pc_race_table[ch->race].who_name,end,space,bcyan,capitalize(class_table[ch->class].who_name),end,space,bblue,pk_ranku(ch),end,black,end,space,gray,name,end);
			icount += 1;
			}
		}
		for( ch = char_list; ch != NULL; ch = ch_next)
        {
			ch_next = ch->next;

			if(IS_NPC(ch))
				continue;

			if(IS_IMMORTAL(ch) && ch->level == 105)
			{

					if(ch->invis_level >= LEVEL_HERO || ch->ghost_level >= LEVEL_HERO || ch->incog_level >= LEVEL_HERO)
					continue;

					name = ch->name;
					sprintf(buf,"%sQ%sC%sB%s",black,dyellow,byellow,end);
					level = buf;


			fprintf( fp, "%s[%s%s%3s%s%s%s%-5s%s%s%s%s%s%s%s%c%s%s]%s%s%s%s%s<br>",black,end,white,level,end,space,gray,pc_race_table[ch->race].who_name,end,space,bcyan,capitalize(class_table[ch->class].who_name),end,space,bblue,pk_ranku(ch),end,black,end,space,gray,name,end);
			icount += 1;
			}
		}
		for( ch = char_list; ch != NULL; ch = ch_next)
        {
			ch_next = ch->next;

			if(IS_NPC(ch))
				continue;

			if(IS_IMMORTAL(ch) && ch->level == 104)
			{

					if(ch->invis_level >= LEVEL_HERO || ch->ghost_level >= LEVEL_HERO || ch->incog_level >= LEVEL_HERO)
					continue;

					name = ch->name;
					sprintf(buf,"%sB%sL%sD%s",white,dred,white,end);
					level = buf;
				

			fprintf( fp, "%s[%s%s%3s%s%s%s%-5s%s%s%s%s%s%s%s%c%s%s]%s%s%s%s%s<br>",black,end,white,level,end,space,gray,pc_race_table[ch->race].who_name,end,space,bcyan,capitalize(class_table[ch->class].who_name),end,space,bblue,pk_ranku(ch),end,black,end,space,gray,name,end);
			icount += 1;
			}
		}
		for( ch = char_list; ch != NULL; ch = ch_next)
        {
			ch_next = ch->next;

			if(IS_NPC(ch))
				continue;

			if(IS_IMMORTAL(ch) && ch->level == 103)
			{

					if(ch->invis_level >= LEVEL_HERO || ch->ghost_level >= LEVEL_HERO || ch->incog_level >= LEVEL_HERO)
					continue;

					name = ch->name;
					sprintf(buf,"%sQ%sI%sM%s",dgreen,white,dgreen,end);
					level = buf;
				

			fprintf( fp, "%s[%s%s%3s%s%s%s%-5s%s%s%s%s%s%s%s%c%s%s]%s%s%s%s%s<br>",black,end,white,level,end,space,gray,pc_race_table[ch->race].who_name,end,space,bcyan,capitalize(class_table[ch->class].who_name),end,space,bblue,pk_ranku(ch),end,black,end,space,gray,name,end);
			icount += 1;
			}
		}
		for( ch = char_list; ch != NULL; ch = ch_next)
        {
			ch_next = ch->next;

			if(IS_NPC(ch))
				continue;

			if(IS_IMMORTAL(ch) && ch->level == 102)
			{

					if(ch->invis_level >= LEVEL_HERO || ch->ghost_level >= LEVEL_HERO || ch->incog_level >= LEVEL_HERO)
					continue;

					name = ch->name;
					sprintf(buf,"%sT%sR%sN%s",dyellow,byellow,dyellow,end);
					level = buf;

			fprintf( fp, "%s[%s%s%3s%s%s%s%-5s%s%s%s%s%s%s%s%c%s%s]%s%s%s%s%s<br>",black,end,white,level,end,space,gray,pc_race_table[ch->race].who_name,end,space,bcyan,capitalize(class_table[ch->class].who_name),end,space,bblue,pk_ranku(ch),end,black,end,space,gray,name,end);
			icount += 1;
			}
		}
		if(icount==0)
		{
		 fprintf( fp,"There are currently no immortals playing Mayhem.<br>");
		}
			
		fprintf( fp,"<br>%s-%s---%s-|%sM%so%srta%sl%ss%s|-%s---%s-%s<br>",gray,white,black,dblue,bblue,black,bblue,dblue,black,white,gray,end);

		/* Hero Who List */

		for( ch = char_list; ch != NULL; ch = ch_next)
        {
			ch_next = ch->next;

			if(IS_NPC(ch))
				continue;

		if(ch->level == 101)
		{

		if(ch->pcdata->pktoggle >= 1)
		{
			if(is_affected(ch,gsn_shadow_walk))
			{
				sprintf(buf,"%sH%sR%sO%s",bred,dred,bred,end);
				level = buf;
				name = "Someone";
			}
			else
			{
				sprintf(buf,"%sH%sR%sO%s",bred,dred,bred,end);
				level = buf;
				name = ch->name;
			}
		}
		else
		{
			if(is_affected(ch,gsn_shadow_walk))
			{
				name = "Someone";
				sprintf(buf,"%sH%sR%sO%s",gray,white,gray,end);
				level = buf;
			}
			else
			{
				sprintf(buf,"%sH%sR%sO%s",gray,white,gray,end);
				level = buf;
				name = ch->name;
			}
		}
			fprintf( fp, "%s[%s%s%3s%s%s%s%-5s%s%s%s%s%s%s%s%c%s%s]%s%s%s%s%s<br>",black,end,white,level,end,space,gray,pc_race_table[ch->race].who_name,end,space,bcyan,capitalize(class_table[ch->class].who_name),end,space,bblue,pk_ranku(ch),end,black,end,space,gray,name,end);
			count += 1;
		}
		}
		for( ch = char_list; ch != NULL; ch = ch_next)
        {
			ch_next = ch->next;

			if(IS_NPC(ch))
				continue;

		if(ch->level < 101)
		{

		if(ch->pcdata->pktoggle >= 1)
		{
			if(is_affected(ch,gsn_shadow_walk))
			{
			name = "Someone";
			sprintf(buf,"%s%d%s",bred,ch->level,end);
			level = buf;
			}
			else
			{
			name = ch->name;
			sprintf(buf,"%s%d%s",bred,ch->level,end);
			level = buf;
			}
		}
		else
		{
			if(is_affected(ch,gsn_shadow_walk))
			{
				name = "Someone";
				sprintf(buf,"%s%d%s",gray,ch->level,end);
				level = buf;
			}
			else
			{
				name = ch->name;
				sprintf(buf,"%s%d%s",gray,ch->level,end);
				level = buf;
			}
		}
			fprintf( fp, "%s[%s%s%3s%s%s%s%-5s%s%s%s%s%s%s%s%c%s%s]%s%s%s%s%s<br>",black,end,white,level,end,space,gray,pc_race_table[ch->race].who_name,end,space,bcyan,capitalize(class_table[ch->class].who_name),end,space,bblue,pk_ranku(ch),end,black,end,space,gray,name,end);
			count += 1;
		}
		}
		if(count==0)
		{
		 fprintf( fp,"There are currently no mortals playing Mayhem.<br>");
		}

    	fclose( fp );

}