Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
29.05.2001, 16:41
BloodySlash



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 ]

zum Seitenanfang zum Seitenende Profil || Suche
001
29.05.2001, 16:51
Sccar



moinsen

möööp, falsche frage, hier aber trotzdem die EINFACHE antwort. du mußt MP5SD_MAX_CLIP usw. in weapons.h definieren. überleg das nächte mal erstmal..... (oder ließ thewall tutorials)

sccar

--

...das is zwar der uebelst gehackteste kleine bastard, den ich je gesehen habe, aber dafuer sauschnell. {Tron}

zum Seitenanfang zum Seitenende Profil || Suche
002
29.05.2001, 21:00
BloodySlash



Einfach in der weapons.h
#define MP5SD_MAX_CLIP
oder wie dann funzt es oder wie ?!?!

--

[ portfolio ] [ deviantart ]
[ we can make you ]

zum Seitenanfang zum Seitenende Profil || Suche
003
29.05.2001, 21:32
Killing Me Softly



MP5SD_MAX_CLIP ist ne symbolische Konstante (was für ein Ding?) - symbolische Konstante d.h. ne Zahl, der man zum besseren Verständnis einen Namen gegeben hat.

Der Syntax lautet:
#define <NAME> <WERT>

oder in deinem Falle
#define MP5SD_MAX_CLIP 255 // oder 125 oder 99, wie es dir beliebt

und das Ganze muss/soll in die weapon.h (wie bereits von Sccar erwähnt).

Zweitens ist C/C++ absolut knickerig was Groß-/Kleinschreibung anbelangt (Tipp: MP5sd_LONGIDLE ist was anderes als MP5SD_LONGIDLE).

--

Der Horizont vieler Menschen ist ein Kreis mit Radius Null - und das nennen sie ihren Standpunkt.

zum Seitenanfang zum Seitenende Profil || Suche
004
30.05.2001, 12:27
Saugie



hast du visual c++`? also dann kannst ja einfach in weapons.h gehen und mp5 suchen wenn du sie verändert hast änderst du einfach den namen und den wert sonst kopierst du das und fügst noch ne reihe in der du die mp5 dann mp5sd oder so nennst ^^

edit: ^^
achso jez weiß ichs ohne den link entitie to class kram kann man seine waffen nicvh als entities in eine map tun sonder sie nur per impulse 101 hercheaten!!!

--

zum Seitenanfang zum Seitenende Profil || Suche
005
30.05.2001, 14:47
TheVoice



Ich gebe dir einen weiteren Tipp:
Lern C++ !

Dann kannst du solche Fehler in Zukunft alleine korrigieren.

--

Against TCPA | Resourcecode.de | Blender 3D | [ Darkzone | Pandorra | Alpine ]

zum Seitenanfang zum Seitenende Profil || Suche
006
30.05.2001, 16:10
BloodySlash



Ach leute schließt den Thread ich mach die Waffe nomma von vorn ;-)))

--

[ portfolio ] [ deviantart ]
[ we can make you ]

zum Seitenanfang zum Seitenende Profil || Suche