/* --- --- --- --- --- --- --- --- --- --- |S| |P| |I| |R| |A| |L| |V| |O| |I| |D| --- --- --- --- --- --- --- --- --- --- Place this code in player.c above your current score Just copy and paste all this stuff Then you can either rename this score or your old score to do_score2 and add the command score2 to your mud through whatever way you add commands look at mud.h and tables.c if your not sure ---------------------------------------------------------- */ /* int num is the ability number - written by spiral void June 2, 2005 */ char *exp_bar(CHAR_DATA *ch,int num) { static char buf[MAX_STRING_LENGTH]; int ability = num; int level = ch->skill_level[ability]; int max_exp=(level)*(level)*(500); int exp[19]; int cur=ch->experience[ability]; exp[0]=(level)*(level)*(25); exp[1]=(level)*(level)*(50); exp[2]=(level)*(level)*(75); exp[3]=(level)*(level)*(100); exp[4]=(level)*(level)*(125); exp[5]=(level)*(level)*(150); exp[6]=(level)*(level)*(175); exp[7]=(level)*(level)*(200); exp[8]=(level)*(level)*(225); exp[9]=(level)*(level)*(250); exp[10]=(level)*(level)*(275); exp[11]=(level)*(level)*(300); exp[12]=(level)*(level)*(325); exp[13]=(level)*(level)*(350); exp[14]=(level)*(level)*(375); exp[15]=(level)*(level)*(400); exp[16]=(level)*(level)*(425); exp[17]=(level)*(level)*(450); exp[18]=(level)*(level)*(475); exp[19]=(level)*(level)*(499); if( cur < exp[0] ) sprintf(buf,"&c[&w-------------------&c]"); if( cur >= exp[0] && cur < exp[1] ) sprintf(buf,"&c[&R|&w------------------&c]"); if( cur >= exp[1] && cur < exp[2] ) sprintf(buf,"&c[&R||&w-----------------&c]"); if( cur >= exp[2] && cur < exp[3] ) sprintf(buf,"&c[&R|||&w----------------&c]"); if( cur >= exp[3] && cur < exp[4] ) sprintf(buf,"&c[&R||||&w---------------&c]"); if( cur >= exp[4] && cur < exp[5] ) sprintf(buf,"&c[&R|||||&w--------------&c]"); if( cur >= exp[5] && cur < exp[6] ) sprintf(buf,"&c[&R||||||&w-------------&c]"); if( cur >= exp[6] && cur < exp[7] ) sprintf(buf,"&c[&R|||||||&w------------&c]"); if( cur >= exp[7] && cur < exp[8] ) sprintf(buf,"&c[&R||||||||&w-----------&c]"); if( cur >= exp[8] && cur < exp[9] ) sprintf(buf,"&c[&R|||||||||&w----------&c]"); if( cur >= exp[9] && cur < exp[10] ) sprintf(buf,"&c[&R||||||||||&w---------&c]"); if( cur >= exp[10] && cur < exp[11] ) sprintf(buf,"&c[&R|||||||||||&w--------&c]"); if( cur >= exp[11] && cur < exp[12] ) sprintf(buf,"&c[&R||||||||||||&w-------&c]"); if( cur >= exp[12] && cur < exp[13] ) sprintf(buf,"&c[&R|||||||||||||&w------&c]"); if( cur >= exp[13] && cur < exp[14] ) sprintf(buf,"&c[&R||||||||||||||&w-----&c]"); if( cur >= exp[14] && cur < exp[15] ) sprintf(buf,"&c[&R|||||||||||||||&w----&c]"); if( cur >= exp[15] && cur < exp[16] ) sprintf(buf,"&c[&R||||||||||||||||&w---&c]"); if( cur >= exp[16] && cur < exp[17] ) sprintf(buf,"&c[&R|||||||||||||||||&w--&c]"); if( cur >= exp[17] && cur < exp[18] ) sprintf(buf,"&c[&R||||||||||||||||||&w-&c]"); if( cur >= exp[18] && cur < max_exp ) sprintf(buf,"&c[&R|||||||||||||||||||&c]"); return buf; } /* from swfote */ /* fixed division by zero bug if max is 0 then per will try to get a value of division by 0 wich we all should know is not possible 6/7/05 - cirus */ char *drawlife(int min, int max){ static char buf[MAX_STRING_LENGTH]; int per; if( max == 0 ) { per = 0; } else { per = ((min * 100) / max); } if (per < 0) per = 0; if (per > 100) per = 100; if (per == 100) sprintf(buf, "&G&W[&R|||||||||||||&w&W]"); else if (per >= 90 && per < 100) sprintf(buf, "&G&W[&R||||||||||||&w-&W]"); else if (per >= 80 && per < 90) sprintf(buf, "&G&W[&R|||||||||||&w--&W]"); else if (per >= 70 && per < 80) sprintf(buf, "&G&W[&R||||||||||&w---&W]"); else if (per >= 60 && per < 70) sprintf(buf, "&G&W[&R||||||||&w-----&W]"); else if (per >= 50 && per < 60) sprintf(buf, "&G&W[&R|||||||&w------&W]"); else if (per >= 40 && per < 50) sprintf(buf, "&G&W[&R||||||&w-------&W]"); else if (per >= 30 && per < 40) sprintf(buf, "&G&W[&R|||||&w--------&W]"); else if (per >= 30 && per < 40) sprintf(buf, "&G&W[&R||||&w---------&W]"); else if (per >= 20 && per < 40) sprintf(buf, "&G&W[&R|||&w----------&W]"); else if (per >= 10 && per < 40) sprintf(buf, "&G&W[&R||&w-----------&W]"); else if (per >= 0 && per < 10) sprintf(buf, "&G&W[&R&w-------------&W]"); //else sprintf(buf, "&G&W[&R&W]"); return buf; } /* fixed division by zero bug if max is 0 then per will try to get a value of division by 0 wich we all should know is not possible 6/7/05 - cirus */ char *drawforce(int min, int max,CHAR_DATA *ch){ static char buf[MAX_STRING_LENGTH]; int per; if ( IS_IMMORTAL(ch) || ch->skill_level[FORCE_ABILITY] > 1 ) { if( max == 0 ) { per = 0; } else { per = ((min * 100) / max); } if (per < 0) per = 0; if (per > 100) per = 100; if (per == 100) sprintf(buf, "&G&W[&R|||||||||||||&w&W]"); else if (per >= 90 && per < 100) sprintf(buf, "&G&W[&R||||||||||||&w-&W]"); else if (per >= 80 && per < 90) sprintf(buf, "&G&W[&R|||||||||||&w--&W]"); else if (per >= 70 && per < 80) sprintf(buf, "&G&W[&R||||||||||&w---&W]"); else if (per >= 60 && per < 70) sprintf(buf, "&G&W[&R||||||||&w-----&W]"); else if (per >= 50 && per < 60) sprintf(buf, "&G&W[&R|||||||&w------&W]"); else if (per >= 40 && per < 50) sprintf(buf, "&G&W[&R||||||&w-------&W]"); else if (per >= 30 && per < 40) sprintf(buf, "&G&W[&R|||||&w--------&W]"); else if (per >= 30 && per < 40) sprintf(buf, "&G&W[&R||||&w---------&W]"); else if (per >= 20 && per < 40) sprintf(buf, "&G&W[&R|||&w----------&W]"); else if (per >= 10 && per < 40) sprintf(buf, "&G&W[&R||&w-----------&W]"); else if (per >= 0 && per < 10) sprintf(buf, "&G&W[&R&w-------------&W]"); //else sprintf(buf, "&G&W[&R&W]"); } else sprintf(buf," "); return buf; } /* from swfote */ char *drawmove(int min, int max){ static char buf[MAX_STRING_LENGTH]; int per; per = ((min * 100) / max); if (per == 100) sprintf(buf, "&G&W[&R|||||||&w&W]"); else if (per >= 90 && per < 100) sprintf(buf, "&G&W[&R||||||&w-&W]"); else if (per >= 80 && per < 90) sprintf(buf, "&G&W[&R|||||&w--&W]"); else if (per >= 70 && per < 80) sprintf(buf, "&G&W[&R||||&w---&W]"); else if (per >= 60 && per < 70) sprintf(buf, "&G&W[&R|||&w----&W]"); else if (per >= 50 && per < 60) sprintf(buf, "&G&W[&R||&w-----&W]"); else if (per >= 40 && per < 50) sprintf(buf, "&G&W[&R|&w------&W]"); else if (per >= 30 && per < 40) sprintf(buf, "&G&W[&R|&w------&W]"); else if (per >= 20 && per < 40) sprintf(buf, "&G&W[&R|&w------&W]"); else if (per >= 10 && per < 40) sprintf(buf, "&G&W[&R|&w------&W]"); else if (per >= 0 && per < 10) sprintf(buf, "&G&W[&R&w-------&W]"); else sprintf(buf, "&G&W[&R&W]"); return buf; } /* from swfote */ char *drawalign(int align){ static char buf[MAX_STRING_LENGTH]; if (align >= 100) sprintf(buf, "&W[&C============&W|&W]"); else if (align >= 90 && align < 100) sprintf(buf, "&W[&C===========&W|&C=&W]"); else if (align >= 60 && align < 90) sprintf(buf, "&W[&C==========&W|&C==&W]"); else if (align >= 40 && align < 60) sprintf(buf, "&W[&C=========&W|&C===&W]"); else if (align >= 20 && align < 40) sprintf(buf, "&W[&C========&W|&C====&W]"); else if (align >= 10 && align < 20) sprintf(buf, "&W[&C=======&W|&C=====&W]"); else if (align >= 0 && align < 10) sprintf(buf, "&W[&C======&W|&C======&W]"); else if (align <= -1 && align > -20) sprintf(buf, "&W[&C=====&W|&C=======&W]"); else if (align <= -20 && align > -40) sprintf(buf, "&W[&C====&W|&C========&W]"); else if (align <= -60 && align > -80) sprintf(buf, "&W[&C===&W|&C=========&W]"); else if (align <= -80 && align > -100) sprintf(buf, "&W[&C==&W|&C==========&W]"); else if (align <= -100) sprintf(buf, "&W[&W|&C============&W]"); return buf; } /* SWFOTE Score */ /* Modified by Spiral Void */ /* At some point we need to decide wich score is going to be the score and wich one is going to be score2 This score has been put in as score after being heavily striped and redone 6/3/05 This score command was striped of all swfote code then redone This score accepts an argument of a player name so you can view the score of someone else very nice */ /* New Score by Goku */ void do_score( CHAR_DATA *ch, char *argument ) { CHAR_DATA *victim; int ability; if(!argument || argument[0] == '\0') victim = ch; else if(IS_IMMORTAL(ch)) { if( ( victim = get_char_world( ch, argument ) ) == NULL) { send_to_char("Victim not found.\r\n",ch); return; } if(IS_SET(victim->act, PLR_WIZINVIS) && victim->pcdata->wizinvis > ch->top_level) { send_to_char("Victim not found.\r\n",ch); return; } } else victim = ch; if (IS_NPC(victim)) { do_oldscore(ch, argument); return; } send_to_char("&z.--------------------------------------------------------------------.&W\n\r", ch); send_to_char("&z| &z|&W\n\r", ch); send_to_char("&z| |&W\n\r", ch); send_to_char("&z| &z|&W\n\r", ch); ch_printf(ch, "&z| &cName: &g%-25.25s &cStrength: &g%-2d &z|\n\r", victim->name, get_curr_str(victim)); if (victim->pcdata->clan) ch_printf(ch, "&z| &cClan: &g%-25.25s &cDexterity: &g%-2d &z|\n\r", victim->pcdata->clan->name, get_curr_dex(victim)); else ch_printf(ch, "&z| &cClan: &g%-25.25s &cDexterity: &g%-2d &z|\n\r", "None", get_curr_dex(victim)); ch_printf(ch, "&z| &cRace: &g%-25.25s &cConstitution: &g%-2d &z|\n\r", capitalize(get_race(victim)), get_curr_con(victim)); ch_printf(ch, "&z| &cArmor: &g%-25d &cIntelligence: &g%-2d &z|\n\r", GET_AC(victim), get_curr_int(victim)); ch_printf(ch, "&z| &cHP: %s &cMove: %s &cWisdom: &g%-2d &z|\n\r", drawlife(victim->hit, victim->max_hit), drawmove(victim->move, victim->max_move), get_curr_wis(victim)); ch_printf(ch, "&z| &cAlign: %s &cForce: %s &cCharisma: &g%-2d &z|\n\r", drawalign(victim->alignment),drawforce(victim->mana,victim->max_mana,ch), get_curr_cha(victim)); send_to_char("&z|--------------------------------------------------------------------|&W\n\r", ch); ch_printf(ch, "&z| &cCredits: &g%-10d &cSavings: &g%-10d &z|&W\n\r", victim->gold, victim->pcdata->bank); ch_printf(ch, "&z| &cWeight: %s &cItems: %s &z|&W\n\r", drawlife(victim->carry_weight, can_carry_w(victim)), drawlife(victim->carry_number, can_carry_n(victim))); send_to_char("&z|--------------------------------------------------------------------|&W\n\r", ch); for ( ability = 0 ; ability < MAX_ABILITY ; ability++ ) { if ( ability != FORCE_ABILITY ) { ch_printf( ch, "&z| &c%-15s Level: &g%-3d &cof &g%-3d &cExp: %s&z|\n\r", ability_name[ability], victim->skill_level[ability], max_level(victim, ability), exp_bar(ch,ability)); } else if ( ( ability == FORCE_ABILITY ) && ( IS_IMMORTAL(victim) || victim->skill_level[FORCE_ABILITY] > 1 )) { ch_printf( ch, "&z| &c%-15s Level: &g%-3d &cof &g%-3d &cExp: %s&z|\n\r", ability_name[ability], victim->skill_level[ability], max_level(victim, ability), exp_bar(ch,ability)); } } send_to_char("&z|--------------------------------------------------------------------|&W\n\r", ch); send_to_char("&z| &z|\n\r", ch); send_to_char("&z|--------------------------------------------------------------------|&W\n\r", ch); ch_printf(ch,"&R&z| &z|&W\n\r" ); send_to_char("&z|--------------------------------------------------------------------|&W\n\r", ch); send_to_char("&z| &z|\n\r", ch); send_to_char("&z+--------------------------------------------------------------------+&W\n\r", ch); }