Наше комьюнити:   OpenGL Shader Lab  •  Half-Life FX  •  Форум  
HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > столкнулся с проблемой в создании оружия
  Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
valera0141
Частый гость

Дата регистрации: May 2013
Проживает: (void)
Сообщений: 83
Возраст: 21

Рейтинг



Half-Life столкнулся с проблемой в создании оружия

при компиляции client.dll выдаёт ошибку:

Compiling...
example.cpp
.\example.cpp(29) : error C2065: 'CEXAMPLE' : undeclared identifier
.\example.cpp(29) : error C2059: syntax error : ')'
.\example.cpp(47) : error C2509: 'Spawn' : member function not declared in 'CEXAMPLE'
.\example.cpp(58) : error C2509: 'Precache' : member function not declared in 'CEXAMPLE'
.\example.cpp(73) : error C2509: 'GetItemInfo' : member function not declared in 'CEXAMPLE'
.\example.cpp(90) : error C2509: 'Deploy' : member function not declared in 'CEXAMPLE'
.\example.cpp(95) : error C2509: 'Holster' : member function not declared in 'CEXAMPLE'
.\example.cpp(147) : error C2509: 'PrimaryAttack' : member function not declared in 'CEXAMPLE'
.\example.cpp(157) : error C2509: 'Smack' : member function not declared in 'CEXAMPLE'
.\example.cpp(163) : error C2509: 'SwingAgain' : member function not declared in 'CEXAMPLE'
.\example.cpp(169) : error C2509: 'Swing' : member function not declared in 'CEXAMPLE'
hl_events.cpp
.\hl\hl_events.cpp(81) : error C2065: 'EV_ExampleFire' : undeclared identifier
Generating Code...

Добавлено 05-08-2013 в 17:48:

а при компиляции hl.dll выдаёт :

Compiling...
cl : Command line warning D9035 : option 'Fr' has been deprecated and will be removed in a future release
cl : Command line warning D9036 : use 'FR' instead of 'Fr'
example.cpp
zombie.cpp
xen.cpp
world.cpp
weapons.cpp
voice_gamemgr.cpp
util.cpp
turret.cpp
tripmine.cpp
triggers.cpp
tentacle.cpp
tempmonster.cpp
teamplay_gamerules.cpp
talkmonster.cpp
subs.cpp
squeakgrenade.cpp
squadmonster.cpp
spectator.cpp
soundent.cpp
sound.cpp
Generating Code...
Compiling...
skill.cpp
singleplay_gamerules.cpp
shotgun.cpp
scripted.cpp
scientist.cpp
schedule.cpp
satchel.cpp
rpg.cpp
roach.cpp
rat.cpp
python.cpp
player.cpp
plats.cpp
plane.cpp
pathcorner.cpp
osprey.cpp
nodes.cpp
nihilanth.cpp
multiplay_gamerules.cpp
mp5.cpp
Generating Code...
Compiling...
mortar.cpp
monsterstate.cpp
monsters.cpp
monstermaker.cpp
maprules.cpp
lights.cpp
leech.cpp
items.cpp
islave.cpp
ichthyosaur.cpp
houndeye.cpp
hornetgun.cpp
hornet.cpp
hl_wpn_glock.cpp
hgrunt.cpp
healthkit.cpp
headcrab.cpp
hassassin.cpp
handgrenade.cpp
h_export.cpp
Generating Code...
Compiling...
h_cycler.cpp
h_cine.cpp
h_battery.cpp
h_ai.cpp
gman.cpp
globals.cpp
ggrenade.cpp
genericmonster.cpp
gauss.cpp
gargantua.cpp
gamerules.cpp
game.cpp
func_tank.cpp
func_break.cpp
flyingmonster.cpp
explode.cpp
egon.cpp
effects.cpp
doors.cpp
defaultai.cpp
Generating Code...
Compiling...
crowbar.cpp
crossbow.cpp
controller.cpp
combat.cpp
client.cpp
cbase.cpp
buttons.cpp
bullsquid.cpp
bmodels.cpp
bloater.cpp
bigmomma.cpp
barney.cpp
barnacle.cpp
apache.cpp
animation.cpp
animating.cpp
airtank.cpp
agrunt.cpp
aflock.cpp
Generating Code...
Compiling...
cl : Command line warning D9035 : option 'Fr' has been deprecated and will be removed in a future release
cl : Command line warning D9036 : use 'FR' instead of 'Fr'
pm_shared.c
pm_math.c
pm_debug.c
Generating Code...
Linking...
example.obj : error LNK2005: "public: virtual void __thiscall CCrowbar::Spawn(void)" ([email protected]@@UAEXXZ) already defined in crowbar.obj
example.obj : error LNK2005: "public: virtual void __thiscall CCrowbar::Precache(void)" ([email protected]@@UAEXXZ) already defined in crowbar.obj
example.obj : error LNK2005: "public: virtual int __thiscall CCrowbar::GetItemInfo(struct ItemInfo *)" ([email protected]@@[email protected]@@Z) already defined in crowbar.obj
example.obj : error LNK2005: "public: virtual int __thiscall CCrowbar::Deploy(void)" ([email protected]@@UAEHXZ) already defined in crowbar.obj
example.obj : error LNK2005: "public: virtual void __thiscall CCrowbar::Holster(int)" ([email protected]@@[email protected]) already defined in crowbar.obj
example.obj : error LNK2005: "public: void __thiscall CCrowbar::Smack(void)" ([email protected]@@QAEXXZ) already defined in crowbar.obj
example.obj : error LNK2005: "void __cdecl FindHullIntersection(class Vector const &,struct TraceResult &,float *,float *,struct edict_s *)" ([email protected]@[email protected]@[email protected]@[email protected]@@Z) already defined in crowbar.obj
example.obj : error LNK2005: "public: int __thiscall CCrowbar::Swing(int)" ([email protected]@@[email protected]) already defined in crowbar.obj
example.obj : error LNK2005: "public: void __thiscall CCrowbar::SwingAgain(void)" ([email protected]@@QAEXXZ) already defined in crowbar.obj
example.obj : error LNK2005: "public: virtual void __thiscall CCrowbar::PrimaryAttack(void)" ([email protected]@@UAEXXZ) already defined in crowbar.obj
example.obj : error LNK2005: _weapon_crowbar already defined in crowbar.obj
Creating library .\Releasehl/hl.lib and object .\Releasehl/hl.exp
.\Releasehl/hl.dll : fatal error LNK1169: one or more multiply defined symbols found
Creating browse information file...
Microsoft Browse Information Maintenance Utility Version 8.00.50727
Copyright © Microsoft Corporation. All rights reserved.

