Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
04.05.2001, 18:09
[AoS*]Horned_Reaper



HI, ich hab nen Fehler beim einbinden einer neuen Waffe, ich habe das Tut von DHCC genommen und eigentlich auch alle Fehlermeldungen rausbekommen. Jetzt ist nur noch eine beim Kompilieren da.

m4a1.cpp C:\Half-Life\Sdk\SourceCode\dlls\m4a1.cpp(60) : error C2084: function 'void __cdecl weapon_m4a1(struct entvars_s *)' already has a body
Error executing cl.exe.

Was muss ich machen um diese Fehlermeldung los zu werden???

--

zum Seitenanfang zum Seitenende Profil || Suche
001
08.05.2001, 21:59
Saugie



ha vielleicht bin ich odch nich soo doof genau das is bei mir nämlich auch :-(
okok bei mir wars
E:\Spiele\HL-SDK\SDK\SourceCode\dlls\m16.cpp(259) : error C2084: Funktion 'void __cdecl ammo_m16(struct entvars_s *)' hat bereits einen Funktionsrumpf
Fehler beim Ausführen von cl.exe.
;)

niemand hält sich an den namen m14 ;) bei mir wars aber aus versehen...

--

zum Seitenanfang zum Seitenende Profil || Suche
002
09.05.2001, 10:28
TheTinySteini



Hmm. Öh... Also ich _glaub_ das liegt daran, dass ihr zum Beispiel in der Waffenklassendefinition folgendes habt:
class CWaffenname :: CBasePlayerWeapon
{
// hier kommen jetzt die ganzen Deklarationen
void Funktionsname ( struct entvars_s *) { return; }
}

Und dann später nochmal so versucht, den Inhalt der Funktion zu ändern:
void Funktionsname ( struct entvars_s *)
{
return NeuerReturnCode;
}

Zumindest stell ich mir das unter der Fehlermeldung vor. Allerdings bin ich mir nicht ganz sicher, weil der Fehler wohl bei den Zuweisungen zum Entity-Namen entsteht. Hm, vielleicht könnt ihr hier mal die Zeile posten, die den Fehler verursacht (und 1-2 Zeilen davor und danach und vielleicht die Klassendeklaration)?

--

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

zum Seitenanfang zum Seitenende Profil || Suche
003
09.05.2001, 13:07
Saugie



LINK_ENTITY_TO_CLASS( ammo_m16clip, Cm16AmmoClip );
LINK_ENTITY_TO_CLASS( ammo_m16, Cm16AmmoClip );

die 2. zeile meint vc++ 6.0 ;)

ach mann sagt doch mal was :....(

--

zum Seitenanfang zum Seitenende Profil || Suche
004
12.05.2001, 00:27
Prophyle



Schau dir mal das define von LINK_ENTITY_TO_CLASS an...
dann wird dir auch tiny's post klar werden.

--

Prophyle, Coder beim SGT: http://mod.famkos.de.
Delphi, C++, Qt

zum Seitenanfang zum Seitenende Profil || Suche
005
12.05.2001, 00:38
Saugie



hmm wo isn das???
oh... gefunden ;)

