Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
08.08.2001, 20:04
[SCS]I_()RI)



Also, ich hab mal ne neue Waffe gemacht, bei der funktioniert auch alles, bloss die decals und der einschlage Sound funktioniert net, warum?
(ich habe auch alles in der Client.dll verändert)
Naja hier is die Waffe, weil ich glaube das liegt an der M16.cpp:
#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 m16_e
{
M16_LONGIDLE = 0,
M16_IDLE1,
M16_LAUNCH,
M16_RELOAD,
M16_DEPLOY,
M16_FIRE1,
M16_FIRE2,
M16_FIRE3,
};

class CM16 : 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 );
BOOL Deploy( void );
void Reload( void );
void WeaponIdle( void );
float m_flNextAnimTime;

int m_iShell;
int m_iShotCount;

};
LINK_ENTITY_TO_CLASS( weapon_m16, CM16 );

//=========================================================
//=========================================================

void CM16::Spawn( )
{
pev->classname = MAKE_STRING("weapon_m16");

Precache( );
SET_MODEL(ENT(pev), "models/w_m16.mdl");
m_iId = WEAPON_M16;

m_iDefaultAmmo = M16_DEFAULT_GIVE;

FallInit();

}

void CM16::Precache( void )
{
PRECACHE_MODEL("models/v_m16.mdl");
PRECACHE_MODEL("models/w_m16.mdl");
PRECACHE_MODEL("models/p_m16.mdl");

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

PRECACHE_SOUND("weapons/m161.wav");
PRECACHE_SOUND("items/cliprelease1.wav");
PRECACHE_SOUND("items/clipinsert1.wav");

}

int CM16::GetItemInfo(ItemInfo *p)
{
p->pszName = STRING(pev->classname);
p->pszAmmo1 = "5.56mm";
p->iMaxAmmo1 = M16_MAX_CARRY;
p->pszAmmo2 = NULL;
p->iMaxAmmo2 = -1;
p->iMaxClip = M16_MAX_CLIP;
p->iSlot = 2;
p->iPosition = 2;
p->iFlags = 0;
p->iId = m_iId = WEAPON_M16;
p->iWeight = M16_WEIGHT;

return 1;
}

int CM16::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 CM16::Deploy( )
{
return DefaultDeploy( "models/v_m16.mdl", "models/p_m16.mdl", M16_DEPLOY, "mp5" );
}

void CM16::PrimaryAttack()
{
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;
}

m_pPlayer->m_iWeaponVolume = NORMAL_GUN_VOLUME;
m_pPlayer->m_iWeaponFlash = NORMAL_GUN_FLASH;

m_iClip--;

m_pPlayer->pev->effects = (int)(m_pPlayer->pev->effects) | EF_MUZZLEFLASH;

if (1 || m_flNextAnimTime < gpGlobals->time)
{
SendWeaponAnim( M16_FIRE1 + RANDOM_LONG(0,2));
m_flNextAnimTime = gpGlobals->time + 0.2;
}

m_pPlayer->SetAnimation( PLAYER_ATTACK1 );

EMIT_SOUND_DYN(ENT(m_pPlayer->pev), CHAN_WEAPON, "weapons/m161.wav", 1, ATTN_NORM, 0, 94 + RANDOM_LONG(0,0xf));

UTIL_MakeVectors( m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle );

Vector vecShellVelocity = m_pPlayer->pev->velocity
+ gpGlobals->v_right * RANDOM_FLOAT(100,150)
+ gpGlobals->v_up * RANDOM_FLOAT(100,150)
+ gpGlobals->v_forward * 25;
EjectBrass ( pev->origin + m_pPlayer->pev->view_ofs
+ gpGlobals->v_up * -12
+ gpGlobals->v_forward * 28
+ gpGlobals->v_right * 6, vecShellVelocity, pev->angles.y, m_iShell, TE_BOUNCE_SHELL);

Vector vecSrc = m_pPlayer->GetGunPosition( );
Vector vecAiming = m_pPlayer->GetAutoaimVector( AUTOAIM_5DEGREES );

