PDA

Просмотр полной версии : Помогите с SDK



pashaintel
17.11.2008, 18:09
Никак не могу наладить работу с CodeBlocks и получить CvGameCoreDLL.dll. Выскакивает одна и та же ошибка. Чувствую,что всё очень просто,просто я ещё лох в этом :) . Знающие люди,помогите,пожалуйста. Вот лог:
-------------- Build: Final Release Win32 in CvGameCoreDLL ---------------

CvArea.cpp
CvArtFileMgr.cpp
CvCity.cpp
CvCityAI.cpp
CvDLLButtonPopup.cpp
CvDLLEntity.cpp
CvDLLPython.cpp
CvDLLWidgetData.cpp
CvDeal.cpp
CvDiploParameters.cpp
CvFractal.cpp
CvGame.cpp
CvGameAI.cpp
CvGameCoreDLL.cpp
CvGameCoreUtils.cpp
CvGameInterface.cpp
CvGameTextMgr.cpp
CvGlobals.cpp
CvHallOfFameInfo.cpp
CvInfoWater.cpp
CvInfos.cpp
CvInitCore.cpp
CvMap.cpp
CvMapGenerator.cpp
CvPlayer.cpp
CvPlayerAI.cpp
CvPlot.cpp
CvPlotGroup.cpp
CvPopupInfo.cpp
CvPopupReturn.cpp
CvRandom.cpp
CvReplayInfo.cpp
CvReplayMessage.cpp
CvSelectionGroup.cpp
CvSelectionGroupAI.cpp
CvStructs.cpp
CvTalkingHeadMessage.cpp
CvTeam.cpp
CvTeamAI.cpp
CvUnit.cpp
CvUnitAI.cpp
CvXMLLoadUtility.cpp
CvXMLLoadUtilityGet.cpp
CvXMLLoadUtilityInit.cpp
CvXMLLoadUtilitySet.cpp
CyArea.cpp
CyAreaInterface.cpp
CyArgsList.cpp
CyArtFileMgr.cpp
CyArtFileMgrInterface.cpp
CyCity.cpp
CyCityInterface1.cpp
CyDeal.cpp
CyEnumsInterface.cpp
CyGame.cpp
CyGameCoreUtils.cpp
CyGameCoreUtilsInterface.cpp
CyGameInterface.cpp
CyGameTextMgr.cpp
CyGameTextMgrInterface.cpp
CyGlobalContext.cpp
CyGlobalContextInterface1.cpp
CyGlobalContextInterface2.cpp
CyGlobalContextInterface3.cpp
CyGlobalContextInterface4.cpp
CyHallOfFameInfo.cpp
CyHallOfFameInterface.cpp
CyInfoInterface1.cpp
CyInfoInterface2.cpp
CyInfoInterface3.cpp
CyMap.cpp
CyMapGenerator.cpp
CyMapGeneratorInterface.cpp
CyMapInterface.cpp
CyPlayer.cpp
CyPlayerInterface1.cpp
CyPlayerInterface2.cpp
CyPlot.cpp
CyPlotInterface1.cpp
CyRandomInterface.cpp
CyReplayInfo.cpp
CySelectionGroup.cpp
CySelectionGroupInterface.cpp
CyStructsInterface1.cpp
CyTeam.cpp
CyTeamInterface.cpp
CyUnit.cpp
CyUnitInterface1.cpp
FAssert.cpp
FDialogTemplate.cpp
_precompile.cpp
Linking dynamic library: ..\Beyond the Sword\Assets\CvGameCoreDLL.dll
LINK : fatal error LNK1181: cannot open input file 'Files\Microsoft.obj'
Process terminated with status 1181 (15 minutes, 31 seconds)
1 errors, 0 warnings

Gromozeka
17.11.2008, 18:35
Версия проги на которой это делаешь?

pashaintel
17.11.2008, 18:39
<div class='quotetop'>Цитата(Gromozeka * 17.11.2008, 18:35) 268629</div>

Версия проги на которой это делаешь?
[/b]
VC++ Toolkit 2003

