Здравствуйте. Я в civ4 новичок. Хочу узнать у профессионалов, реализуема ли принципиально следующее изменение (дополнение):
сделать в городе некоторую задачу (здание, проект, процесс), чтобы каждый ход передовать из данного города в другой какую-то долю от молотков/пищи - например, чтобы растить полярные города.
В общем, это принципиально возможно (SDK, Python, XML) или нет?
<div class='quotetop'>Цитата(Slow1112 * 10.8.2006, 13:57) [snapback]115089[/snapback]</div>Да, но на каком минимум уровне, не скажу. Помойму этот вопрос уже где-то на форуме обсуждался. Поищи.Здравствуйте. Я в civ4 новичок. Хочу узнать у профессионалов, реализуема ли принципиально следующее изменение (дополнение):
сделать в городе некоторую задачу (здание, проект, процесс), чтобы каждый ход передовать из данного города в другой какую-то долю от молотков/пищи - например, чтобы растить полярные города.
В общем, это принципиально возможно (SDK, Python, XML) или нет?
[/b]
С пола не упасть!
http://img444.imageshack.us/img444/7241/samogonxg0.png
В принципе с помощью СДК возможно многое - но передавать пищу из города - это надо делать отдельное окно (а город и так весь забит окнами). Я хотел реализовать это немного по другому. Есть много тайлов - не принадлежащих городу. Если туда поставить (ну не знаю кого, крестьянина что ли или рабочего) и с помощью него передавать продукцию с тайла в город (город мона указать конкретно какой), то енто потянет. А вообще такая реализация идет на уровне СДК - Питон. В моем моде - для полярных городов сделан терраформ (преобразование местности).
Программирование - это не то, что ты думаешь.... - Это то, что думает о тебе компьютер.
http://blacksun.civfanatics.ru
-------------------------------------------------
MTDG2 - [civ]christianity[/civ]Монархия
---------------------------------
Председатель CFR Awards 2007
---------------------------------
Председатель CFR Awards 2008
<div class='quotetop'>Цитата</div>тут вродеэтот вопрос уже где-то на форуме обсуждался[/b]
http://forum.civfanatics.ru/index.php?showtopic=3787
0
Рабочие, собирающие пищу, терраформинг, здания, дающие +XXX еды - это всё здорово, НО это - нагромождение новых сущностей, концепций. Просто хочется перераспределять ресурсы в игре между городами: чтобы при обсчёте хода от одного города xxx пищи отнималось и к другому прибавлялось.
Сначала хотел сделать это через процессы - к трём существующим добавить ещё один. Но процессы оказались заточенными под конвертирование щитов в одном городе....
Тут надо серьёзно в SDK копаться. Но пока даже не понятно, придётся ли модифицировать сущность "процесс", или вообще что-то новое создавать по типу процесса.
Для этого надо, в свою очередь, хотя бы даталогическую модель SDK восстановить 8-). В общем - задача более чем серьёзная..... Хочу ей заняться.
А по поводу отдельного окна - вовсе не объязательно. Также как, например, Research добавляем городу задание, при этом спрашиваем - куда пищу отдавать. Вот так в общих чертах хочеЦЦа...
Вопрос первый - Ты программер ? (от ентого будем толкаца....)))))) (Тогда ты не будешь видеть - куды что идееет - если через Research...) Если нуна помощь - (зайди в личку - там - аська)
Программирование - это не то, что ты думаешь.... - Это то, что думает о тебе компьютер.
http://blacksun.civfanatics.ru
-------------------------------------------------
MTDG2 - [civ]christianity[/civ]Монархия
---------------------------------
Председатель CFR Awards 2007
---------------------------------
Председатель CFR Awards 2008
Посмотри.....Помогу - всем, чем смогу... (кстати все СДК, или почти все) сделано - для Питона....
Программирование - это не то, что ты думаешь.... - Это то, что думает о тебе компьютер.
http://blacksun.civfanatics.ru
-------------------------------------------------
MTDG2 - [civ]christianity[/civ]Монархия
---------------------------------
Председатель CFR Awards 2007
---------------------------------
Председатель CFR Awards 2008
Буду здесь писать размышления по поводу реализации внутреннего перемешения пищи.
Для начала нужно найти место, где расчитывается уровень производства пищи. Порядок вызова функций такой (все в классе CvCity): doTurn -> doGrowth -> foodDifference.
[code]
===========================
int CvCity::foodDifference(bool bBottom)
{
Slow1112 - у меня к тебе просьба. Отредактируй, пожалуйста свое сообщение. В верху редактора есть две кнопочки: 1. Сделать цитатой; 2. Код. Так вот ты нажми 2 кнопочку и помести весь код между "[сode][/сode]". (здесь указан тег с подмененной буквой на кириллическую - поэтому он и показывается как тег)
И второе - просьба указывать файл - откуда ты это взял (легче искать будет) Заранее благодарен!
А теперь по поводу. Если мы для города введем четыре переменные:
(эти перем указать в классе CvCity - как protected; соответственно обработать их). Написать для них ф-ции. (подробно не буду, до дела дойдет все сделаем)Код:int m_aiSetFood; int m_aiGetFood; CvCity* m_pgsetCity; CvCity* m_pggetCity;
То не придется переупорядовачивать города. Просто в функции надо добавить и вычесть эти переменные (которые int)
И все равно - в интерфейсе города надо будет указать откуда пришло (или куда ушло) продовольствие... Сделать это можно будет в окне торговли.Код:iDifference = (getYieldRate(YIELD_FOOD) - foodConsumption()) - getSetFood() + getGetFood();
Программирование - это не то, что ты думаешь.... - Это то, что думает о тебе компьютер.
http://blacksun.civfanatics.ru
-------------------------------------------------
MTDG2 - [civ]christianity[/civ]Монархия
---------------------------------
Председатель CFR Awards 2007
---------------------------------
Председатель CFR Awards 2008
По поводу защищённых переменных int-типа - согласен. Не пойму зачем указатели?
Разве предполагается импортировать/экспортировать пищу только в/из одного города?
Надо детально обсудить СХЕМУ передачи по следующим пунктам:
1. можно ли одновременно экспортировать и импортировать? (мой вариант - нет, иначе бессмыслица получается)
2. модно ли одновременно (импортировать из)/(экспортировать в) несколько городов? (множественный импорт - да, экспорт - нет)
Если не нравится - предложите другую схему.
В моей схеме два указателя нас не спасут от переупорядочивания, поскольку doGrowth города-импортёра
должна быть обработана только после того, как сработают все doProduction городов-экспортёров.
Про интерфейс: надо будет сделать выбор из списка городов - куда экспортировать (для простоты реализации предлагаю
сделать возможным создавать только экспорт, а импорт в целевом городе - добавлять автоматически);
ну и все соответствующие изменения в отображении количества хлеба. [до всего этого ещё очень далеко]
Про процессы. Насколько я понял, обработка их осуществляется здесь (CvCity.cpp):
[code]
void CvCity:rocessProcess(ProcessTypes eProcess, int iChange)
{
Blacksun тоже обрисовывал мосты и писал код не вдаваясь в некоторые мелкие детали - я же ему говорил что юниты АИ не научены, что импровмент может расцениваться как дорога или торговый путь - поэтому по завершении разработки выяснилось что только юниты чловека бродят по мостам, а юниты АИ нет и пришлось ковыряться ещё - учить этому АИ - поэтому желательно хотябы оценивать возможность различных "подводных камней"Originally posted by Slow1112
(я так понимаю сейчас надо сделать примерный план действий, а для этого - обрисовать круг решаемых задач;
вот и обрисовываю, не вдаваясь в детали)
Не надо ошибаться насчет процессов:
<div class='quotetop'>Цитата</div>Если это описано в XML - то практически всегда это является классом (Искать моно начинать в CvInfo.cpp). Кстати что ты показал - это торговые пути для города (и окошко есть в экране города) И там показано сколько денег получается при торговле. Только теперь это будет не торговля, а передача пищи, поэтому придется написать свои ф-ции и постараться, чтобы они обрабатывались...(будет вместо символа денег - символ продовольствия...)CvInfos.cpp(14308):CvProcessInfo::CvProcessInfo() :[/b]
Программирование - это не то, что ты думаешь.... - Это то, что думает о тебе компьютер.
http://blacksun.civfanatics.ru
-------------------------------------------------
MTDG2 - [civ]christianity[/civ]Монархия
---------------------------------
Председатель CFR Awards 2007
---------------------------------
Председатель CFR Awards 2008
Да, насчёт класса ошибся. Только все объекты инфо-классов формируются на стадии загрузки игры (их поля считываются из XML) и в процессе не меняются. Нам же надо задавать у объекта характеристики динамически, в процессе игры. Может быть удастся эти данные запихать в структуру OrderData (CvStructs.h) если делать через процессы.
Что касается торговых путей, то они формируются непроизвольно, без участия игрока. И сделать тороговлю пищей аналогично торговле будет сложнее, чем через производство процессов. Зато можно будет и экспортировать пищу и производить что-то одновременно....
Что касается AI, то его можно будет потом запрограммировать, сначала саму фичу надо сделать.
Как тока VS 2003 найду буду экспериментировать.... 8-)
Эти переменные мона менять, надо только функцию написать. А так, если комп не сможет учитывать твои процессы передачи пищи, то города, которые ее передают, начнут голодать... Так что все в СДК - надо делать на своем месте...
Программирование - это не то, что ты думаешь.... - Это то, что думает о тебе компьютер.
http://blacksun.civfanatics.ru
-------------------------------------------------
MTDG2 - [civ]christianity[/civ]Монархия
---------------------------------
Председатель CFR Awards 2007
---------------------------------
Председатель CFR Awards 2008