Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
15.02.2002, 21:54
Exec



moin moin

also ich hab mal nen sporelauncher gemacht (gefunden)! so der geht 1a nur man kann den scheisser nich im hud auswählen .... weis jemand wo der fehler liegt?!

hier der code:

#if !defined( OEM_BUILD ) && !defined( HLDEMO_BUILD )

#include "extdll.h"
#include "util.h"
#include "cbase.h"
#include "monsters.h"
#include "weapons.h"
#include "nodes.h"
#include "player.h"
#include "decals.h"
#include "gamerules.h"

class CAlienSpit : public CBaseEntity
{
void Spawn( void );
void Precache( void );
int Classify ( void );
void EXPORT BoltTouch( CBaseEntity *pOther );
int expl;
bool explodeoncontact;
void EXPORT Explode(void);
edict_t *ownersave;
bool ownersaved;
//CBeam *Trail;
int TakeDamage( entvars_t *pevInflictor, entvars_t *pevAttacker, float flDamage, int bitsDamageType );
public:
EHANDLE m_hOwner;
static CAlienSpit *Fire( bool explodeoncontact );
void init(void);
};
LINK_ENTITY_TO_CLASS( alien_spit, CAlienSpit );
int CAlienSpit::TakeDamage( entvars_t *pevInflictor, entvars_t *pevAttacker, float flDamage, int bitsDamageType ){
pev->takedamage = DAMAGE_NO;
if(!ownersaved) ownersave=pev->owner;
Explode();
return false;
}
CAlienSpit *CAlienSpit::Fire( bool explode )
{
// Create a new entity with CAlienSpit private data
CAlienSpit *pBolt = GetClassPtr( (CAlienSpit *)NULL );
pBolt->pev->classname = MAKE_STRING("alien_spit");
pBolt->Spawn();
pBolt->explodeoncontact=explode;
pBolt->ownersaved=false;
return pBolt;
}

void CAlienSpit::Spawn( )
{
Precache( );
pev->movetype=MOVETYPE_TOSS;
pev->solid = SOLID_BBOX;
//pev->solid = SOLID_NOT;
pev->gravity = 0.3;
SET_MODEL(ENT(pev), "models/spore.mdl");
// pev->rendermode = kRenderGlow;
// pev->renderfx = kRenderFxNoDissipation;
pev->renderamt = 255;
UTIL_SetOrigin( pev, pev->origin );
UTIL_SetSize( pev, Vector( -4, -4, -4 ), Vector( 4, 4, 4 ) );
SetTouch( BoltTouch );
if ( pev->owner )
ownersave=pev->owner;
}
void CAlienSpit::init( ){
ownersave=pev->owner;
ownersaved=true;
}

void CAlienSpit::Precache( )
{
PRECACHE_SOUND("weapons/xbow_hitbod1.wav");
PRECACHE_SOUND("weapons/xbow_hitbod2.wav");
PRECACHE_SOUND("weapons/xbow_fly1.wav");
PRECACHE_SOUND("bullchicken/bc_spithit1.wav");
PRECACHE_SOUND("bullchicken/bc_spithit2.wav");
PRECACHE_MODEL( "models/spore.mdl" );
expl=PRECACHE_MODEL( "sprites/sporeexp.spr" );
}

int CAlienSpit :: Classify ( void )
{
return CLASS_NONE;
}

void CAlienSpit::BoltTouch( CBaseEntity *pOther )
{
if(explodeoncontact||(pOther->IsPlayer())) {
if(!ownersaved) ownersave=pev->owner;
Explode();
}
else{
if(ownersaved) pev->owner=NULL;
pev->velocity=Vector(0,0,0);
SetThink(Explode);
pev->nextthink=gpGlobals->time+10;
return;
}
}
void CAlienSpit::Explode( void){
SetTouch( NULL );
SetThink( NULL );
EMIT_SOUND(ENT(pev), CHAN_WEAPON, "bullchicken/bc_spithit2.wav", RANDOM_FLOAT(0.95, 1.0), ATTN_NORM);
entvars_t *pevOwner=VARS(ownersave);
pev->owner = NULL;
::RadiusDamage( pev->origin, pev,pevOwner,120, 120, CLASS_NONE, DMG_ENERGYBEAM | DMG_ACID | DMG_ALWAYSGIB );
pev->owner=ownersave;
Vector vecSpot = pev->origin + Vector ( 0 , 0 , 8 );
TraceResult tr;
UTIL_TraceLine ( vecSpot, vecSpot + pev->velocity*40, ignore_monsters, ENT(pev), & tr);
UTIL_DecalTrace(&tr , DECAL_MOMMASPLAT );
MESSAGE_BEGIN( MSG_PVS, SVC_TEMPENTITY, pev->origin );
WRITE_BYTE( TE_EXPLOSION );
WRITE_COORD( pev->origin.x );
WRITE_COORD( pev->origin.y );
WRITE_COORD( pev->origin.z );
WRITE_SHORT( expl );
WRITE_BYTE( 30 * 0.80 ); // scale * 10
WRITE_BYTE( 12 ); // framerate
WRITE_BYTE(TE_EXPLFLAG_NOSOUND);
MESSAGE_END();
SetThink( SUB_Remove );
Killed(pev,GIB_NEVER);
}