За это сообщение valera0141 получил предупреждение за оверквотинг

Сообщить модератору | | IP: Записан
Сообщение: 123760

Старое сообщение 05-08-2013 13:48
- За что?
Half
Частый гость

Дата регистрации: Jun 2013
Проживает: г. Новосибирск
Сообщений: 84
Возраст: 24

Рейтинг



Цитата:
valera0141 писал:
'CEXAMPLE'

Я думал надо писать "CExample", не?
Цитата:
valera0141 писал:
при компиляции hl.dll

valera0141 ты в Weapons.h писал что-нибудь?
Цитата:
valera0141 писал:
при компиляции client.dll

А здесь надо файл добавить в проект.
Цитата:
valera0141 писал:
cl : Command line warning D9036 : use 'FR' instead of 'Fr'

Что это за Fr?

П. С. Ты этот Экзампл из монтировки сделал?
П. С. С. Выбери самое главное и не пихай пожалуйста столько текста, не удобно же смотреть.

__________________
Пруха длится всего 5 минут.

Сообщить модератору | | IP: Записан
Сообщение: 123761

Старое сообщение 05-08-2013 14:09
- За что?
valera0141
Частый гость

Дата регистрации: May 2013
Проживает: (void)
Сообщений: 83
Возраст: 21

Рейтинг



Half в weapon.h прописал класс оружия
class CExampleGun : public CBasePlayerWeapon
{
public:
void Spawn( void );
void Precache( void );
int iItemSlot( void ) { return 1; }
void EXPORT SwingAgain( void );
void EXPORT Smack( void );
int GetItemInfo(ItemInfo *p);

void PrimaryAttack( void );
int Swing( int fFirst );
BOOL Deploy( void );
void Holster( int skiplocal = 0 );
int m_iSwing;
TraceResult m_trHit;

virtual BOOL UseDecrement( void )
{
#if defined( CLIENT_WEAPONS )
return TRUE;
#else
return FALSE;
#endif
}
private:
unsigned short m_usExampleFire;
};

Сообщить модератору | | IP: Записан
Сообщение: 123762

Старое сообщение 05-08-2013 14:23
- За что?
fire64
Житель форума

Дата регистрации: Apr 2007
Проживает: Москва
Сообщений: 2362
Возраст: 28

Рейтинг



valera0141, ну а в example.cpp у тебя везде применяется класс CCrowbar

__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей

Сообщить модератору | | IP: Записан
Сообщение: 123763

Старое сообщение 05-08-2013 14:32
- За что?
valera0141
Частый гость

