// called by worldspawn void W_Precache(void) { memset( CBasePlayerItem::ItemInfoArray, 0, sizeof(CBasePlayerItem::ItemInfoArray) ); memset( CBasePlayerItem::AmmoInfoArray, 0, sizeof(CBasePlayerItem::AmmoInfoArray) ); giAmmoIndex = 0; // quake gun UTIL_PrecacheOtherWeapon( "weapon_quakegun" ); AddAmmoNameToAmmoRegistry( "shells" ); AddAmmoNameToAmmoRegistry( "nails" ); AddAmmoNameToAmmoRegistry( "rockets" ); AddAmmoNameToAmmoRegistry( "cells" ); // global sprites g_sModelIndexFireball = PRECACHE_MODEL ("sprites/zerogxplode.spr");// fireball g_sModelIndexWExplosion = PRECACHE_MODEL ("sprites/WXplo1.spr");// underwater fireball g_sModelIndexSmoke = PRECACHE_MODEL ("sprites/steam1.spr");// smoke g_sModelIndexBubbles = PRECACHE_MODEL ("sprites/bubble.spr");//bubbles g_sModelIndexBloodSpray = PRECACHE_MODEL ("sprites/bloodspray.spr"); // initial blood g_sModelIndexBloodDrop = PRECACHE_MODEL ("sprites/blood.spr"); // splattered blood // used by explosions PRECACHE_SOUND ("weapons/debris1.wav");// explosion aftermaths PRECACHE_SOUND ("weapons/debris2.wav");// explosion aftermaths PRECACHE_SOUND ("weapons/debris3.wav");// explosion aftermaths PRECACHE_SOUND ("weapons/grenade_hit1.wav");//grenade PRECACHE_SOUND ("weapons/grenade_hit2.wav");//grenade PRECACHE_SOUND ("weapons/grenade_hit3.wav");//grenade PRECACHE_SOUND ("weapons/bullet_hit1.wav"); // hit by bullet PRECACHE_SOUND ("weapons/bullet_hit2.wav"); // hit by bullet PRECACHE_SOUND ("items/weapondrop1.wav");// weapon falls to the ground PRECACHE_EVENT( 1, "events/shotgun1.sc" ); PRECACHE_EVENT( 1, "events/shotgun2.sc" ); PRECACHE_EVENT( 1, "events/axe.sc" ); PRECACHE_EVENT( 1, "events/axeswing.sc" ); PRECACHE_EVENT( 1, "events/rocket.sc" ); PRECACHE_EVENT( 1, "events/grenade.sc" ); PRECACHE_EVENT( 1, "events/lightning.sc" ); PRECACHE_EVENT( 1, "events/spike.sc" ); PRECACHE_EVENT( 1, "events/superspike.sc" ); }
// Precaches the weapon and queues the weapon info for sending to clients void UTIL_PrecacheOtherWeapon( const char *szClassname ) { edict_t *pent; pent = CREATE_NAMED_ENTITY( MAKE_STRING( szClassname ) ); if ( FNullEnt( pent ) ) { ALERT ( at_console, "NULL Ent in UTIL_PrecacheOtherWeapon\n" ); return; } CBaseEntity *pEntity = CBaseEntity::Instance (VARS( pent )); if (pEntity) { ItemInfo II; pEntity->Precache( ); memset( &II, 0, sizeof II ); if ( ((CBasePlayerItem*)pEntity)->GetItemInfo( &II ) ) { CBasePlayerItem::ItemInfoArray[II.iId] = II; if ( II.pszAmmo1 && *II.pszAmmo1 ) { AddAmmoNameToAmmoRegistry( II.pszAmmo1 ); } if ( II.pszAmmo2 && *II.pszAmmo2 ) { AddAmmoNameToAmmoRegistry( II.pszAmmo2 ); } memset( &II, 0, sizeof II ); } } REMOVE_ENTITY(pent); }