enum slauncher_e {

SGUN_IDLE1 = 0,//2000
SGUN_FIDGET ,//4000
SGUN_RELOAD1,//666reach
SGUN_RELOAD2,//1000feed
SGUN_RELOAD3,//833aim
SGUN_FIRE,//500
SGUN_HOLSTER,//1000
SGUN_DRAW,//1000
SGUN_IDLE2
};

class CAlienCannon : public CBasePlayerWeapon
{
public:
void Spawn( void );
void Precache( void );
int iItemSlot( void ) { return 1; }
int GetItemInfo(ItemInfo *p);
int AddToPlayer( CBasePlayer *pPlayer );

void PrimaryAttack( void );
void SecondaryAttack( void );
BOOL Deploy( void );
BOOL IsUseable( void );
void Holster( void );
void Reload( void );
void WeaponIdle( void );
float m_flNextAnimTime;

float m_flRechargeTime;
int m_fInReload;
int m_iFirePhase;// don't save me.
};
LINK_ENTITY_TO_CLASS( weapon_aliencannon, CAlienCannon );

BOOL CAlienCannon::IsUseable( void )
{
return TRUE;
}

void CAlienCannon::Spawn( )
{
Precache( );
m_iId = WEAPON_ALIENCANNON;
SET_MODEL(ENT(pev), "models/w_sgun.mdl");
m_iDefaultAmmo = ALIENCANNON_DEFAULT_GIVE;
m_iFirePhase = 0;
m_fInReload=0;
FallInit();// get ready to fall down.
}

void CAlienCannon::Precache( void )
{
PRECACHE_MODEL("models/v_sgun.mdl");
PRECACHE_MODEL("models/w_sgun.mdl");
PRECACHE_MODEL("models/p_sgun.mdl");
PRECACHE_SOUND("weapons/splauncher_pet.wav");
PRECACHE_SOUND("bullchicken/bc_attack2.wav");
PRECACHE_SOUND("bullchicken/bc_attack3.wav");
PRECACHE_SOUND("weapons/spore_empty.wav");

UTIL_PrecacheOther("alien_spit");
}

int CAlienCannon::AddToPlayer( CBasePlayer *pPlayer )
{
if ( CBasePlayerWeapon::AddToPlayer( pPlayer ) )
{
if ( g_pGameRules->IsMultiplayer() )
{
// in multiplayer, all hivehands come full.
pPlayer->m_rgAmmo[ PrimaryAmmoIndex() ] = 8;
}

MESSAGE_BEGIN( MSG_ONE, gmsgWeapPickup, NULL, pPlayer->pev );
WRITE_BYTE( m_iId );
MESSAGE_END();
return TRUE;
}
return FALSE;
}

int CAlienCannon::GetItemInfo(ItemInfo *p)
{
p->pszName = STRING(pev->classname);
p->pszAmmo1 = "spores";
p->iMaxAmmo1 = ALIENCANNON_MAX_CARRY;
p->pszAmmo2 = NULL;
p->iMaxAmmo2 = -1;
p->iMaxClip = 4;
p->iSlot = 0;
p->iPosition = 0;
p->iId = m_iId = WEAPON_ALIENCANNON;
//p->iFlags = ITEM_FLAG_NOAUTOSWITCHEMPTY | ITEM_FLAG_NOAUTORELOAD;
p->iFlags=ITEM_FLAG_NOAUTORELOAD;
p->iWeight = ALIENCANNON_WEIGHT;

return 1;
}

BOOL CAlienCannon::Deploy( )
{
m_fInReload=0;
return DefaultDeploy( "models/v_sgun.mdl", "models/p_sgun.mdl", SGUN_DRAW, "rpg" );
}

void CAlienCannon::Holster( )
{

m_fInReload=0;
m_pPlayer->m_flNextAttack = gpGlobals->time + 0.5;
// m_flTimeWeaponIdle = gpGlobals->time + RANDOM_FLOAT ( 10, 15 );
SendWeaponAnim( SGUN_HOLSTER );

}

