Привет всем!
Просьба помочь мне в проблеме с огнеметом Ghoul [BB].ТУТОРИАЛ
Дело в том что во время компиляции "клиента" ( сам "сервер" компилился без ошибок ), как только наступает Linking...
Выходит ряд ошибок:
Цитата:
flame.obj : error LNK2005: "public: void __thiscall CFlame::Explode(class Vector ,class Vector)" (?Explode@CFlame@@QAEXVVector@@0@Z) already defined in hl_baseentity.obj
flame.obj : error LNK2005: "public: void __thiscall CFlame::Explode(struct Trace
Result *,int)" (?Explode@CFlame@@QAEXPAUTraceResult@@H@Z) already defined in hl_
baseentity.obj
flame.obj : error LNK2005: "public: virtual void __thiscall CFlame::Killed(struc
t entvars_s *,int)" (?Killed@CFlame@@UAEXPAUentvars_s@@H@Z) already defined in h
l_baseentity.obj
flame.obj : error LNK2005: "public: virtual void __thiscall CFlame::BounceSound(
void)" (?BounceSound@CFlame@@UAEXXZ) already defined in hl_baseentity.obj
flame.obj : error LNK2005: "public: virtual void __thiscall CFlame::Spawn(void)"
(?Spawn@CFlame@@UAEXXZ) already defined in hl_baseentity.obj
flame.obj : error LNK2005: "public: static class CFlame * __cdecl CFlame::ShootF
lame(struct entvars_s *,class Vector,class Vector)" (?ShootFlame@CFlame@@SAPAV1@
PAUentvars_s@@VVector@@1@Z) already defined in hl_baseentity.obj
flame.obj : warning LNK4006: "public: void __thiscall CFlame::Explode(class Vect
or,class Vector)" (?Explode@CFlame@@QAEXVVector@@0@Z) already defined in hl_base
entity.obj; second definition ignored
flame.obj : warning LNK4006: "public: void __thiscall CFlame::Explode(struct Tra
ceResult *,int)" (?Explode@CFlame@@QAEXPAUTraceResult@@H@Z) already defined in h
l_baseentity.obj; second definition ignored
flame.obj : warning LNK4006: "public: virtual void __thiscall CFlame::Killed(str
uct entvars_s *,int)" (?Killed@CFlame@@UAEXPAUentvars_s@@H@Z) already defined in
hl_baseentity.obj; second definition ignored
flame.obj : warning LNK4006: "public: virtual void __thiscall CFlame::BounceSoun
d(void)" (?BounceSound@CFlame@@UAEXXZ) already defined in hl_baseentity.obj; sec
ond definition ignored
flame.obj : warning LNK4006: "public: virtual void __thiscall CFlame::Spawn(void
)" (?Spawn@CFlame@@UAEXXZ) already defined in hl_baseentity.obj; second definiti
on ignored
flame.obj : warning LNK4006: "public: static class CFlame * __cdecl CFlame::Shoo
tFlame(struct entvars_s *,class Vector,class Vector)" (?ShootFlame@CFlame@@SAPAV
1@PAUentvars_s@@VVector@@1@Z) already defined in hl_baseentity.obj; second defin
ition ignored
Creating library .\Release/client.lib and object .\Release/client.exp
flame.obj : error LNK2001: unresolved external symbol "short g_sModelIndexFlame"
(?g_sModelIndexFlame@@3FA)
flame.obj : error LNK2001: unresolved external symbol "int __cdecl UTIL_PointCon
tents(class Vector const &)" (?UTIL_PointContents@@YAHABVVector@@@Z)
flame.obj : error LNK2001: unresolved external symbol "short g_sModelIndexSmoke"
(?g_sModelIndexSmoke@@3FA)
flame.obj : error LNK2001: unresolved external symbol "void __cdecl UTIL_Bubbles
(class Vector,class Vector,int)" (?UTIL_Bubbles@@YAXVVector@@0H@Z)
flame.obj : error LNK2001: unresolved external symbol "struct TraceResult __cdec
l UTIL_GetGlobalTrace(void)" (?UTIL_GetGlobalTrace@@YA?AUTraceResult@@XZ)
.\Release\client.dll : fatal error LNK1120: 5 unresolved externals
"Dll compiling failed!"
Использую движок Spirit из CSM Half-Life SDK (который входил в комплект с ним)
Я перечитал статью 4 раза, пересмотрел [BB].форум, безполезно.При попытке удалить из hl_baseentity.cpp эти строки, выходят уже только 4 ошибки.Но уже вообще о другой теме.Вроде бы в форуме не было у всех подобных ошибок как у меня.
Сразу говорю, что я сперва компилировал сервер а потом клиент.
Как было сказано:
Цитата:
Внимание! Компилировать клиент нужно только после компиляции сервера! Т.е. в первой части надо просто внести изменения на клиенте и сохранить их, иначе будут ошибки типа: error C2653: 'CFlame' : is not a class or namespace name.
Frest заглушек туда понаставь, да и всего делов.
вот допустим есть у тебя функция CFlame::KIlled - копируешь её на клиент, а весь код из функции удаляешь. Это и есть заглушка.
ЗЫ. а что физика не pozubam оказалась?
>>бросил это оружие, ибо он сильно багнуто
пффф. Это как в басне про Лису и Виноград - достать не смогла, так и говорит - да это виноград хреновый какой-то.
morfin а какой смысл менять редефайны? Может просто сделать оружие чисто серверным? Или отключить систему предиктинга оружий, чтобы вообще отказаться от клиентских пушек? Если второй вариант, то смотри тутор Дяди Миши по Xash Weapon System.
XaeroX, дело не в том что я его на клиент не поместил, а в коде самого огнемета
вот что XWider писал
Цитата:
Kstai, kod ya tvoi nemnogo poizuchal...
1) Zrya ty v odin frame stolko CFlame::ShootFlame stavish. Na traffic posmotri.
2) DangerSoundThink() v tvoem sluchae sovsem bassmyslenna.
kak i void CFlame::* v hl_baseentity.cpp. Dostatochno v PrimaryAttack() postavit' #ifndef CLIENT_DLL pered CFlame::ShootFlame().
3) SLISHKOM MNOGO SVC_TEMPENTITY. Ty luche by sdelal pev->effects |= EF_BRIGHTLIGHT!
Koroche, po seti ne poigraesh. A tak, voobshe, ochen', ochen' neplogho.
__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей
fire64 клиентский огнемет обсуждался много раз.
Смысл прост - тот огонь, который вызывается из CFlame :: Shoot должен иметь галочку pev->effects |= EF_NODRAW;
После чего он будет по прежнему наносить дамагу и перестанет влиять на траффик, поскольку станет невидимым.
А на клиенте надо будет прикрутить собственно огонь видимый, например партиклы из спирита.