Eugeny
199 постов
Карма: 10
#1 30 декабря 2011 в 11:43
Приветствую!<br /><br />Решили мы добавить в наш аддон дождь, клонировали имеющийся снег, но возникла проблема. Чтобы покрыть все открытое пространство на карте дождем, необходимо примерно 250 энтити дождя. Но так как уже на карте уперлись в лимиты подумали перенести дождь из Enemy Territory.<br />Попробовал перенести, практически получилось.<br />Компоновщик ругается, хотя как в ET добавил в RtCW.<br />2&gt;g_save.obj : error LNK2001: неразрешенный внешний символ &quot;_CG_GenerateTracemap&quot;<br />2&gt;..\Release/qagamex86.dll : fatal error LNK1120: 1 неразрешенных внешних элементов<br />Целый день бьюсь&nbsp; с ним.&nbsp; :(
Берсеркер
2318 постов
Карма: 216
#2 31 декабря 2011 в 05:10
приветствую.<br />погляди по аналогии как сделано для прочих вызовов, подобных CG_GenerateTracemap,<br />что-то где-то видимо не дописал.
Машина несла меня через неведомые районы Галактики сквозь пространство математической реальности быстрее скорости света. (C) Фред Саберхаген.
Eugeny
199 постов
Карма: 10
#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 /> бла-бла-бла&nbsp; :D<br />}<br />#endif // CGAMEDLL<br />если объявить этот CGAMEDLL, то начинает ругаться на "cg" и "cgs"<br /><br />3&gt;.\bg_tracemap.c(81) : error C2065: cg: необъявленный идентификатор<br />2&gt;.\bg_tracemap.c(375) : error C2065: cgs: необъявленный идентификатор<br /><br />intellisense подсказывает их определения<br /> :&#39;(
Eugeny
199 постов
Карма: 10
#4 06 января 2012 в 16:06
Кто-нибудь что-нибудь подскажет?<br /><br />И как поменять порядок построения? а то ЕТ в другом порядке компилится
Eugeny
199 постов
Карма: 10
#5 07 января 2012 в 10:58
одну проблему решил добавив пустую функцию<br />#ifdef CGAMEDLL<br />void CG_GenerateTracemap( void ) {<br /> бла-бла-бла&nbsp; :D<br />}<br />#else<br />void CG_GenerateTracemap( void ) {}<br />#endif // CGAMEDLL <br />теперь дождь не хочет идти&nbsp; :-<br />теперь дождь не хочет идти&nbsp; :-[
Берсеркер
2318 постов
Карма: 216
#6 07 января 2012 в 11:21
эх.. не копался ни разу в cg и ui коде...<br />Вопрос 1: CG_GenerateTracemap есть в сурсах ET или это ваша новая функция?<br />Если второе, тогда второй вопрос: дай аналогичную функцию, попробую проследить связь между cg и движком.
Машина несла меня через неведомые районы Галактики сквозь пространство математической реальности быстрее скорости света. (C) Фред Саберхаген.
Eugeny
199 постов
Карма: 10
#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&nbsp; <br />из-за этого условия он и говорил что неразрешенный внешний символ &quot;_CG_GenerateTracemap&quot;<br />я добавил в условие #else и код пустой функции void CG_GenerateTracemap( void ) и он закончил компиляцию
Берсеркер
2318 постов
Карма: 216
#8 07 января 2012 в 16:22
если объявить этот CGAMEDLL, то начинает ругаться на &quot;cg&quot; и &quot;cgs&quot;
<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 &quot;../cgame/cg_local.h&quot;<br />#else<br />#include &quot;g_local.h&quot;<br />#endif<br />т.е. подтягивается файл &quot;../cgame/cg_local.h&quot;, а в нём то прописано вот что:<br />extern cgs_t cgs;<br />extern cg_t cg;<br /><br />Если не получится, скинь сурс, а то неудобно так вот умозаключениями баги править&nbsp; :)
Машина несла меня через неведомые районы Галактики сквозь пространство математической реальности быстрее скорости света. (C) Фред Саберхаген.
Eugeny
199 постов
Карма: 10
#9 07 января 2012 в 16:28
вот залил<br />http://zalil.ru/32444754<br /><br />свое решение проблемы описал пару сообщений назад
Eugeny
199 постов
Карма: 10
#10 07 января 2012 в 22:50
Создал тестовую карту с дождем в ЕТ дождь отображается, а в Вольфе отказывается и ошибок не пишет.&nbsp; :(<br />возможно что-то где-то не добавил в код