void CAlienCannon::PrimaryAttack()
{
if (m_iClip== 0) return;
m_fInReload = 0;
m_iClip--;
m_pPlayer->m_iWeaponVolume = LOUD_GUN_VOLUME;
m_pPlayer->m_iWeaponFlash = DIM_GUN_FLASH;

SendWeaponAnim( SGUN_FIRE );

// player "shoot" animation
m_pPlayer->SetAnimation( PLAYER_ATTACK1 );

m_flNextPrimaryAttack = gpGlobals->time + 1;

if(RANDOM_LONG(0,1))
EMIT_SOUND(ENT(m_pPlayer->pev), CHAN_WEAPON, "bullchicken/bc_attack2.wav", 1.0, ATTN_NORM);
else
EMIT_SOUND(ENT(m_pPlayer->pev), CHAN_WEAPON, "bullchicken/bc_attack3.wav", 1.0, ATTN_NORM);

CAlienSpit *pBFG = CAlienSpit::Fire(true);
Vector vecSrc = m_pPlayer->GetGunPosition( );
pBFG->pev->origin = vecSrc;
pBFG->pev->owner = m_pPlayer->edict();
UTIL_MakeVectors( m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle );
pBFG->pev->velocity = gpGlobals->v_forward * 700;
pBFG->pev->angles = UTIL_VecToAngles( pBFG->pev->velocity );
m_pPlayer->m_flNextAttack = gpGlobals->time + 1;
m_flTimeWeaponIdle = gpGlobals->time + RANDOM_FLOAT ( 10, 15 );
if(m_iClip==0) Reload();
}
void CAlienCannon::SecondaryAttack(void){
if (m_iClip== 0) return;
m_fInReload = 0;
m_iClip--;
m_pPlayer->m_iWeaponVolume = LOUD_GUN_VOLUME;
m_pPlayer->m_iWeaponFlash = DIM_GUN_FLASH;

SendWeaponAnim( SGUN_FIRE );

// player "shoot" animation
m_pPlayer->SetAnimation( PLAYER_ATTACK1 );

m_flNextPrimaryAttack = gpGlobals->time + 1;

if(RANDOM_LONG(0,1))
EMIT_SOUND(ENT(m_pPlayer->pev), CHAN_WEAPON, "bullchicken/bc_attack2.wav", 1.0, ATTN_NORM);
else
EMIT_SOUND(ENT(m_pPlayer->pev), CHAN_WEAPON, "bullchicken/bc_attack3.wav", 1.0, ATTN_NORM);

CAlienSpit *pBFG = CAlienSpit::Fire(false);
Vector vecSrc = m_pPlayer->GetGunPosition( );
pBFG->pev->origin = vecSrc;
pBFG->pev->owner= m_pPlayer->edict();
pBFG->init();
UTIL_MakeVectors( m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle );
pBFG->pev->velocity = gpGlobals->v_forward * 700;
pBFG->pev->angles = UTIL_VecToAngles( pBFG->pev->velocity );
pBFG->pev->takedamage = DAMAGE_YES;
m_pPlayer->m_flNextAttack = gpGlobals->time + 0.6;
m_flTimeWeaponIdle = gpGlobals->time + RANDOM_FLOAT ( 10, 15 );
if(m_iClip==0) Reload();
}

void CAlienCannon::Reload( void )
{
if(m_iClip==4) return;
if(m_fInReload!=0) return;
if (m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] ==0){
if(m_iClip==0) RetireWeapon();
return;
}

m_fInReload=1;
SendWeaponAnim( SGUN_RELOAD1 );
m_flTimeWeaponIdle = gpGlobals->time + 0.666;
}

void CAlienCannon::WeaponIdle( void )
{
if (m_flTimeWeaponIdle > gpGlobals->time) return;
if(m_fInReload==1){
if(m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType]==0)
{m_fInReload=0;
return;}
m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] --;
m_iClip++;
if(m_iClip>=4) m_fInReload=2;
else m_fInReload=1;
m_flTimeWeaponIdle = gpGlobals->time + 1;
m_flNextPrimaryAttack = gpGlobals->time + 1;
SendWeaponAnim(SGUN_RELOAD2);
return;
}
else if(m_fInReload==2){
SendWeaponAnim( SGUN_RELOAD3 );
m_flTimeWeaponIdle = gpGlobals->time + 0.833;
m_fInReload=false;
m_fInReload=0;
return;
}
else if (m_fInReload==3){
m_fInReload=1;
SendWeaponAnim( SGUN_RELOAD1 );
m_flTimeWeaponIdle = gpGlobals->time + 0.666;
return;
}

int iAnim;
float flRand = RANDOM_FLOAT(0, 1);
if (flRand <= 0.75)
{
iAnim = SGUN_IDLE1;
m_flTimeWeaponIdle = gpGlobals->time + RANDOM_FLOAT ( 10, 15 );
}
else if (flRand<=0.9)
{
iAnim = SGUN_IDLE2;
m_flTimeWeaponIdle = gpGlobals->time + RANDOM_FLOAT ( 10, 15 );
}
else
{
iAnim = SGUN_FIDGET;
EMIT_SOUND( ENT(pev), CHAN_VOICE,"weapons/splauncher_pet.wav", 1.0, 0.5 );
m_flTimeWeaponIdle = gpGlobals->time + 4;
}
SendWeaponAnim( iAnim );
}