m_pPlayer->FireBullets( 1, vecSrc, vecAiming, VECTOR_CONE_6DEGREES, 8192, BULLET_PLAYER_MP5, 0 );

m_flNextPrimaryAttack = gpGlobals->time + 0.1;
m_flNextSecondaryAttack = gpGlobals->time + 0.1;

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

m_pPlayer->pev->punchangle.x = RANDOM_FLOAT( -2, 2 );
}
void CM16::SecondaryAttack( void )
{
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;
}

m_pPlayer->m_iWeaponVolume = NORMAL_GUN_VOLUME;
m_pPlayer->m_iWeaponFlash = NORMAL_GUN_FLASH;

m_iClip--;
m_iShotCount++;

m_pPlayer->pev->effects = (int)(m_pPlayer->pev->effects) | EF_MUZZLEFLASH;

if (1 || m_flNextAnimTime < gpGlobals->time)
{
SendWeaponAnim( M16_FIRE1 + RANDOM_LONG(0,2));
m_flNextAnimTime = gpGlobals->time + 0.2;
}

m_pPlayer->SetAnimation( PLAYER_ATTACK1 );

EMIT_SOUND_DYN(ENT(m_pPlayer->pev), CHAN_WEAPON, "weapons/m161.wav", 1, ATTN_NORM, 0, 94 + RANDOM_LONG(0,0xf));

UTIL_MakeVectors( m_pPlayer->pev->v_angle + m_pPlayer->pev->punchangle );

Vector vecShellVelocity = m_pPlayer->pev->velocity
+ gpGlobals->v_right * RANDOM_FLOAT(100,150)
+ gpGlobals->v_up * RANDOM_FLOAT(100,150)
+ gpGlobals->v_forward * 25;
EjectBrass ( pev->origin + m_pPlayer->pev->view_ofs
+ gpGlobals->v_up * -12
+ gpGlobals->v_forward * 28
+ gpGlobals->v_right * 6, vecShellVelocity, pev->angles.y, m_iShell, TE_BOUNCE_SHELL);

Vector vecSrc = m_pPlayer->GetGunPosition( );
Vector vecAiming = m_pPlayer->GetAutoaimVector( AUTOAIM_5DEGREES );

m_pPlayer->FireBullets( 1, vecSrc, vecAiming, VECTOR_CONE_3DEGREES, 8192, BULLET_PLAYER_MP5, 0 );

if ( m_iShotCount == 3 )
{
m_flNextSecondaryAttack = gpGlobals->time + .3;
m_iShotCount = 0;
}
else
{
m_flNextSecondaryAttack = gpGlobals->time + .09;
}

m_flNextPrimaryAttack = gpGlobals->time + 0.1;

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

m_pPlayer->pev->punchangle.x = RANDOM_FLOAT( -2, 2 );
}

void CM16::Reload( void )
{
DefaultReload( M16_MAX_CLIP, M16_RELOAD, 1.5 );
}

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

m_pPlayer->GetAutoaimVector( AUTOAIM_5DEGREES );

if (m_flTimeWeaponIdle > gpGlobals->time)
return;

int iAnim;
switch ( RANDOM_LONG( 0, 1 ) )
{
case 0:
iAnim = M16_LONGIDLE;
break;

default:
case 1:
iAnim = M16_IDLE1;
break;
}

SendWeaponAnim( iAnim );

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

class CM16AmmoClip : public CBasePlayerAmmo
{
void Spawn( void )
{
Precache( );
SET_MODEL(ENT(pev), "models/ammo/w_556mm.mdl");
CBasePlayerAmmo::Spawn( );
}
void Precache( void )
{
PRECACHE_MODEL ("models/ammo/w_556mm.mdl");
PRECACHE_SOUND("items/9mmclip1.wav");
}
BOOL AddAmmo( CBaseEntity *pOther )
{
int bResult = (pOther->GiveAmmo( AMMO_M16_GIVE, "5.56mm", M16_MAX_CARRY) != -1);
if (bResult)
{
EMIT_SOUND(ENT(pev), CHAN_ITEM, "items/9mmclip1.wav", 1, ATTN_NORM);
}
return bResult;
}
};
LINK_ENTITY_TO_CLASS( ammo_m16clip, CM16AmmoClip );