NeverMind
17.11.2008, 22:56
Пашок, конкретно по ошибке ничего сказать не могу, не разбираюсь в деталях. Но устанавливал "бесплатный вариант" по этой инструкции (http://forums.civfanatics.com/showthread.php?t=166933) - все работает в итоге. Там надо не забыть для BtS убрать лишние флаги и опции, как указано в конце. Возможно, в них дело...

pashaintel
18.11.2008, 01:34
<div class='quotetop'>Цитата(NeverMind * 17.11.2008, 22:56) 268657</div>

Пашок, конкретно по ошибке ничего сказать не могу, не разбираюсь в деталях. Но устанавливал "бесплатный вариант" по этой инструкции (http://forums.civfanatics.com/showthread.php?t=166933) - все работает в итоге. Там надо не забыть для BtS убрать лишние флаги и опции, как указано в конце. Возможно, в них дело...
[/b]
Да вот и я по ней делаю,только не получается

Наблюдатель
18.11.2008, 10:02
<div class='quotetop'>Цитата(Пашок * 18.11.2008, 1:34) 268684</div>

<div class='quotetop'>Цитата(NeverMind * 17.11.2008, 22:56) 268657

Пашок, конкретно по ошибке ничего сказать не могу, не разбираюсь в деталях. Но устанавливал "бесплатный вариант" по этой инструкции (http://forums.civfanatics.com/showthread.php?t=166933) - все работает в итоге. Там надо не забыть для BtS убрать лишние флаги и опции, как указано в конце. Возможно, в них дело...
[/b]
Да вот и я по ней делаю,только не получается
[/b][/quote]

там же сказано как побороть

<div class='quotetop'>Цитата</div>
Well I am at my wits end here, I keep getting the same error that ?Eclipse? got a page ago (wonder if he ever resolved it?)

fatal error LNK1181: cannot open input file &#39;C:\Program Files\Microsoft Visual C++ Toolkit 2003\Lib.obj

I am shure the pathway is correct I pasted it from its installed location. What confuses me is why its trying to open the lib directory as a .obj file? I tried using C:\Program Files\Microsoft Visual C++ Toolkit 2003\Lib\ to try to make it desend into the lib directory but this gives me an even more confusing

canot open input file &#39;Files\Microsoft.obj&#39;

Code Blocks is clearly insane[/b]

<div class='quotetop'>Цитата</div>
I know I got exactly that error when I tried to install. The issue was I had entered something incorrectly in the codeblocks configuration (so many of the dialog boxes are called the same thing). I wish i could remember exactly which one I entered incorrectly.

I went back and added screenshots at each of the configuration steps in the 1st post, hopefully that helps.[/b]

<div class='quotetop'>Цитата</div>
Finaly it works, I whet in and deleted ALL the stuff in step 6 and re-did it

I think the problem was had entered the directories under Linker->Link Libraries and it was trying to open the directory as a libraby object. Once I removed them I got a sucessfull compile and a .dll file. Other have mentioned it and I noticed it as well that without even altering the sorce code you get a dll that is 4.66 MB vs the normal Civ4 dll of 3 something. I dont notice any game play differences though.

Thanks a bunch everyone out their in tutorial/help thread land![/b]

сурс: http://forums.civfanatics.com/showthread.p...=5&t=166933 (http://forums.civfanatics.com/showthread.php?page=5&t=166933)

и еще глянь сюда - может поможет без переустановки: http://forums.codeblocks.org/index.php?topic=5693.0

pashaintel
18.11.2008, 16:15
В общем,всё оказалось просто. Microsoft Platform SDK криво встал. Переустановил и всё заработало.
Можно заниматься моддингом. Хочу радиус обрабатываемых клеток в городе увеличить до трёх,не могу понять как,не получается. Буду думать...

pashaintel
18.11.2008, 22:10
Ура,я это сделал! Своими руками :). Теперь у меня три клетки радиус города и 30 цивилизаций вместо 18.

General
18.11.2008, 22:15
ПОЗДРАВЛЯЮ!!!
:punk: B)

NeverMind
19.11.2008, 09:52
<div class='quotetop'>Цитата(Пашок * 18.11.2008, 22:10) 268815</div>
Ура,я это сделал! Своими руками :). Теперь у меня три клетки радиус города и 30 цивилизаций вместо 18.[/b]
Круто! :.V.: Файлы - в студию (http://www.civfanatics.ru/forum/index.php?showforum=114), пожалуйста! Ждем. :worthy:

pashaintel
19.11.2008, 11:45
Да ладно :). Неужели для 3.17 этого ещё не сделали? Могу выложить dll-ку,сам мод у меня ещё в разработке и одновременно на тестировании.

NeverMind
19.11.2008, 12:24
Нет, ты первый. :win:

Так что давай выкладываем, вместе и потестируем. :secret:


