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



Moin,

Hab mal ne Waffe gecodet .. sie liegt auch im Level rum ... nur wenn ich sie einsammle verschwindet sie zwar vom Boden doch habe ich sie weder in der ahnd noch kann ich sie auswählen!!

Hier der COde!!

#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 mp5k_e
{
MP5K_IDLE1 = 0,
MP5K_RELOAD,
MP5K_DEPLOY,
MP5K_FIRE1,
};

class CMP5K : 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 );
BOOL Deploy( void );
void Reload( void );
void WeaponIdle( void );
float m_flNextAnimTime;
int m_iShell;
private:
unsigned short m_usMP5k;
};

LINK_ENTITY_TO_CLASS( weapon_mp5k, CMP5K );
//=========================================================
//=========================================================

void CMP5K::Spawn( )
{
PRECACHE_MODEL("models/w_mp5k.mdl");
SET_MODEL(ENT(pev), "models/w_mp5k.mdl");
m_iId = WEAPON_MP5K;

m_iDefaultAmmo = MP5K_DEFAULT_GIVE;

FallInit();// get ready to fall down.
}

void CMP5K::Precache( void )
{
PRECACHE_MODEL("models/v_mp5k.mdl");
PRECACHE_MODEL("models/w_mp5k.mdl");
PRECACHE_MODEL("models/p_mp5k.mdl");

m_iShell = PRECACHE_MODEL ("models/shell.mdl");// brass shellTE_MODEL

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/hks1.wav");// H to the K
PRECACHE_SOUND ("weapons/hks2.wav");// H to the K
PRECACHE_SOUND ("weapons/hks3.wav");// H to the K

PRECACHE_SOUND( "weapons/glauncher.wav" );
PRECACHE_SOUND( "weapons/glauncher2.wav" );

PRECACHE_SOUND ("weapons/357_cock1.wav");

m_usMP5k = PRECACHE_EVENT( 1, "events/mp5k.sc" );
}

int CMP5K::GetItemInfo(ItemInfo *p)
{
p->pszName = STRING(pev->classname);
p->pszAmmo1 = "9mm";
p->iMaxAmmo1 = _MP5K_MAX_CARRY;
p->iMaxClip = MP5_MAX_CLIP;
p->iSlot = 2;
p->iPosition = 2;
p->iFlags = 0;
p->iId = m_iId = WEAPON_MP5K;
p->iWeight = MP5K_WEIGHT;

return 1;
}

BOOL CMP5K::Deploy( )
{
return DefaultDeploy( "models/v_mp5k.mdl", "models/p_mp5k.mdl", MP5K_DEPLOY, "mp5k" );
}

int CMP5K::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;
}

void CMP5K::PrimaryAttack()
{
// don't fire underwater
if (m_pPlayer->pev->waterlevel == 3)
{
PlayEmptySound( );
m_flNextPrimaryAttack = gpGlobals->time + 0.15;
return;
}

if (m_iClip <= 0)
{
PlayEmptySound();
m_flNextPrimaryAttack = gpGlobals->time + 0.15;
return;
}

PLAYBACK_EVENT( 0, m_pPlayer->edict(), m_usMP5k );

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.1;
if (m_flNextPrimaryAttack < gpGlobals->time)
m_flNextPrimaryAttack = gpGlobals->time + 0.1;

m_flTimeWeaponIdle = gpGlobals->time + RANDOM_FLOAT ( 10, 15 );
}

void CMP5K::Reload( void )
{
DefaultReload( MP5K_MAX_CLIP, MP5K_RELOAD, 3 );
}

void CMP5K::WeaponIdle( void )
{
ResetEmptySound( );

m_pPlayer->GetAutoaimVector( AUTOAIM_5DEGREES );

if (m_flTimeWeaponIdle > gpGlobals->time)
return;

int iAnim;
iAnim = MP5K_IDLE1;

SendWeaponAnim( iAnim );

m_flTimeWeaponIdle = gpGlobals->time + RANDOM_FLOAT ( 10, 15 );// how long till we do this again.
}

