+ Ответить в теме
Показано с 1 по 15 из 15

Тема: [SDK] Как помочь полярным городам

  1. #1
    Здравствуйте. Я в civ4 новичок. Хочу узнать у профессионалов, реализуема ли принципиально следующее изменение (дополнение):

    сделать в городе некоторую задачу (здание, проект, процесс), чтобы каждый ход передовать из данного города в другой какую-то долю от молотков/пищи - например, чтобы растить полярные города.

    В общем, это принципиально возможно (SDK, Python, XML) или нет?
    продвинь это сообщение в соцсеть:  

  2. #2
    <div class='quotetop'>Цитата(Slow1112 * 10.8.2006, 13:57) [snapback]115089[/snapback]</div>
    Здравствуйте. Я в civ4 новичок. Хочу узнать у профессионалов, реализуема ли принципиально следующее изменение (дополнение):

    сделать в городе некоторую задачу (здание, проект, процесс), чтобы каждый ход передовать из данного города в другой какую-то долю от молотков/пищи - например, чтобы растить полярные города.

    В общем, это принципиально возможно (SDK, Python, XML) или нет?
    [/b]
    Да, но на каком минимум уровне, не скажу. Помойму этот вопрос уже где-то на форуме обсуждался. Поищи.
    продвинь это сообщение в соцсеть:  

  3. #3
    Король Аватар для Blacksun


    Регистрация
    10.05.2006
    Адрес
    М.О. г. Раменское
    Сообщений
    1,873
    В принципе с помощью СДК возможно многое - но передавать пищу из города - это надо делать отдельное окно (а город и так весь забит окнами). Я хотел реализовать это немного по другому. Есть много тайлов - не принадлежащих городу. Если туда поставить (ну не знаю кого, крестьянина что ли или рабочего) и с помощью него передавать продукцию с тайла в город (город мона указать конкретно какой), то енто потянет. А вообще такая реализация идет на уровне СДК - Питон. В моем моде - для полярных городов сделан терраформ (преобразование местности).
    продвинь это сообщение в соцсеть:  
    Программирование - это не то, что ты думаешь.... - Это то, что думает о тебе компьютер.
    http://blacksun.civfanatics.ru
    -------------------------------------------------
    MTDG2 - [civ]christianity[/civ]Монархия
    ---------------------------------
    Председатель CFR Awards 2007
    ---------------------------------
    Председатель CFR Awards 2008

  4. #4
    <div class='quotetop'>Цитата</div>
    этот вопрос уже где-то на форуме обсуждался[/b]
    тут вроде
    http://forum.civfanatics.ru/index.php?showtopic=3787
    продвинь это сообщение в соцсеть:  

  5. #5
    0

    Рабочие, собирающие пищу, терраформинг, здания, дающие +XXX еды - это всё здорово, НО это - нагромождение новых сущностей, концепций. Просто хочется перераспределять ресурсы в игре между городами: чтобы при обсчёте хода от одного города xxx пищи отнималось и к другому прибавлялось.
    Сначала хотел сделать это через процессы - к трём существующим добавить ещё один. Но процессы оказались заточенными под конвертирование щитов в одном городе....

    Тут надо серьёзно в SDK копаться. Но пока даже не понятно, придётся ли модифицировать сущность "процесс", или вообще что-то новое создавать по типу процесса.
    Для этого надо, в свою очередь, хотя бы даталогическую модель SDK восстановить 8-). В общем - задача более чем серьёзная..... Хочу ей заняться.

    А по поводу отдельного окна - вовсе не объязательно. Также как, например, Research добавляем городу задание, при этом спрашиваем - куда пищу отдавать. Вот так в общих чертах хочеЦЦа...
    продвинь это сообщение в соцсеть:  

  6. #6
    Король Аватар для Blacksun


    Регистрация
    10.05.2006
    Адрес
    М.О. г. Раменское
    Сообщений
    1,873
    Вопрос первый - Ты программер ? (от ентого будем толкаца....)))))) (Тогда ты не будешь видеть - куды что идееет - если через Research...) Если нуна помощь - (зайди в личку - там - аська)
    продвинь это сообщение в соцсеть:  
    Программирование - это не то, что ты думаешь.... - Это то, что думает о тебе компьютер.
    http://blacksun.civfanatics.ru
    -------------------------------------------------
    MTDG2 - [civ]christianity[/civ]Монархия
    ---------------------------------
    Председатель CFR Awards 2007
    ---------------------------------
    Председатель CFR Awards 2008

  7. #7
    Так-то я программер. Специальность - ВМКСС - уже закончил. В питоне разбираюсь. В С++ - не очень.... Помощь наверняка потребуется от более продвинутых.
    продвинь это сообщение в соцсеть:  

  8. #8
    Король Аватар для Blacksun


    Регистрация
    10.05.2006
    Адрес
    М.О. г. Раменское
    Сообщений
    1,873
    Посмотри.....Помогу - всем, чем смогу... (кстати все СДК, или почти все) сделано - для Питона....
    продвинь это сообщение в соцсеть:  
    Программирование - это не то, что ты думаешь.... - Это то, что думает о тебе компьютер.
    http://blacksun.civfanatics.ru
    -------------------------------------------------
    MTDG2 - [civ]christianity[/civ]Монархия
    ---------------------------------
    Председатель CFR Awards 2007
    ---------------------------------
    Председатель CFR Awards 2008

  9. #9
    Буду здесь писать размышления по поводу реализации внутреннего перемешения пищи.
    Для начала нужно найти место, где расчитывается уровень производства пищи. Порядок вызова функций такой (все в классе CvCity): doTurn -> doGrowth -> foodDifference.

    [code]
    ===========================
    int CvCity::foodDifference(bool bBottom)
    {
    продвинь это сообщение в соцсеть:  

  10. #10
    Король Аватар для Blacksun


    Регистрация
    10.05.2006
    Адрес
    М.О. г. Раменское
    Сообщений
    1,873
    Slow1112 - у меня к тебе просьба. Отредактируй, пожалуйста свое сообщение. В верху редактора есть две кнопочки: 1. Сделать цитатой; 2. Код. Так вот ты нажми 2 кнопочку и помести весь код между "[сode][/сode]". (здесь указан тег с подмененной буквой на кириллическую - поэтому он и показывается как тег)

    И второе - просьба указывать файл - откуда ты это взял (легче искать будет) Заранее благодарен!

    А теперь по поводу. Если мы для города введем четыре переменные:
    Код:
    int m_aiSetFood;
    int m_aiGetFood;
    CvCity* m_pgsetCity;
    CvCity* m_pggetCity;
    (эти перем указать в классе CvCity - как protected; соответственно обработать их). Написать для них ф-ции. (подробно не буду, до дела дойдет все сделаем)
    То не придется переупорядовачивать города. Просто в функции надо добавить и вычесть эти переменные (которые int)

    Код:
    iDifference = (getYieldRate(YIELD_FOOD) - foodConsumption()) - getSetFood() + getGetFood();
    И все равно - в интерфейсе города надо будет указать откуда пришло (или куда ушло) продовольствие... Сделать это можно будет в окне торговли.
    продвинь это сообщение в соцсеть:  
    Программирование - это не то, что ты думаешь.... - Это то, что думает о тебе компьютер.
    http://blacksun.civfanatics.ru
    -------------------------------------------------
    MTDG2 - [civ]christianity[/civ]Монархия
    ---------------------------------
    Председатель CFR Awards 2007
    ---------------------------------
    Председатель CFR Awards 2008

  11. #11
    По поводу защищённых переменных int-типа - согласен. Не пойму зачем указатели?
    Разве предполагается импортировать/экспортировать пищу только в/из одного города?
    Надо детально обсудить СХЕМУ передачи по следующим пунктам:
    1. можно ли одновременно экспортировать и импортировать? (мой вариант - нет, иначе бессмыслица получается)
    2. модно ли одновременно (импортировать из)/(экспортировать в) несколько городов? (множественный импорт - да, экспорт - нет)
    Если не нравится - предложите другую схему.

    В моей схеме два указателя нас не спасут от переупорядочивания, поскольку doGrowth города-импортёра
    должна быть обработана только после того, как сработают все doProduction городов-экспортёров.

    Про интерфейс: надо будет сделать выбор из списка городов - куда экспортировать (для простоты реализации предлагаю
    сделать возможным создавать только экспорт, а импорт в целевом городе - добавлять автоматически);
    ну и все соответствующие изменения в отображении количества хлеба. [до всего этого ещё очень далеко]

    Про процессы. Насколько я понял, обработка их осуществляется здесь (CvCity.cpp):
    [code]
    void CvCity:rocessProcess(ProcessTypes eProcess, int iChange)
    {
    продвинь это сообщение в соцсеть:  

  12. #12
    Originally posted by Slow1112
    (я так понимаю сейчас надо сделать примерный план действий, а для этого - обрисовать круг решаемых задач;
    вот и обрисовываю, не вдаваясь в детали)
    Blacksun тоже обрисовывал мосты и писал код не вдаваясь в некоторые мелкие детали - я же ему говорил что юниты АИ не научены, что импровмент может расцениваться как дорога или торговый путь - поэтому по завершении разработки выяснилось что только юниты чловека бродят по мостам, а юниты АИ нет и пришлось ковыряться ещё - учить этому АИ - поэтому желательно хотябы оценивать возможность различных "подводных камней"
    продвинь это сообщение в соцсеть:  

  13. #13
    Король Аватар для Blacksun


    Регистрация
    10.05.2006
    Адрес
    М.О. г. Раменское
    Сообщений
    1,873
    Не надо ошибаться насчет процессов:
    <div class='quotetop'>Цитата</div>
    CvInfos.cpp(14308):CvProcessInfo::CvProcessInfo() :[/b]
    Если это описано в XML - то практически всегда это является классом (Искать моно начинать в CvInfo.cpp). Кстати что ты показал - это торговые пути для города (и окошко есть в экране города) И там показано сколько денег получается при торговле. Только теперь это будет не торговля, а передача пищи, поэтому придется написать свои ф-ции и постараться, чтобы они обрабатывались...(будет вместо символа денег - символ продовольствия...)
    продвинь это сообщение в соцсеть:  
    Программирование - это не то, что ты думаешь.... - Это то, что думает о тебе компьютер.
    http://blacksun.civfanatics.ru
    -------------------------------------------------
    MTDG2 - [civ]christianity[/civ]Монархия
    ---------------------------------
    Председатель CFR Awards 2007
    ---------------------------------
    Председатель CFR Awards 2008

  14. #14
    Да, насчёт класса ошибся. Только все объекты инфо-классов формируются на стадии загрузки игры (их поля считываются из XML) и в процессе не меняются. Нам же надо задавать у объекта характеристики динамически, в процессе игры. Может быть удастся эти данные запихать в структуру OrderData (CvStructs.h) если делать через процессы.


    Что касается торговых путей, то они формируются непроизвольно, без участия игрока. И сделать тороговлю пищей аналогично торговле будет сложнее, чем через производство процессов. Зато можно будет и экспортировать пищу и производить что-то одновременно....

    Что касается AI, то его можно будет потом запрограммировать, сначала саму фичу надо сделать.
    Как тока VS 2003 найду буду экспериментировать.... 8-)
    продвинь это сообщение в соцсеть:  

  15. #15
    Король Аватар для Blacksun


    Регистрация
    10.05.2006
    Адрес
    М.О. г. Раменское
    Сообщений
    1,873


    Эти переменные мона менять, надо только функцию написать. А так, если комп не сможет учитывать твои процессы передачи пищи, то города, которые ее передают, начнут голодать... Так что все в СДК - надо делать на своем месте...
    продвинь это сообщение в соцсеть:  
    Программирование - это не то, что ты думаешь.... - Это то, что думает о тебе компьютер.
    http://blacksun.civfanatics.ru
    -------------------------------------------------
    MTDG2 - [civ]christianity[/civ]Монархия
    ---------------------------------
    Председатель CFR Awards 2007
    ---------------------------------
    Председатель CFR Awards 2008

+ Ответить в теме

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
Рейтинг@Mail.ru

free counters