Дата регистрации: May 2013
Проживает: (void)
Сообщений: 83
Возраст: 21

Рейтинг



Цитата:
valera0141 писал:
'CEXAMPLE'

Я думал надо писать "CExample", не?

в других пушках тоже большими написано.

Добавлено 05-08-2013 в 18:33:

fire64 нет класс применяется моего оружия, вот код моего оружия

/***
*
* Copyright © 1996-2002, Valve LLC. All rights reserved.
*
* This product contains software technology licensed from Id
* Software, Inc. ("Id Technology"). Id Technology © 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 "gamerules.h"


#define EXAMPLE_BODYHIT_VOLUME 128
#define EXAMPLE_WALLHIT_VOLUME 512

LINK_ENTITY_TO_CLASS( weapon_EXAMPLE, CEXAMPLE );



enum gauss_e {
EXAMPLE_IDLE = 0,
EXAMPLE_DRAW,
EXAMPLE_HOLSTER,
EXAMPLE_ATTACK1HIT,
EXAMPLE_ATTACK1MISS,
EXAMPLE_ATTACK2MISS,
EXAMPLE_ATTACK2HIT,
EXAMPLE_ATTACK3MISS,
EXAMPLE_ATTACK3HIT
};


void CEXAMPLE::Spawn( )
{
Precache( );
m_iId = WEAPON_EXAMPLE;
SET_MODEL(ENT(pev), "models/w_EXAMPLE.mdl");
m_iClip = -1;

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


void CEXAMPLE::Precache( void )
{
PRECACHE_MODEL("models/v_EXAMPLE.mdl");
PRECACHE_MODEL("models/w_EXAMPLE.mdl");
PRECACHE_MODEL("models/p_EXAMPLE.mdl");
PRECACHE_SOUND("weapons/cbar_hit1.wav");
PRECACHE_SOUND("weapons/cbar_hit2.wav");
PRECACHE_SOUND("weapons/cbar_hitbod1.wav");
PRECACHE_SOUND("weapons/cbar_hitbod2.wav");
PRECACHE_SOUND("weapons/cbar_hitbod3.wav");
PRECACHE_SOUND("weapons/cbar_miss1.wav");

m_usEXAMPLE = PRECACHE_EVENT ( 1, "events/EXAMPLE.sc" );
}

int CEXAMPLE::GetItemInfo(ItemInfo *p)
{
p->pszName = STRING(pev->classname);
p->pszAmmo1 = NULL;
p->iMaxAmmo1 = -1;
p->pszAmmo2 = NULL;
p->iMaxAmmo2 = -1;
p->iMaxClip = WEAPON_NOCLIP;
p->iSlot = 0;
p->iPosition = 0;
p->iId = WEAPON_EXAMPLE;
p->iWeight = EXAMPLE_WEIGHT;
return 1;
}



BOOL CEXAMPLE::Deploy( )
{
return DefaultDeploy( "models/v_EXAMPLE.mdl", "models/p_EXAMPLE.mdl", EXAMPLE_DRAW, "EXAMPLE" );
}

void CEXAMPLE::Holster( int skiplocal /* = 0 */ )
{
m_pPlayer->m_flNextAttack = UTIL_WeaponTimeBase() + 0.5;
SendWeaponAnim( EXAMPLE_HOLSTER );
}


void FindHullIntersection( const Vector &vecSrc, TraceResult &tr, float *mins, float *maxs, edict_t *pEntity )
{
int i, j, k;
float distance;
float *minmaxs[2] = {mins, maxs};
TraceResult tmpTrace;
Vector vecHullEnd = tr.vecEndPos;
Vector vecEnd;

distance = 1e6f;

vecHullEnd = vecSrc + ((vecHullEnd - vecSrc)*2);
UTIL_TraceLine( vecSrc, vecHullEnd, dont_ignore_monsters, pEntity, &tmpTrace );
if ( tmpTrace.flFraction < 1.0 )
{
tr = tmpTrace;
return;
}

for ( i = 0; i < 2; i++ )
{
for ( j = 0; j < 2; j++ )
{
for ( k = 0; k < 2; k++ )
{
vecEnd.x = vecHullEnd.x + minmaxs[i][0];
vecEnd.y = vecHullEnd.y + minmaxs[j][1];
vecEnd.z = vecHullEnd.z + minmaxs[k][2];

UTIL_TraceLine( vecSrc, vecEnd, dont_ignore_monsters, pEntity, &tmpTrace );
if ( tmpTrace.flFraction < 1.0 )
{
float thisDistance = (tmpTrace.vecEndPos - vecSrc).Length();
if ( thisDistance < distance )
{
tr = tmpTrace;
distance = thisDistance;
}
}
}
}
}
}