class CMP5KAmmoClip : 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_MP5CLIP_GIVE, "9mm parabellum", _MP5K_MAX_CARRY) != -1);
if (bResult)
{
EMIT_SOUND(ENT(pev), CHAN_ITEM, "items/9mmclip1.wav", 1, ATTN_NORM);
}
return bResult;
}
};
LINK_ENTITY_TO_CLASS( ammo_mp5kclip, CMP5KAmmoClip );

Wissr ihr was falsch ist? Ich suche schon seit Tagen!!! Kein Compilerfehler!!!

--

zum Seitenanfang zum Seitenende Profil || Suche
001
24.12.2001, 01:49
CoderNubi



das hängt sicher an der void MP5K::Spawn

Spawn = aufnehmen

--

zum Seitenanfang zum Seitenende Profil || Suche
002
24.12.2001, 02:40
[PE]Spinator



gib mal:
weapon_mp5k

ein, in der console nachdem du die waffe aufgenommen hast. Wahrscheinlich hast du für p->iPosition eine bereits besetzte position gewählt...

@CoderNubi: Spawn heisst hervorbringen, oder so... AddToPlayer( ... ) wär meiner Meinung nach viel naheliegender, für deine Art der Argumentation :P

--

This post was written using Opera 7.0 (http://www.opera.com)

zum Seitenanfang zum Seitenende Profil || Suche
003
24.12.2001, 09:35
bbjoker



Moin,

Also das mit dem Waffe per "Cheat" zu bekommen habe ich auch ausprobiert ... klapt auch net!!
Die p->iPosition ist 100%tig richtig!! HAb ich mehrfach überprüft!

Die Spawn funktion funzt eigndlich ja auch ... liegt ja auf dem Boden die Waffe!

Die Add to Player funktion hab ich von der MP5 ... müsste also auch stimmen oda?
CU!

--

zum Seitenanfang zum Seitenende Profil || Suche
004
24.12.2001, 09:55
[KCC]Lord_Bellheim



such mal nach z.b. rpg überall wo die rpg verlinkt ist schreibst du deine Waffe auch hin so hab ichs geschafft

--

Cat-vs-Dog-mod <--- need memberz ICQ : 127444238!

zum Seitenanfang zum Seitenende Profil || Suche
005
24.12.2001, 09:57
bbjoker



Moin,

... ich habe die schon richtig in die weapons.h eingebunden auch in alle anderen Header und Quellcodedateien wo sie hin muss ... doch irgendwie funzt die nicht ...

Kann sich keiner mal den CODE oben durchlesen und versuchen diesen kleinen Fehler zu finden?

Thx!

CU!

--

zum Seitenanfang zum Seitenende Profil || Suche
006
24.12.2001, 11:04
hausi



Schon mal mit debuggen versucht?
Da du ja nicht aus MSVC debuggen kannst, ohne dass das Spiel abstürzt (bei mir auf jeden Fall nicht), musst du einfach wichtige Werte und Positionen mit einem
Quellcode:ALERT( at_console, "CMP5K::Spawn(void);\n" );
-oder-
ALERT( at_console, "CMP5K::AddToPlayer(...);\n" );

kennzeichnen...
Dann siehst du mal, wohin der Code kommt und wo der Fehler sein muss...
[Edit]
Ausserdem gehören ALLE Precache-Funktionen in die CMP5K::Precache und dann unter CMP5K::Spawn ein Precache(); rein.

--


Dieser Beitrag wurde am 24.12.2001 um 11:06 von Superhausi bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
007
24.12.2001, 11:24
bbjoker



Moin,

ja der Fehler ist mir eben auch aufgefallen ... danke!

Ich versuchs mal mit dem Alert ...

CU!

--

zum Seitenanfang zum Seitenende Profil || Suche