________________________________________________________
Is vieleicht ein bissel dureinander aber bitte helft mir, dass is nähmlich komisch!

--

Ich helfe gern! Aber helft mir bitte auch!

scs.4cool.de

zum Seitenanfang zum Seitenende Profil || Suche
001
08.08.2001, 20:12
TheTinySteini



Simple Sache: Du rufst ja auch keinen Einschlagsound oder Decalmaker auf!

Entweder du setzt in der FireBullets() nach:
case BULLET_PLAYER_MP5:
pEntity->TraceAttack(pevAttacker, gSkillData.plrDmgMP5, vecDir, &tr, DMG_BULLET);

noch dies hier rein:
TEXTURETYPE_PlaySound(&tr, vecSrc, vecEnd, iBulletType);
DecalGunshot( &tr, iBulletType );

... aber das is ein "UGLY HACK".

Besser is, du machst ein Event, dass du zum Server schickst und dann das ganze auffem Server ausführst (vergleiche die Original-MP5 vom SDK 2.x).

--

TheTinySteini
Coder Poke646
"Don't Panic" - Hitchhiker's Guide to the Galaxy

zum Seitenanfang zum Seitenende Profil || Suche
002
10.08.2001, 18:38
Executioner



die waffe funzt, ja?

*codekopier* haste dann den rest so gemacht ,wie in dem tut auf dhcc?

--

www.virus-mod.de.vu <- die neue Mod, zur Vorgeschichte von Half-Life (*lol* steht noch nich in der Story auf der Hp ... is eben noch nich formuliert)

zum Seitenanfang zum Seitenende Profil || Suche
003
10.08.2001, 20:04
[SCS]I_()RI)



ja aber die decals net!
Oder sag mal was du wo gemacht hast!

--

Ich helfe gern! Aber helft mir bitte auch!

scs.4cool.de


Dieser Beitrag wurde am 10.08.2001 um 20:09 von [SCS]I_()RI) bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
004
10.08.2001, 20:32
Executioner



äähmm also ich hab nur das gemacht 1zu1 was im tut steht, geht aba nich wirklich ....

-also im hud kann ich die nich anwählen
-äähmm der rest geht
-mir wurde gesagt, das die keinen schaden macht .... wenn die fehler kommen
- der rest geht ..... echt

--

www.virus-mod.de.vu <- die neue Mod, zur Vorgeschichte von Half-Life (*lol* steht noch nich in der Story auf der Hp ... is eben noch nich formuliert)

zum Seitenanfang zum Seitenende Profil || Suche
005
10.08.2001, 20:36
Executioner



also hier mal mein source ...:

