HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Half-Life SDK (https://hlfx.ru/forum/forumdisplay.php?forumid=8)
-- Ошибка LINK (https://hlfx.ru/forum/showthread.php?threadid=1106)
Отправлено Frest 15-01-2008 в 02:24:
Ошибка LINK
Кто нить помогите пожалуйста, вот короче сделал я так, когда будет взрываться граната появиться эффект дополнительного взрыва(спрайты), но вот появилась ошибка в LINK:
Creating library .\Releasehl/hl.lib and object .\Releasehl/hl.exp
ggrenade.obj : error LNK2001: unresolved external symbol "short g_sModelIndexFireballC"(?g_sModelIndexFireballC@@3FA)
ggrenade.obj : error LNK2001: unresolved external symbol "short g_sModelIndexFireballB"(?g_sModelIndexFireballB@@3FA)
ggrenade.obj : error LNK2001: unresolved external symbol "short g_sModelIndexFireballA"(?g_sModelIndexFireballA@@3FA)
.\Releasehl/hl.dll : fatal error LNK1120: 3 unresolved externals
"Dll compiling failed!"
Если что в архиве (снизу) есть код файлов ggrenade.cpp,weapons.cpp,weapons.h которых я изменил.
Отправлено XaeroX 15-01-2008 в 04:24:
Frest кто тебя вообще надоумил такое писать:
C++ Source Code:
1 | MESSAGE_BEGIN( MSG_PAS, SVC_TEMPENTITY, pev->origin ); |
2 | WRITE_BYTE( TE_EXPLOSION ); // This makes a dynamic light and the explosion sprites/sound |
3 | WRITE_COORD( pev->origin.x ); // Send to PAS because of the sound |
4 | WRITE_COORD( pev->origin.y ); |
5 | WRITE_COORD( pev->origin.z ); |
6 | if (iContents != CONTENTS_WATER) |
8 | WRITE_SHORT( g_sModelIndexFireball ); |
9 | WRITE_SHORT( g_sModelIndexFireballA ); |
10 | WRITE_SHORT( g_sModelIndexFireballB ); |
11 | WRITE_SHORT( g_sModelIndexFireballC ); |
15 | WRITE_SHORT( g_sModelIndexWExplosion ); |
17 | WRITE_BYTE( (pev->dmg - 50) * .60 ); // scale * 10 |
18 | WRITE_BYTE( 15 ); // framerate |
19 | WRITE_BYTE( TE_EXPLFLAG_NONE ); |
Даже если ты это скомпилируешь, в игре получишь в лучшем случае баги, в худшем - вылет. У стандартной мессаги TE_EXPLOSION есть свой формат, и добавлять туда свои данные нельзя.
По поводу ошибки - проверь правильность написания имен переменных во всех файлах. Возможно, где-то закралась русская буква или что-то в этом роде. Ну и Rebuild All иногда помогает.__________________
Отправлено Ku2zoff 15-01-2008 в 09:57:
Frest если хочешь сделать взрыв с несколькими спрайтами делай так:
C++ Source Code:
1 | if (iContents != CONTENTS_WATER) |
3 | MESSAGE_BEGIN( MSG_PAS, SVC_TEMPENTITY, pev->origin ); |
4 | WRITE_BYTE( TE_EXPLOSION );// This makes a dynamic light and the explosion sprites/sound |
5 | WRITE_COORD( pev->origin.x );// Send to PAS because of the sound |
6 | WRITE_COORD( pev->origin.y ); |
7 | WRITE_COORD( pev->origin.z ); |
8 | WRITE_SHORT( g_sModelIndexFireball ); |
9 | WRITE_BYTE( (pev->dmg - 50) * .60 ); // scale * 10 |
10 | WRITE_BYTE( 15 ); // framerate |
11 | WRITE_BYTE( TE_EXPLFLAG_NONE ); |
14 | MESSAGE_BEGIN( MSG_PAS, SVC_TEMPENTITY, pev->origin ); |
15 | WRITE_BYTE( TE_EXPLOSION );// This makes a dynamic light and the explosion sprites/sound |
16 | WRITE_COORD( pev->origin.x );// Send to PAS because of the sound |
17 | WRITE_COORD( pev->origin.y ); |
18 | WRITE_COORD( pev->origin.z ); |
19 | WRITE_SHORT( g_sModelIndexFireballA ); |
20 | WRITE_BYTE( (pev->dmg - 50) * .60 ); // scale * 10 |
21 | WRITE_BYTE( 15 ); // framerate |
22 | WRITE_BYTE( TE_EXPLFLAG_NONE ); |
25 | MESSAGE_BEGIN( MSG_PAS, SVC_TEMPENTITY, pev->origin ); |
26 | WRITE_BYTE( TE_EXPLOSION );// This makes a dynamic light and the explosion sprites/sound |
27 | WRITE_COORD( pev->origin.x );// Send to PAS because of the sound |
28 | WRITE_COORD( pev->origin.y ); |
29 | WRITE_COORD( pev->origin.z ); |
30 | WRITE_SHORT( g_sModelIndexFireballB ); |
31 | WRITE_BYTE( (pev->dmg - 50) * .60 ); // scale * 10 |
32 | WRITE_BYTE( 15 ); // framerate |
33 | WRITE_BYTE( TE_EXPLFLAG_NONE ); |
36 | MESSAGE_BEGIN( MSG_PAS, SVC_TEMPENTITY, pev->origin ); |
37 | WRITE_BYTE( TE_EXPLOSION );// This makes a dynamic light and the explosion sprites/sound |
38 | WRITE_COORD( pev->origin.x );// Send to PAS because of the sound |
39 | WRITE_COORD( pev->origin.y ); |
40 | WRITE_COORD( pev->origin.z ); |
41 | WRITE_SHORT( g_sModelIndexFireballC ); |
42 | WRITE_BYTE( (pev->dmg - 50) * .60 ); // scale * 10 |
43 | WRITE_BYTE( 15 ); // framerate |
44 | WRITE_BYTE( TE_EXPLFLAG_NONE ); |
49 | MESSAGE_BEGIN( MSG_PAS, SVC_TEMPENTITY, pev->origin ); |
50 | WRITE_BYTE( TE_EXPLOSION );// This makes a dynamic light and the explosion sprites/sound |
51 | WRITE_COORD( pev->origin.x );// Send to PAS because of the sound |
52 | WRITE_COORD( pev->origin.y ); |
53 | WRITE_COORD( pev->origin.z ); |
54 | WRITE_SHORT( g_sModelIndexWExplosion ); |
55 | WRITE_BYTE( (pev->dmg - 50) * .60 ); // scale * 10 |
56 | WRITE_BYTE( 15 ); // framerate |
57 | WRITE_BYTE( TE_EXPLFLAG_NONE ); |
Добавлено 15-01-2008 в 15:57:
А по поводу
ggrenade.obj : error LNK2001: unresolved external symbol "short g_sModelIndexFireballC"(?g_sModelIndexFireballC@@3FA)
ggrenade.obj : error LNK2001: unresolved external symbol "short g_sModelIndexFireballB"(?g_sModelIndexFireballB@@3FA)
ggrenade.obj : error LNK2001: unresolved external symbol "short g_sModelIndexFireballA"(?g_sModelIndexFireballA@@3FA)
Ты объявил индексы новых спрайтов в weapons.h?
Отправлено Frest 15-01-2008 в 10:32:
Спасибо!
Как всегда вы лучшие коддеры по HL1 которых я в жизни видел
Щас проверю...
Добавлено 15-01-2008 в 13:32:
Ура!!! ошибка LINK исчезла.Спасибо!