|
|
|
Half-Life Code is in YELLOW My Code is in RED Player.h add the folowing:- typedef enum { PLAYER_IDLE, PLAYER_WALK, PLAYER_JUMP, PLAYER_SUPERJUMP, PLAYER_DIE, PLAYER_ATTACK1, } PLAYER_ANIM; //Experience Level typedef enum { EXP_LEVEL_1, EXP_LEVEL_2, EXP_LEVEL_3, EXP_LEVEL_4, EXP_LEVEL_5, } explevel_t; //Experience Level void SetCustomDecalFrames( int nFrames ); int GetCustomDecalFrames( void ); //Experience Level int exp_level; //Experience Level }; #define AUTOAIM_2DEGREES 0.0348994967025 #define AUTOAIM_5DEGREES 0.08715574274766 #define AUTOAIM_8DEGREES 0.1391731009601 #define AUTOAIM_10DEGREES 0.1736481776669 Multiplay_Gamerules.cpp In PlayerSpawn() Add this: while ( pWeaponEntity = UTIL_FindEntityByClassname( pWeaponEntity, "game_player_equip" )) { pWeaponEntity->Touch( pPlayer ); addDefault = FALSE; } //Experience Level if (pPlayer->exp_level == EXP_LEVEL_1) { /*-----Set the player speed. And increase it by 10 as there experience improves-----*/ g_engfuncs.pfnSetClientMaxspeed( ENT( pPlayer->pev ), 290); /*-----Give the player some weapons and full ammo.-----*/ pPlayer->GiveNamedItem( "weapon_crowbar" ); pPlayer->GiveNamedItem( "weapon_9mmhandgun" ); pPlayer->GiveAmmo( _9MM_MAX_CARRY, "9mm", _9MM_MAX_CARRY ); /*-----Give the player some armor-----*/ pPlayer->GiveNamedItem( "item_battery" ); /*-----Tell the player what experience level they are at.-----*/ ClientPrint(pPlayer->pev, HUD_PRINTCENTER, "Your Experience Level Is 1"); /*-----Dont give the player the default weapons. Give them certains weapons from experience,-----*/ addDefault = FALSE; } else if (pPlayer->exp_level == EXP_LEVEL_2) { g_engfuncs.pfnSetClientMaxspeed( ENT( pPlayer->pev ), 300); pPlayer->GiveNamedItem( "weapon_shotgun" ); pPlayer->GiveAmmo( BUCKSHOT_MAX_CARRY, "buckshot", BUCKSHOT_MAX_CARRY ); pPlayer->GiveNamedItem( "weapon_357" ); pPlayer->GiveAmmo( _357_MAX_CARRY, "357", _357_MAX_CARRY ); pPlayer->GiveNamedItem( "item_battery" ); ClientPrint(pPlayer->pev, HUD_PRINTCENTER, "Your Experience Level Is 2"); addDefault = FALSE; } else if (pPlayer->exp_level == EXP_LEVEL_3) { g_engfuncs.pfnSetClientMaxspeed( ENT( pPlayer->pev ), 310); pPlayer->GiveNamedItem( "weapon_9mmAR" ); pPlayer->GiveAmmo( _9MM_MAX_CARRY, "9mm", _9MM_MAX_CARRY ); pPlayer->GiveNamedItem( "weapon_snark" ); pPlayer->GiveAmmo( SNARK_MAX_CARRY, "snark", SNARK_MAX_CARRY ); pPlayer->GiveNamedItem( "weapon_handgrenade" ); pPlayer->GiveAmmo( HANDGRENADE_MAX_CARRY, "handgrenade", HANDGRENADE_MAX_CARRY ); pPlayer->GiveNamedItem( "item_battery" ); pPlayer->GiveNamedItem( "item_battery" ); ClientPrint(pPlayer->pev, HUD_PRINTCENTER, "Your Experience Level Is 3"); addDefault = FALSE; } else if (pPlayer->exp_level == EXP_LEVEL_4) { g_engfuncs.pfnSetClientMaxspeed( ENT( pPlayer->pev ), 320); pPlayer->GiveNamedItem( "weapon_crossbow" ); pPlayer->GiveAmmo( BOLT_MAX_CARRY, "bolt", BOLT_MAX_CARRY ); pPlayer->GiveNamedItem( "weapon_RPG" ); pPlayer->GiveAmmo( ROCKET_MAX_CARRY, "rocket", ROCKET_MAX_CARRY ); pPlayer->GiveNamedItem( "weapon_tripmine" ); pPlayer->GiveAmmo( TRIPMINE_MAX_CARRY, "tripmine", TRIPMINE_MAX_CARRY ); pPlayer->GiveNamedItem( "item_battery" ); pPlayer->GiveNamedItem( "item_battery" ); pPlayer->GiveNamedItem( "item_battery" ); ClientPrint(pPlayer->pev, HUD_PRINTCENTER, "Your Experience Level Is 4"); addDefault = FALSE; } else if (pPlayer->exp_level == EXP_LEVEL_5) { g_engfuncs.pfnSetClientMaxspeed( ENT( pPlayer->pev ), 330); pPlayer->GiveNamedItem( "weapon_egon" ); pPlayer->GiveAmmo( URANIUM_MAX_CARRY, "uranium",URANIUM_MAX_CARRY ); pPlayer->GiveNamedItem( "weapon_gauss" ); pPlayer->GiveAmmo( URANIUM_MAX_CARRY, "uranium",URANIUM_MAX_CARRY ); pPlayer->GiveNamedItem( "weapon_satchel" ); pPlayer->GiveAmmo( SATCHEL_MAX_CARRY, "satchel", SATCHEL_MAX_CARRY ); pPlayer->GiveAmmo( M203_GRENADE_MAX_CARRY, "ARgrenades", M203_GRENADE_MAX_CARRY ); pPlayer->GiveNamedItem( "item_battery" ); pPlayer->GiveNamedItem( "item_battery" ); pPlayer->GiveNamedItem( "item_battery" ); pPlayer->GiveNamedItem( "item_battery" ); ClientPrint(pPlayer->pev, HUD_PRINTCENTER, "Your Experience Level Is 5"); addDefault = FALSE; } //Experience Level Still In Multiplay_Gamerules.cpp In PlayerKilled() Add this: else if ( ktmp && ktmp->IsPlayer() ) { // if a player dies in a deathmatch game and the killer is a client, award the killer some points pKiller->frags += IPointsForKill( peKiller, pVictim ); //Experience Level if (peKiller->exp_level == EXP_LEVEL_1) { peKiller->exp_level = EXP_LEVEL_2; g_engfuncs.pfnSetClientMaxspeed( ENT( peKiller->pev ), 300); peKiller->GiveNamedItem( "weapon_shotgun" ); peKiller->GiveAmmo( BUCKSHOT_MAX_CARRY, "buckshot", BUCKSHOT_MAX_CARRY ); peKiller->GiveNamedItem( "weapon_357" ); peKiller->GiveAmmo( _357_MAX_CARRY, "357", _357_MAX_CARRY ); peKiller->GiveNamedItem( "item_battery" ); ClientPrint(peKiller->pev, HUD_PRINTCENTER, "Experience Level Incresed to 2"); } else if (peKiller->exp_level == EXP_LEVEL_2) { peKiller->exp_level =EXP_LEVEL_3; g_engfuncs.pfnSetClientMaxspeed( ENT( peKiller->pev ), 310); peKiller->GiveNamedItem( "weapon_9mmAR" ); peKiller->GiveAmmo( _9MM_MAX_CARRY, "9mm", _9MM_MAX_CARRY ); peKiller->GiveNamedItem( "weapon_snark" ); peKiller->GiveAmmo( SNARK_MAX_CARRY, "snark", SNARK_MAX_CARRY ); peKiller->GiveNamedItem( "weapon_handgrenade" ); peKiller->GiveAmmo( HANDGRENADE_MAX_CARRY, "handgrenade", HANDGRENADE_MAX_CARRY ); peKiller->GiveNamedItem( "item_battery" ); peKiller->GiveNamedItem( "item_battery" ); ClientPrint(peKiller->pev, HUD_PRINTCENTER, "Experience Level Incresed to 3"); } else if (peKiller->exp_level == EXP_LEVEL_3) { peKiller->exp_level = EXP_LEVEL_4; g_engfuncs.pfnSetClientMaxspeed( ENT( peKiller->pev ), 320); peKiller->GiveNamedItem( "weapon_crossbow" ); peKiller->GiveAmmo( BOLT_MAX_CARRY, "bolt", BOLT_MAX_CARRY ); peKiller->GiveNamedItem( "weapon_RPG" ); peKiller->GiveAmmo( ROCKET_MAX_CARRY, "rocket", ROCKET_MAX_CARRY ); peKiller->GiveNamedItem( "weapon_tripmine" ); peKiller->GiveAmmo( TRIPMINE_MAX_CARRY, "tripmine", TRIPMINE_MAX_CARRY ); peKiller->GiveNamedItem( "item_battery" ); peKiller->GiveNamedItem( "item_battery" ); peKiller->GiveNamedItem( "item_battery" ); ClientPrint(peKiller->pev, HUD_PRINTCENTER, "Experience Level Incresed to 4"); } else if (peKiller->exp_level == EXP_LEVEL_4) { peKiller->exp_level = EXP_LEVEL_5; g_engfuncs.pfnSetClientMaxspeed( ENT( peKiller->pev ), 330); peKiller->GiveNamedItem( "weapon_egon" ); peKiller->GiveAmmo( URANIUM_MAX_CARRY, "uranium",URANIUM_MAX_CARRY ); peKiller->GiveNamedItem( "weapon_gauss" ); peKiller->GiveAmmo( URANIUM_MAX_CARRY, "uranium",URANIUM_MAX_CARRY ); peKiller->GiveNamedItem( "weapon_satchel" ); peKiller->GiveAmmo( SATCHEL_MAX_CARRY, "satchel", SATCHEL_MAX_CARRY ); peKiller->GiveAmmo( M203_GRENADE_MAX_CARRY, "ARgrenades", M203_GRENADE_MAX_CARRY ); peKiller->GiveNamedItem( "item_battery" ); peKiller->GiveNamedItem( "item_battery" ); peKiller->GiveNamedItem( "item_battery" ); peKiller->GiveNamedItem( "item_battery" ); ClientPrint(peKiller->pev, HUD_PRINTCENTER, "Experience Level Incresed to 5"); } if (pVictim->exp_level == EXP_LEVEL_2) { pVictim->exp_level = EXP_LEVEL_1; g_engfuncs.pfnSetClientMaxspeed( ENT( pVictim->pev ), 290); ClientPrint(pVictim->pev, HUD_PRINTCENTER, "Experience Level Decresed to 1"); } else if (pVictim->exp_level == EXP_LEVEL_3) { pVictim->exp_level = EXP_LEVEL_2; g_engfuncs.pfnSetClientMaxspeed( ENT( pVictim->pev ), 300); ClientPrint(pVictim->pev, HUD_PRINTCENTER, "Experience Level Decresed to 2"); } else if (pVictim->exp_level == EXP_LEVEL_4) { pVictim->exp_level = EXP_LEVEL_3; g_engfuncs.pfnSetClientMaxspeed( ENT( pVictim->pev ), 310); ClientPrint(pVictim->pev, HUD_PRINTCENTER, "Experience Level Decresed to 3"); } else if (pVictim->exp_level == EXP_LEVEL_5) { pVictim->exp_level = EXP_LEVEL_4; g_engfuncs.pfnSetClientMaxspeed( ENT( pVictim->pev ), 320); ClientPrint(pVictim->pev, HUD_PRINTCENTER, "Experience Level Decresed to 4"); } //Experience Level FireTargets( "game_playerkill", ktmp, ktmp, USE_TOGGLE, 0 ); } else { // killed by the world pKiller->frags -= 1; } Still In Multiplay_Gamerules.cpp In InitHUD() Add this: // sending just one score makes the hud scoreboard active; otherwise // it is just disabled for single play MESSAGE_BEGIN( MSG_ONE, gmsgScoreInfo, NULL, pl->edict() ); WRITE_BYTE( ENTINDEX(pl->edict()) ); WRITE_SHORT( 0 ); WRITE_SHORT( 0 ); MESSAGE_END(); SendMOTDToClient( pl->edict() ); //Experience Level pl->exp_level = EXP_LEVEL_1; //Experience Level
Any questions or suggestions should be sent to me:
Don1@eidosnet.co.uk