#1
30 декабря 2011 в 11:43
Приветствую!<br /><br />Решили мы добавить в наш аддон дождь, клонировали имеющийся снег, но возникла проблема. Чтобы покрыть все открытое пространство на карте дождем, необходимо примерно 250 энтити дождя. Но так как уже на карте уперлись в лимиты подумали перенести дождь из Enemy Territory.<br />Попробовал перенести, практически получилось.<br />Компоновщик ругается, хотя как в ET добавил в RtCW.<br />
2>g_save.obj : error LNK2001: неразрешенный внешний символ "_CG_GenerateTracemap"<br />2>..\Release/qagamex86.dll : fatal error LNK1120: 1 неразрешенных внешних элементов
<br />Целый день бьюсь с ним. :(
#2
31 декабря 2011 в 05:10
приветствую.<br />погляди по аналогии как сделано для прочих вызовов, подобных CG_GenerateTracemap,<br />что-то где-то видимо не дописал.
#3
31 декабря 2011 в 08:19
такой код в bg_public.h<br />
<br />// Tracemap<br />#ifdef CGAMEDLL<br />void CG_GenerateTracemap( void );<br />#endif // CGAMEDLL<br />qboolean BG_LoadTraceMap( char *rawmapname, vec2_t world_mins, vec2_t world_maxs );<br />float BG_GetSkyHeightAtPoint( vec3_t pos );<br />float BG_GetSkyGroundHeightAtPoint( vec3_t pos );<br />float BG_GetGroundHeightAtPoint( vec3_t pos );<br />int BG_GetTracemapGroundFloor( void );<br />int BG_GetTracemapGroundCeil( void );<br />
<br />это написано в bg_tracemap.c<br /><br />#ifdef CGAMEDLL<br />void CG_GenerateTracemap( void ) {<br /> бла-бла-бла :D<br />}<br />#endif // CGAMEDLL
<br />если объявить этот CGAMEDLL, то начинает ругаться на "cg" и "cgs"<br /><br />3>.\bg_tracemap.c(81) : error C2065: cg: необъявленный идентификатор<br />2>.\bg_tracemap.c(375) : error C2065: cgs: необъявленный идентификатор<br />
<br />intellisense подсказывает их определения<br /> :'(
#4
06 января 2012 в 16:06
Кто-нибудь что-нибудь подскажет?<br /><br />И как поменять порядок построения? а то ЕТ в другом порядке компилится
#5
07 января 2012 в 10:58
одну проблему решил добавив пустую функцию<br />
#ifdef CGAMEDLL<br />void CG_GenerateTracemap( void ) {<br /> бла-бла-бла :D<br />}<br />#else<br />void CG_GenerateTracemap( void ) {}<br />#endif // CGAMEDLL
<br />теперь дождь не хочет идти :-<br />теперь дождь не хочет идти :-[
#6
07 января 2012 в 11:21
эх.. не копался ни разу в cg и ui коде...<br />Вопрос 1: CG_GenerateTracemap есть в сурсах ET или это ваша новая функция?<br />Если второе, тогда второй вопрос: дай аналогичную функцию, попробую проследить связь между cg и движком.
#7
07 января 2012 в 11:25
[quote author=Берсеркер link=topic=713.msg16071#msg16071 date=1325935264]<br />Вопрос 1: CG_GenerateTracemap есть в сурсах ET или это ваша новая функция?<br />[/quote]<br />функция CG_GenerateTracemap в сурсах есть<br /><br />как я уже писал, есть условие<br />#ifdef CGAMEDLL<br />void CG_GenerateTracemap( void ) {<br />// код функции<br />}<br />#endif // CGAMEDLL <br />из-за этого условия он и говорил что неразрешенный внешний символ "_CG_GenerateTracemap"<br />я добавил в условие #else и код пустой функции void CG_GenerateTracemap( void ) и он закончил компиляцию
#8
07 января 2012 в 16:22
если объявить этот CGAMEDLL, то начинает ругаться на "cg" и "cgs"<br />надо объявлять CGAMEDLL, иначе не будут выполняться условия типа<br />
// Tracemap<br />#ifdef CGAMEDLL<br />void CG_GenerateTracemap( void );<br />#endif // CGAMEDLL
<br />и далее разбираться почему не видны cg и cgs.<br /><br />В самом начале bg_tracemap.c есть<br />#ifdef CGAMEDLL<br />#include "../cgame/cg_local.h"<br />#else<br />#include "g_local.h"<br />#endif
<br />т.е. подтягивается файл "../cgame/cg_local.h", а в нём то прописано вот что:<br />extern cgs_t cgs;<br />extern cg_t cg;
<br /><br />Если не получится, скинь сурс, а то неудобно так вот умозаключениями баги править :)
#9
07 января 2012 в 16:28
вот залил<br />http://zalil.ru/32444754<br /><br />свое решение проблемы описал пару сообщений назад
#10
07 января 2012 в 22:50
Создал тестовую карту с дождем в ЕТ дождь отображается, а в Вольфе отказывается и ошибок не пишет. :(<br />возможно что-то где-то не добавил в код