void CEXAMPLE::PrimaryAttack()
{
if (! Swing( 1 ))
{
SetThink( &CEXAMPLE::SwingAgain );
pev->nextthink = gpGlobals->time + 0.1;
}
}


void CEXAMPLE::Smack( )
{
DecalGunshot( &m_trHit, BULLET_PLAYER_EXAMPLE );
}


void CEXAMPLE::SwingAgain( void )
{
Swing( 0 );
}


int CEXAMPLE::Swing( int fFirst )
{
int fDidHit = FALSE;

TraceResult tr;

UTIL_MakeVectors (m_pPlayer->pev->v_angle);
Vector vecSrc = m_pPlayer->GetGunPosition( );
Vector vecEnd = vecSrc + gpGlobals->v_forward * 32;

UTIL_TraceLine( vecSrc, vecEnd, dont_ignore_monsters, ENT( m_pPlayer->pev ), &tr );

#ifndef CLIENT_DLL
if ( tr.flFraction >= 1.0 )
{
UTIL_TraceHull( vecSrc, vecEnd, dont_ignore_monsters, head_hull, ENT( m_pPlayer->pev ), &tr );
if ( tr.flFraction < 1.0 )
{
// Calculate the point of intersection of the line (or hull) and the object we hit
// This is and approximation of the "best" intersection
CBaseEntity *pHit = CBaseEntity::Instance( tr.pHit );
if ( !pHit || pHit->IsBSPModel() )
FindHullIntersection( vecSrc, tr, VEC_DUCK_HULL_MIN, VEC_DUCK_HULL_MAX, m_pPlayer->edict() );
vecEnd = tr.vecEndPos; // This is the point on the actual surface (the hull could have hit space)
}
}
#endif

PLAYBACK_EVENT_FULL( FEV_NOTHOST, m_pPlayer->edict(), m_usEXAMPLE,
0.0, (float *)&g_vecZero, (float *)&g_vecZero, 0, 0, 0,
0.0, 0, 0.0 );


if ( tr.flFraction >= 1.0 )
{
if (fFirst)
{
// miss
m_flNextPrimaryAttack = UTIL_WeaponTimeBase() + 0.5;

// player "shoot" animation
m_pPlayer->SetAnimation( PLAYER_ATTACK1 );
}
}
else
{
switch( ((m_iSwing++) % 2) + 1 )
{
case 0:
SendWeaponAnim( EXAMPLE_ATTACK1HIT ); break;
case 1:
SendWeaponAnim( EXAMPLE_ATTACK2HIT ); break;
case 2:
SendWeaponAnim( EXAMPLE_ATTACK3HIT ); break;
}

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

#ifndef CLIENT_DLL

// hit
fDidHit = TRUE;
CBaseEntity *pEntity = CBaseEntity::Instance(tr.pHit);

ClearMultiDamage( );

if ( (m_flNextPrimaryAttack + 1 < UTIL_WeaponTimeBase() ) || g_pGameRules->IsMultiplayer() )
{
// first swing does full damage
pEntity->TraceAttack(m_pPlayer->pev, gSkillData.plrDmgEXAMPLE, gpGlobals->v_forward, &tr, DMG_CLUB );
}
else
{
// subsequent swings do half
pEntity->TraceAttack(m_pPlayer->pev, gSkillData.plrDmgEXAMPLE / 2, gpGlobals->v_forward, &tr, DMG_CLUB );
}
ApplyMultiDamage( m_pPlayer->pev, m_pPlayer->pev );

// play thwack, smack, or dong sound
float flVol = 1.0;
int fHitWorld = TRUE;

if (pEntity)
{
if ( pEntity->Classify() != CLASS_NONE && pEntity->Classify() != CLASS_MACHINE )
{
// play thwack or smack sound
switch( RANDOM_LONG(0,2) )
{
case 0:
EMIT_SOUND(ENT(m_pPlayer->pev), CHAN_ITEM, "weapons/cbar_hitbod1.wav", 1, ATTN_NORM); break;
case 1:
EMIT_SOUND(ENT(m_pPlayer->pev), CHAN_ITEM, "weapons/cbar_hitbod2.wav", 1, ATTN_NORM); break;
case 2:
EMIT_SOUND(ENT(m_pPlayer->pev), CHAN_ITEM, "weapons/cbar_hitbod3.wav", 1, ATTN_NORM); break;
}
m_pPlayer->m_iWeaponVolume = EXAMPLE_BODYHIT_VOLUME;
if ( !pEntity->IsAlive() )
return TRUE;
else
flVol = 0.1;

fHitWorld = FALSE;
}
}

// play texture hit sound
// UNDONE: Calculate the correct point of intersection when we hit with the hull instead of the line

if (fHitWorld)
{
float fvolbar = TEXTURETYPE_PlaySound(&tr, vecSrc, vecSrc + (vecEnd-vecSrc)*2, BULLET_PLAYER_EXAMPLE);

if ( g_pGameRules->IsMultiplayer() )
{
// override the volume here, cause we don't play texture sounds in multiplayer,
// and fvolbar is going to be 0 from the above call.

fvolbar = 1;
}

// also play EXAMPLE strike
switch( RANDOM_LONG(0,1) )
{
case 0:
EMIT_SOUND_DYN(ENT(m_pPlayer->pev), CHAN_ITEM, "weapons/cbar_hit1.wav", fvolbar, ATTN_NORM, 0, 98 + RANDOM_LONG(0,3));
break;
case 1:
EMIT_SOUND_DYN(ENT(m_pPlayer->pev), CHAN_ITEM, "weapons/cbar_hit2.wav", fvolbar, ATTN_NORM, 0, 98 + RANDOM_LONG(0,3));
break;
}

// delay the decal a bit
m_trHit = tr;
}

m_pPlayer->m_iWeaponVolume = flVol * EXAMPLE_WALLHIT_VOLUME;
#endif
m_flNextPrimaryAttack = UTIL_WeaponTimeBase() + 0.25;

SetThink( &CEXAMPLE::Smack );
pev->nextthink = UTIL_WeaponTimeBase() + 0.2;


}
return fDidHit;
}