#endif

thx

--

"selbermachen rockt am meisten :D" - -LeJean-

zum Seitenanfang zum Seitenende Profil || Suche
001
15.02.2002, 21:56
Retro



Omg, ist es Mode geworden lieber den gesamten Code zu Posten anstatt C++ zu lernen oder es selbst zu überarbeiten?! :\

--

shielding people from their own stupidity is an evolutionary step backwards anyway.

/* God is dead!............Nietzsche */
/* Nietzsche is dead!......God */
/* Nietzsche is God!.......The Dead */

zum Seitenanfang zum Seitenende Profil || Suche
002
15.02.2002, 22:05
Exec



hhmmmm, an was liegt es denn? kannst ja wenigstens mal nen hint geben ...

--

"selbermachen rockt am meisten :D" - -LeJean-

zum Seitenanfang zum Seitenende Profil || Suche
003
15.02.2002, 22:08
Retro



Nein, da es mir bestimmt wie vielen anderen geht: Ich habe kein bock mir den ganzen Krams anzugucken. Kannst ja vielleicht mal relevante stellen rauskopieren...!

--

shielding people from their own stupidity is an evolutionary step backwards anyway.

/* God is dead!............Nietzsche */
/* Nietzsche is dead!......God */
/* Nietzsche is God!.......The Dead */

zum Seitenanfang zum Seitenende Profil || Suche
004
15.02.2002, 22:15
BloodyHarry



Wenn du es nicht auswählen kannst ist es meist ein recht einfacher Fehler:
Der schaden und so sind nicht in game.cpp geschrieben, ka wie ich es ausdrücken sollt *gg*
such einfach in allen code dateien nach mp5 oder shotgun, oder irgend einer anderen waffe, und überall wo du was findest, baust du deine drunter ;)
sollte helfen!

--

--< BloodyHarry >--

zum Seitenanfang zum Seitenende Profil || Suche
005
15.02.2002, 22:26
Exec



k, ich probiers mal aus, aba der schaden geht eigendlich .... und ne andere waffe geht auch 1a, obwohl ich da nich alles gemacht hab wie bei mp5 oder so ...
aba ich teste!

--

"selbermachen rockt am meisten :D" - -LeJean-

zum Seitenanfang zum Seitenende Profil || Suche
006
15.02.2002, 22:45
RirA



@harry: so ein schmarrn
@exe: forumsuche

--

zum Seitenanfang zum Seitenende Profil || Suche
007
15.02.2002, 23:01
Mexil



1. Kontrollieren ob der Slot und Port und ID noch noch nicht von einer anderen Waffen belegt ist!

2. (ich glaub das hier ist es eher) UTIL_PRECACHEOTHERWEAPON(weapon_xxx);

--


Move In!

VISIT US Move In!

zum Seitenanfang zum Seitenende Profil || Suche
008
15.02.2002, 23:43
Exec



hmm beides nich - leider!

ich hab alle standard hl weapons entfernt, so und da hab ich die waffe auf 0/0 (slot/pos) gelegt ... auch wenn ich sie über die andere setzte gehts nich, ich hab ka, warum ...

@mexil: 2. -> nope, die waffe geht ja!

--

"selbermachen rockt am meisten :D" - -LeJean-

zum Seitenanfang zum Seitenende Profil || Suche
009
15.02.2002, 23:56
RirA



hast du ne textdatei mit "weapon_xxx":
8
weapon 320 320hud1 80 160 80 20
weapon_s 320 320hud1 80 180 80 20
ammo 320 320hud2 16 36 18 18
crosshair 320 crosshairs 72 24 24 24
weapon 640 640hud2 0 180 170 45
weapon_s 640 640hud5 0 180 170 45
ammo 640 640hud7 24 96 24 24
crosshair 640 crosshairs 72 24 24 24
?

--

zum Seitenanfang zum Seitenende Profil || Suche
010
15.02.2002, 23:59
Exec



jop, is alles da! deshalb isses ja halt so komisch .... und wenn man keine .txt hätte, dann hätte man nen verkrüppeltes sprite und es würde trotzdem gehn *g*

och man, nur mir passiert sowas ....

--

"selbermachen rockt am meisten :D" - -LeJean-

zum Seitenanfang zum Seitenende Profil || Suche
011
16.02.2002, 23:55
Exec



p->iFlags = ITEM_FLAG_NOAUTOSWITCHEMPTY | ITEM_FLAG_NOAUTORELOAD;

das ich das wegkommentiert hab, daran lags zu 99%

--

"selbermachen rockt am meisten :D" - -LeJean-

zum Seitenanfang zum Seitenende Profil || Suche