|
hallo ersma
also ich hab ne waffe gemacht: hier der quellcode:
/***
*
* Copyright (c) 1999, 2000 Valve LLC. All rights reserved.
*
* This product contains software technology licensed from Id
* Software, Inc. ("Id Technology"). Id Technology (c) 1996 Id Software, Inc.
* All Rights Reserved.
*
* Use, distribution, and modification of this source code and/or resulting
* object code is restricted to non-commercial enhancements to products from
* Valve LLC. All other use, distribution, or modification is prohibited
* without written permission from Valve LLC.
*
****/
#include "extdll.h"
#include "util.h"
#include "cbase.h"
#include "monsters.h"
#include "weapons.h"
#include "nodes.h"
#include "player.h"
#include "soundent.h"
#include "gamerules.h"
enum mp5_e
{
MP5sd_LONGIDLE = 0,
MP5sd_IDLE1,
MP5sd_LAUNCH,
MP5sd_RELOAD,
MP5sd_DEPLOY,
MP5sd_FIRE1,
MP5sd_FIRE2,
MP5sd_FIRE3,
};
class CMP5SD : public CBasePlayerWeapon
{
public:
void Spawn( void );
void Precache( void );
int iItemSlot( void ) { return 3; }
int GetItemInfo(ItemInfo *p);
int AddToPlayer( CBasePlayer *pPlayer );
void PrimaryAttack( void );
void SecondaryAttack( void );
int SecondaryAmmoIndex( void );
BOOL Deploy( void );
void Reload( void );
void WeaponIdle( void );
float m_flNextAnimTime;
int m_iShell;
private:
unsigned short m_usMP5SD;
};
LINK_ENTITY_TO_CLASS( weapon_mp5sd, CMP5SD );
LINK_ENTITY_TO_CLASS( weapon_9mmAR, CMP5SD );
//=========================================================
//=========================================================
int CMP5SD::SecondaryAmmoIndex( void )
{
return m_iSecondaryAmmoType;
}
void CMP5SD::Spawn( )
{
pev->classname = MAKE_STRING("weapon_9mmAR"); // hack to allow for old names
Precache( );
SET_MODEL(ENT(pev), "models/w_9mmAR.mdl");
m_iId = WEAPON_MP5SD;
m_iDefaultAmmo = MP5SD_DEFAULT_GIVE;
FallInit();// get ready to fall down.
}
void CMP5SD::Precache( void )
{
PRECACHE_MODEL("models/v_mp5sd.mdl");
PRECACHE_MODEL("models/w_mp5sd.mdl");
PRECACHE_MODEL("models/p_mp5sd.mdl");
m_iShell = PRECACHE_MODEL ("models/shell.mdl");// brass shellTE_MODEL
PRECACHE_MODEL("models/grenade.mdl"); // grenade
PRECACHE_MODEL("models/w_9mmARclip.mdl");
PRECACHE_SOUND("items/9mmclip1.wav");
PRECACHE_SOUND("items/clipinsert1.wav");
PRECACHE_SOUND("items/cliprelease1.wav");
// PRECACHE_SOUND("items/guncock1.wav");
PRECACHE_SOUND ("weapons/mp5sd.wav");// H to the K
PRECACHE_SOUND ("weapons/mp5sd.wav");// H to the K
PRECACHE_SOUND ("weapons/mp5sd.wav");// H to the K
PRECACHE_SOUND( "weapons/glauncher.wav" );
PRECACHE_SOUND( "weapons/glauncher2.wav" );
PRECACHE_SOUND ("weapons/357_cock1.wav");
m_usMP5SD = PRECACHE_EVENT( 1, "events/mp5sd.sc" );
}
int CMP5SD::GetItemInfo(ItemInfo *p)
{
p->pszName = STRING(pev->classname);
p->pszAmmo1 = "9mm";
p->iMaxAmmo1 = _9MM_MAX_CARRY;
p->pszAmmo2 = NULL;
p->iMaxAmmo2 = -1;
p->iMaxClip = MP5SD_MAX_CLIP;
p->iSlot = 0;
p->iPosition = 1;
p->iFlags = 0;
p->iId = m_iId = WEAPON_MP5SD;
p->iWeight = MP5SD_WEIGHT;
return 1;
}
int CMP5SD::AddToPlayer( CBasePlayer *pPlayer )
{
if ( CBasePlayerWeapon::AddToPlayer( pPlayer ) )
{
MESSAGE_BEGIN( MSG_ONE, gmsgWeapPickup, NULL, pPlayer->pev );
WRITE_BYTE( m_iId );
MESSAGE_END();
return TRUE;
}
return FALSE;
}
BOOL CMP5SD::Deploy( )
{
return DefaultDeploy( "models/v_9mmAR.mdl", "models/p_9mmAR.mdl", MP5SD_DEPLOY, "mp5sd" );
}
void CMP5SD::PrimaryAttack()
{
// don't fire underwater
if (m_pPlayer->pev->waterlevel == 3)
{
PlayEmptySound( );
m_flNextPrimaryAttack = gpGlobals->time + 0.08;
return;
}
if (m_iClip <= 0)
{
PlayEmptySound();
m_flNextPrimaryAttack = gpGlobals->time + 0.08;
return;
}
PLAYBACK_EVENT( 0, m_pPlayer->edict(), m_usMP5SD );
m_pPlayer->m_iWeaponVolume = NORMAL_GUN_VOLUME;
m_pPlayer->m_iWeaponFlash = NORMAL_GUN_FLASH;
m_iClip--;
// player "shoot" animation
m_pPlayer->SetAnimation( PLAYER_ATTACK1 );
Vector vecSrc = m_pPlayer->GetGunPosition( );
Vector vecAiming = m_pPlayer->GetAutoaimVector( AUTOAIM_5DEGREES );
if ( g_pGameRules->IsDeathmatch() )
{
// optimized multiplayer. Widened to make it easier to hit a moving player
m_pPlayer->FireBullets( 1, vecSrc, vecAiming, VECTOR_CONE_6DEGREES, 8192, BULLET_PLAYER_MP5, 2 );
}
else
{
// single player spread
m_pPlayer->FireBullets( 1, vecSrc, vecAiming, VECTOR_CONE_3DEGREES, 8192, BULLET_PLAYER_MP5, 2 );
}
if (!m_iClip && m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0)
// HEV suit - indicate out of ammo condition
m_pPlayer->SetSuitUpdate("!HEV_AMO0", FALSE, 0);
m_flNextPrimaryAttack = m_flNextPrimaryAttack + 0.09;
if (m_flNextPrimaryAttack < gpGlobals->time)
m_flNextPrimaryAttack = gpGlobals->time + 0.09;
m_flTimeWeaponIdle = gpGlobals->time + RANDOM_FLOAT ( 20, 25 );
}
void CMP5SD::SecondaryAttack( void )
{
}
void CMP5SD::Reload( void )
{
DefaultReload( MP5SD_MAX_CLIP, MP5SD_RELOAD, 1.5 );
}
void CMP5SD::WeaponIdle( void )
{
ResetEmptySound( );
m_pPlayer->GetAutoaimVector( AUTOAIM_5DEGREES );
if (m_flTimeWeaponIdle > gpGlobals->time)
return;
int iAnim;
switch ( RANDOM_LONG( 0, 1 ) )
{
case 0:
iAnim = MP5SD_LONGIDLE;
break;
default:
case 1:
iAnim = MP5SD_IDLE1;
break;
}
SendWeaponAnim( iAnim );
m_flTimeWeaponIdle = gpGlobals->time + RANDOM_FLOAT ( 20, 25 );// how long till we do this again.
}
class CMP5SDAmmoClip : public CBasePlayerAmmo
{
void Spawn( void )
{
Precache( );
SET_MODEL(ENT(pev), "models/w_9mmARclip.mdl");
CBasePlayerAmmo::Spawn( );
}
void Precache( void )
{
PRECACHE_MODEL ("models/w_9mmARclip.mdl");
PRECACHE_SOUND("items/9mmclip1.wav");
}
BOOL AddAmmo( CBaseEntity *pOther )
{
int bResult = (pOther->GiveAmmo( AMMO_MP5SDCLIP_GIVE, "9mm", _9MM_MAX_CARRY) != -1);
if (bResult)
{
EMIT_SOUND(ENT(pev), CHAN_ITEM, "items/9mmclip1.wav", 1, ATTN_NORM);
}
return bResult;
}
};
LINK_ENTITY_TO_CLASS( ammo_mp5clip, CMP5SDAmmoClip );
LINK_ENTITY_TO_CLASS( ammo_9mmAR, CMP5SDAmmoClip );
class CMP5SDChainammo : public CBasePlayerAmmo
{
void Spawn( void )
{
Precache( );
SET_MODEL(ENT(pev), "models/w_chainammo.mdl");
CBasePlayerAmmo::Spawn( );
}
void Precache( void )
{
PRECACHE_MODEL ("models/w_chainammo.mdl");
PRECACHE_SOUND("items/9mmclip1.wav");
}
BOOL AddAmmo( CBaseEntity *pOther )
{
int bResult = (pOther->GiveAmmo( AMMO_CHAINBOX_GIVE, "9mm", _9MM_MAX_CARRY) != -1);
if (bResult)
{
EMIT_SOUND(ENT(pev), CHAN_ITEM, "items/9mmclip1.wav", 1, ATTN_NORM);
}
return bResult;
}
};
LINK_ENTITY_TO_CLASS( ammo_9mmbox, CMP5SDChainammo );
class CMP5SDAmmoGrenade : public CBasePlayerAmmo
{
void Spawn( void )
{
Precache( );
SET_MODEL(ENT(pev), "models/w_ARgrenade.mdl");
CBasePlayerAmmo::Spawn( );
}
void Precache( void )
{
PRECACHE_MODEL ("models/w_ARgrenade.mdl");
PRECACHE_SOUND("items/9mmclip1.wav");
}
BOOL AddAmmo( CBaseEntity *pOther )
{
int bResult = (pOther->GiveAmmo( AMMO_M203BOX_GIVE, "ARgrenades", M203_GRENADE_MAX_CARRY ) != -1);
if (bResult)
{
EMIT_SOUND(ENT(pev), CHAN_ITEM, "items/9mmclip1.wav", 1, ATTN_NORM);
}
return bResult;
}
};
LINK_ENTITY_TO_CLASS( ammo_mp5grenades, CMP5AmmoGrenade );
LINK_ENTITY_TO_CLASS( ammo_ARgrenades, CMP5AmmoGrenade );
Hier die Fehlermeldungen:
E:\Programme\Mod-Making\Sdk\SourceCode\dlls\mp5sd.cpp(118) : error C2065: 'MP5SD_MAX_CLIP' : nichtdeklarierter Bezeichner
E:\Programme\Mod-Making\Sdk\SourceCode\dlls\mp5sd.cpp(142) : error C2065: 'MP5SD_DEPLOY' : nichtdeklarierter Bezeichner
E:\Programme\Mod-Making\Sdk\SourceCode\dlls\mp5sd.cpp(204) : error C2065: 'MP5SD_RELOAD' : nichtdeklarierter Bezeichner
E:\Programme\Mod-Making\Sdk\SourceCode\dlls\mp5sd.cpp(222) : error C2065: 'MP5SD_LONGIDLE' : nichtdeklarierter Bezeichner
E:\Programme\Mod-Making\Sdk\SourceCode\dlls\mp5sd.cpp(227) : error C2065: 'MP5SD_IDLE1' : nichtdeklarierter Bezeichner
Ich hab doch aus der MP5 MP5SD gemacht wo muss ich die deklarieren
Ich hab den SecondaryAttack nur so provisorisch weggemacht ich muss dann noch die grandate und das aus wegmachen
--
[ portfolio ] [ deviantart ] [ we can make you ]
|