За это сообщение valera0141 получил предупреждение за оверквотинг

Сообщить модератору | | IP: Записан
Сообщение: 123764

Старое сообщение 05-08-2013 14:33
- За что?
Half
Частый гость

Дата регистрации: Jun 2013
Проживает: г. Новосибирск
Сообщений: 84
Возраст: 24

Рейтинг



Цитата:
valera0141 писал:
в других пушках тоже большими написано.

Впервые такое вижу , може у тебя другой SDK?
Цитата:
valera0141 писал:
class CExampleGun : public CBasePlayerWeapon

Может лучше выберешь или "CExample", или CExampleGun?

__________________
Пруха длится всего 5 минут.

Сообщить модератору | | IP: Записан
Сообщение: 123765

Старое сообщение 05-08-2013 14:36
- За что?
fire64
Житель форума

Дата регистрации: Apr 2007
Проживает: Москва
Сообщений: 2362
Возраст: 28

Рейтинг



valera0141, какая разница каким регистром, ты главное класс задекларируй где надо.

А вообще кончай ты это дело, хватит баловаться с туторами не зная элементарного синтаксиса.

Скачай сначала учебник по C++

__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей

Сообщить модератору | | IP: Записан
Сообщение: 123766

Старое сообщение 05-08-2013 14:37
- За что?
 Дядя Миша
who said meow?

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 21908
Нанёс повреждений: 360 ед.

Рейтинг



valera0141 еще раз простыню запостишь - дам за злостный рецедив.

__________________
В действительности всё может оказаться иначе, чем оно есть на самом деле

My Projects: download page

Сообщить модератору | | IP: Записан
Сообщение: 123767

Старое сообщение 05-08-2013 15:26
-
Тема: (Опционально)
Ваш ответ:



Переводчик транслита


[проверить длину сообщения]
Опции: Автоматическое формирование ссылок: автоматически добавлять [url] и [/url] вокруг интернет адресов.
Уведомление по E-Mail: отправить вам уведомление, если кто-то ответил в тему (только для зарегистрированных пользователей).
Отключить смайлики в сообщении: не преобразовывать текстовые смайлики в картинки.
Показать подпись: добавить вашу подпись в конец сообщения (только зарегистрированные пользователи могут иметь подписи).

Временная зона GMT. Текущее время 00:10. Новая тема    Ответить
  Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > столкнулся с проблемой в создании оружия
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

Быстрый переход:
Оцените эту тему:

Правила Форума:
Вы not можете создавать новые темы
Вы not можете отвечать в темы
Вы not можете прикреплять вложения
Вы not можете редактировать ваши сообщения
HTML Код ВЫКЛ
vB Код ВКЛ
Смайлики ВКЛ
[IMG] Код ВКЛ
 

< Обратная связь - HLFX.ru >

На основе vBulletin
Авторское право © 2000 - 2002, Jelsoft Enterprises Limited.
Дизайн и программирование: Chain Studios © 2005-2018

Рейтинг@Mail.ru