-------------------------------------------------------
/***
*
* 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 m14_e
{
MP5_LONGIDLE = 0,
MP5_IDLE1,
MP5_LAUNCH,
MP5_RELOAD,
MP5_DEPLOY,
MP5_FIRE1,
MP5_FIRE2,
MP5_FIRE3,

};

class CM14 : 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 );
int SecondaryAmmoIndex( void );
BOOL Deploy( void );
void Reload( void );
void WeaponIdle( void );
float m_flNextAnimTime;
int m_iShell;
private:
unsigned short m_usM14;
};
LINK_ENTITY_TO_CLASS( weapon_m14, CM14 );

//=========================================================
//=========================================================
int CM14::SecondaryAmmoIndex( void )
{
return m_iSecondaryAmmoType;
}

void CM14::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_M14;

m_iDefaultAmmo = M14_DEFAULT_GIVE;

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

void CM14::Precache( void )
{
PRECACHE_MODEL("models/v_9mmAR.mdl");
PRECACHE_MODEL("models/w_9mmAR.mdl");
PRECACHE_MODEL("models/p_9mmAR.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/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_usM14 = PRECACHE_EVENT( 1, "events/mp5.sc" );
}

int CM14::GetItemInfo(ItemInfo *p)
{
p->pszName = STRING(pev->classname);
p->pszAmmo1 = "m14";
p->iMaxAmmo1 = M14_MAX_CARRY;
p->pszAmmo2 = NULL;
p->iMaxAmmo2 = -1;
p->iMaxClip = M14_MAX_CLIP;
p->iSlot = 0;
p->iPosition = 1;
p->iFlags = 0;
p->iId = m_iId = WEAPON_M14;
p->iWeight = M14_WEIGHT;

return 1;
}

int CM14::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 CM14::Deploy( )
{
return DefaultDeploy( "models/v_9mmAR.mdl", "models/p_9mmAR.mdl", MP5_DEPLOY, "m14" );
}

void CM14::PrimaryAttack()
{
// don't fire underwater
if (m_pPlayer->pev->waterlevel == 3) //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_usM14 );

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_M14, 2 );
}
else
{
// single player spread
m_pPlayer->FireBullets( 1, vecSrc, vecAiming, VECTOR_CONE_3DEGREES, 8192, BULLET_PLAYER_M14, 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.3; //0.1
if (m_flNextPrimaryAttack < gpGlobals->time)
m_flNextPrimaryAttack = gpGlobals->time + 0.3; //0.1

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

void CM14::Reload( void )
{
DefaultReload( M14_MAX_CLIP, MP5_RELOAD, 1.5 );
}

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

m_pPlayer->GetAutoaimVector( AUTOAIM_5DEGREES );

if (m_flTimeWeaponIdle > gpGlobals->time)
return;

int iAnim;
switch ( RANDOM_LONG( 0, 1 ) )
{
case 0:
iAnim = MP5_LONGIDLE;
break;

default:
case 1:
iAnim = MP5_IDLE1;
break;
}

SendWeaponAnim( iAnim );

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

class CM14AmmoClip : 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_M14CLIP_GIVE, "m14", M14_MAX_CARRY) != -1);
if (bResult)
{
EMIT_SOUND(ENT(pev), CHAN_ITEM, "items/9mmclip1.wav", 1, ATTN_NORM);
}
return bResult;
}
};
LINK_ENTITY_TO_CLASS( ammo_m14clip, CM14AmmoClip );
LINK_ENTITY_TO_CLASS( ammo_m14, CM14AmmoClip );

-----------------------------------------------

so kannst ja mal vergleichen

ps: mir wurde auch gesagt, das es mit der mp5 imma probs gibt =)

--

www.virus-mod.de.vu <- die neue Mod, zur Vorgeschichte von Half-Life (*lol* steht noch nich in der Story auf der Hp ... is eben noch nich formuliert)

zum Seitenanfang zum Seitenende Profil || Suche
006
10.08.2001, 20:47
The_Overmind



zum Hud anwählen:
hast im sprites Ordner auch ne weapon_<name>.txt mit den Sprites erstellt ?
Deine Slots in deinem Source unterscheiden sich.
Einmal in Class "int iItemSlot( void ) { return 3; }"
und einmal in ger GetItemInfo "p->iSlot = 0;"

könnte der Fehler sein

--

zum Seitenanfang zum Seitenende Profil || Suche
007
11.08.2001, 12:25
Executioner



ohhhh jo die .txt hab ich

äähmm das is der fehler - geil thx *test*

hehe wurde nich im tut gesagt, .... =)

äähmm da muss ich return 0 schreiben, oder wie?

--

www.virus-mod.de.vu <- die neue Mod, zur Vorgeschichte von Half-Life (*lol* steht noch nich in der Story auf der Hp ... is eben noch nich formuliert)

zum Seitenanfang zum Seitenende Profil || Suche
008
11.08.2001, 13:11
TheTinySteini



Jo, return 0; oder halt p->iSlot = 3; *g*

--

TheTinySteini
Coder Poke646
"Don't Panic" - Hitchhiker's Guide to the Galaxy

zum Seitenanfang zum Seitenende Profil || Suche