ayayay... also kalr wird mir garnix :-(

--

zum Seitenanfang zum Seitenende Profil || Suche
006
12.05.2001, 12:34
TheTinySteini



[edit] Sorry, falsche Antwort... hatte gedacht, du müsstest ammo_m16clip in Anführungsstrichen schreiben. Aber das is nicht richtig... [/edit]

Kannst du mal den Code dadrüber posten? Also alles ab (vermutlich) class Cm16AmmoClip?

--

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

zum Seitenanfang zum Seitenende Profil || Suche
007
25.05.2001, 21:20
Saugie



den kompletter code rüberposten?
na jut...:

/***
*
* 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 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 );
int SecondaryAmmoIndex( void );
BOOL Deploy( void );
void Reload( void );
void WeaponIdle( void );
float m_flNextAnimTime;
int m_iShell;
private:
unsigned short m_usm16;
};

//allaalalalal==========°!!!!!!!!!!!!!!!!!!!!!!°===================
LINK_ENTITY_TO_CLASS( weapon_m16, Cm16 ); //!!!!!!!!!!!!!!!!!!!!!
LINK_ENTITY_TO_CLASS( ammo_m16, Cm16 ); //!!!!!!!!!!!!!!!!!!!!
//hier ich bin der fehler!!!=================================

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

void Cm16::Spawn( )
{
pev->classname = MAKE_STRING("weapon_m16"); // hack to allow for old names
Precache( );
SET_MODEL(ENT(pev), "models/w_m16.mdl");
m_iId = WEAPON_m16;

m_iDefaultAmmo = m16_DEFAULT_GIVE;

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

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");// brass shellTE_MODEL

PRECACHE_MODEL("models/grenade.mdl"); // grenade

PRECACHE_MODEL("models/w_m16clip.mdl");
PRECACHE_SOUND("items/9mmclip1.wav");

PRECACHE_SOUND("items/clipinsert1.wav");
PRECACHE_SOUND("items/cliprelease1.wav");
// PRECACHE_SOUND("items/guncock1.wav");

PRECACHE_SOUND ("weapons/m16.wav");// H to the K
PRECACHE_SOUND ("weapons/m16.wav");// H to the K
PRECACHE_SOUND ("weapons/m16.wav");// H to the K

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

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

m_usm16 = PRECACHE_EVENT( 1, "events/m16.sc" );
}

int Cm16::GetItemInfo(ItemInfo *p)
{
p->pszName = STRING(pev->classname);
p->pszAmmo1 = "9mm";
p->iMaxAmmo1 = _9MM_MAX_CARRY;
p->pszAmmo2 = "ARgrenades";
p->iMaxAmmo2 = M203_GRENADE_MAX_CARRY;
p->iMaxClip = m16_MAX_CLIP;
p->iSlot = 2;
p->iPosition = 3;
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_9mmAR.mdl", "models/p_9mmAR.mdl", m16_DEPLOY, "m16" );
}

void Cm16::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_usm16 );

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

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

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 );// how long till we do this again.
}

class Cm16AmmoClip : public CBasePlayerAmmo
{
void Spawn( void )
{
Precache( );
SET_MODEL(ENT(pev), "models/w_m16clip.mdl");
CBasePlayerAmmo::Spawn( );
}
void Precache( void )
{
PRECACHE_MODEL ("models/w_m16clip.mdl");
PRECACHE_SOUND("items/9mmclip1.wav");
}
BOOL AddAmmo( CBaseEntity *pOther )
{
int bResult = (pOther->GiveAmmo( AMMO_m16CLIP_GIVE,"m16", 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 );
LINK_ENTITY_TO_CLASS( ammo_m16, Cm16AmmoClip );

class Cm16Chainammo : 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_m16box, Cm16Chainammo );

class Cm16AmmoGrenade : public CBasePlayerAmmo
{
void Spawn( void )
{
Precache( );
SET_MODEL(ENT(pev), "models/w_ARgrenade.mdl");
CBasePlayerAmmo::Spawn( );
}
void Precache( void )
{
PRECACHE_SOUND("items/9mmclip1.wav");
}
BOOL AddAmmo( CBaseEntity *pOther )
{
if (bResult)
{
EMIT_SOUND(ENT(pev), CHAN_ITEM, "items/9mmclip1.wav", 1, ATTN_NORM);
}
return bResult;
}
};
LINK_ENTITY_TO_CLASS( ammo_m16grenades, Cm16AmmoGrenade );
LINK_ENTITY_TO_CLASS( ammo_ARgrenades, Cm16AmmoGrenade );

recht viel oder? ;)

--

zum Seitenanfang zum Seitenende Profil || Suche