Тема с готовым файлом тут (http://www.civfanatics.ru/forum/index.php?showtopic=8287).

pashaintel
20.11.2008, 00:24
Блин,не могу понять как получить имя игрока,например,Саша или Володя. Или этой функции в SDK вообще нет?

NeverMind
22.11.2008, 23:31
Вау! Я тоже сделал тройной радиус! :w00t: Такой простой код, я думал все гораздо сложней.

И почему я раньше думал, что SDK это так сложно?! :huh1:

Ну все :eat:

pashaintel
23.11.2008, 02:23
Да нет,несложно. Я вот даже С++ не знаю. Тяжело всегда разбираться в чужом коде. Свой то через некоторое время забываешь...
Кстати,мне удалось таки этот радиус города запихнуть в опции,чтоб можно было выбирать,два или три.
Столько возился,а ответ то на поверхности. Смекалка,однако.

NeverMind
23.11.2008, 16:07
<div class='quotetop'>Цитата</div>
Кстати,мне удалось таки этот радиус города запихнуть в опции,чтоб можно было выбирать,два или три.
Столько возился,а ответ то на поверхности. Смекалка,однако.[/b]
Супер! :applau2:

А код покажешь? Я тоже хочу эту опцию вставить.

pashaintel
23.11.2008, 18:51
<div class='quotetop'>Цитата(NeverMind * 23.11.2008, 16:07) 269478</div>

<div class='quotetop'>Цитата
Кстати,мне удалось таки этот радиус города запихнуть в опции,чтоб можно было выбирать,два или три.
Столько возился,а ответ то на поверхности. Смекалка,однако.[/b]
Супер! :applau2:

А код покажешь? Я тоже хочу эту опцию вставить.
[/b][/quote]
Пожалуйста! Вот мануальчик от меня по созданию новых пунктов в меню:
Создание своей игровой опции
Допустим, мы хотим создать опцию,увеличивающую время исследований. Для начала откроем файл CIV4GameOptionInfos.xml. По образу и подобию других опций создаём ниже(!) свою опцию,назовём её,к примеру, GAMEOPTION_TECHCOST. Соответственно пропишем текстовые ссылки, заранее прописанные в соответствующем файле. Сохраним файл и пойдём редактировать SDK. Открываем CyEnumsInterface.cpp. Там находим строку python::enum <Game Option Types>. Ниже мы видим список всех игровых опций, указанных в точно таком же порядке(!),как и в xml-файле. Ниже всех опций,перед строкой value("NUM_GAMEOPTION_TYPES", NUM_GAMEOPTION_TYPES) пропишем свою:
.value("GAMEOPTION_TECHCOST", GAMEOPTION_TECHCOST)
Затем откроем CvEnums.h. Найдём строку enum DllExport GameOptionTypes. Здесь мы видим тот же список опций. Точно также после всех перечисленных опций прописываем свою:
GAMEOPTION_TECHCOST,
Компилируем проект. Теперь, если мы запустим игру, мы увидим в списке опций свою. Осталось только написать код,который будет выполняться при активации этой опции. Выглядит это так:
If (CG.getGameINLINE().isOption(GAMEOPTION_TECHCOST))
{
…Ваш код…
};
P.S. Если вы хотите,чтобы ваша опция отображалась не в конце списка,просто поменяте порядок опций во всех трёх списках на нужный.

NeverMind
23.11.2008, 19:20
За инструкцию спасибо. Собственно с добавлением опции все достаточно понятно.

Вопрос непосредственно с 3-радиусом. Условие включение этой опции надо прописывать и в CvDefines.h, и в CvGlobals.cpp? Ты не мог бы в качестве примера привести добавление именно этой опциии или выложить соответствующий код?

pashaintel
23.11.2008, 19:53
<div class='quotetop'>Цитата(NeverMind * 23.11.2008, 19:20) 269492</div>

За инструкцию спасибо. Собственно с добавлением опции все достаточно понятно.

Вопрос непосредственно с 3-радиусом. Условие включение этой опции надо прописывать и в CvDefines.h, и в CvGlobals.cpp? Ты не мог бы в качестве примера привести добавление именно этой опциии или выложить соответствующий код?
[/b]
Ах,вон ты о чём. Это вопрос сложнее,и ответ на него,наверное,знает кто-то кто разбирается в этом SDK.
Я же не нашёл ничего лучшего,чем ввести новую переменную в CvCity.cpp и присваивать ей значение по условию.
Поэтому кода как такового и нет. просто во всём коде :) надо заменить NUM_CITY_PLOTS на свою переменную.
Я долго пытался сделать что-то в CvGlobals.cpp,ставя определяющие параметры в зависимость от выбора игрока,ничего не получилось,такой вот я знаток С++, попробуй,если получится,поделись,это ведь намного проще,чем мой варварский способ. Ещё неизвестно чем это аукнется в ходе игры, поэтому тот мод,что я выложил пока без этой опции.

NeverMind
23.11.2008, 20:31
Попробовать, конечно, попробую. Только я далек не только от С++, но и от программирования вообще. :D

pashaintel
23.11.2008, 20:37
<div class='quotetop'>Цитата</div>
Такой простой код, я думал все гораздо сложней.

И почему я раньше думал, что SDK это так сложно?! [/b]

И почему я раньше думал, что SDK это так просто? :bayan: