
|
|
|
|
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
![]()