Кто может сделать (через питон или SDK) следующую привязку?:
Например существует такая эволюционная линия - хутор-->деревня-->село-->городок
я хотел бы создать такую линию - ферма-->ферма, но сделать к ней привязку терраформинга со следующими условиями:Или может кто встречал где подобный компонент?
- Если в момент эволюции под фермой находится пустыня - то клетка превращается в равнину
Это исторически верное действие, поскольку копты, шумеры и инки в свое время отвоевывали у пустынь плодородные земли, когда отводили оросительные каналы в пустыни и натаскивали туда плодородный грунт (например, нильский ил у коптов) со временем земли превращались в плодородные без дополнительных условий, кроме условия, что земля будет обрабатываться, а не будет заброшена на много лет- Если в момент эволюции под фермой были луга - то клетка превращается в равнину
Это тоже вполне естественная реакция истощения черноземных земель при интенсивном землепользовании - исторически за последние 100 лет на территории одного только США по статистике количество плодородных черноземных земель из-за интенсивного землепользования сократилось на 23%, среди которых около 2% вплоть до почти полного опустынивания
Сделай две фермы в XML. Одну из которых используй в питоне. Инструкция по тераморфингу на сайте есть. http://www.civfanatics.ru/forum/index.php?...mp;#entry306839
Если новые технологии позволяют обходится без услуг простых людей - это прогресс, а если новые технологии позволяют обходится без услуг миллионеров и крупных компаний - это нарушение авторских прав.
Мой мод
<div class='quotetop'>Цитата</div>Ты немного не понял чего я хочу.Сделай две фермы в XML. Одну из которых используй в питоне. Инструкция по тераморфингу на сайте есть. http://www.civfanatics.ru/forum/inde...p;#entry306839[/b]
В инструкции терраформинг привязан к действиям рабочих - сделано, что рабочий завершает действие и вместо N появляется M.
Здесь несколько иное действие должно происходить - ферма вырастает до чего-то, как например село до городка в обычных условиях и после этого остается та-же ферма (только счетчик роста обнуляется - но он и так обнуляется когда что-то во что-то переростает, пусть даже ферма в ту же самую ферму, а не во что-то иное), но при условии того, какая именно под ней находится территория происходит терраформирование. Как ситуация, так и скрипт несколько отличаются и скрипт получается немного посложнее, чем в инструкции.
Ну если предполагается рост только фермы,то решается всё довольно просто. Можно обойтись одним питоном. Вводим цепочку улучшений ферма - улучшенная ферма - плантация. В Cv.EventManager.py находим def onImprovementBuilt(self, argsList) и прописываем туда:
[code]if(iImprovement==gc.getInfoTypeForString('IMPROVEMENT_(улучшенная ферма))):
Интересная идея для заработка
Пашок - вроде как то, что надо, хотя не совсем уверен, что это к onImprovementBuilt() привязано - там всё же рост улучшения идет - случаем не какой нибудь bla_bla_ImprovementGrowth() или bla_bla_ImprovementEvolve() или что-то в этом роде?
Ну и по идее надо оставить ту же ферму - т.е. ферма грейдится - но так и остается такой-же фермой
<div class='quotetop'>Цитата(swan * 13.9.2009, 16:25) [snapback]306882[/snapback]</div>Относится всё правильно,в моём моде терраформинг так и осуществлён,так что всё работает. А ферма останется фермой,нужно ввести только два новых улучшения с такими же характеристиками,не меняя даже графику. Даже перевод названия можно не менять,как у меня сделано с фортами.Пашок - вроде как то, что надо, хотя не совсем уверен, что это к onImprovementBuilt() привязано - там всё же рост улучшения идет - случаем не какой нибудь bla_bla_ImprovementGrowth()?
Ну и по идее надо оставить ту же ферму - т.е. ферма грейдится - но так и остается такой-же фермой
[/b]
Интересная идея для заработка
Об этом как-то не подумал - забыл, что так тоже можно, хотя это имеет свои минусы - после апгрейда до некоего уровня она прекратит автоматом грейдится ибо цепочка прервется на определенном уровне, чего не надо. Хотя я представляю как можно зациклить. Но всё же терзают меня смутные сомнения, что onImprovementBuilt() относится к завершению действия рабочего, а не к завершению эволюции улучшения
<div class='quotetop'>Цитата(swan * 13.9.2009, 17:03) [snapback]306887[/snapback]</div>Делай,как я сказал,и ни о чём не думай .Об этом как-то не подумал - забыл, что так тоже можно, хотя это имеет свои минусы - после апгрейда до некоего уровня она прекратит автоматом грейдится ибо цепочка прервется на определенном уровне, чего не надо. Хотя я представляю как можно зациклить. Но всё же терзают меня смутные сомнения, что onImprovementBuilt() относится к завершению действия рабочего, а не к завершению эволюции улучшения
[/b]
Интересная идея для заработка
<div class='quotetop'>Цитата(swan * 13.9.2009, 19:38) [snapback]306901[/snapback]</div>А ты меня не уболтал. Что то тяжко там,наверное,пока голова другим занятаПашок. Уболтал. На днях поэкспериментирую
ЗЫ может таки посмотришь, чего можно поковырять, чтобы довести до ума компонент из соседней темы про зависимость производства спецов от числа торговых рейсов?
[/b]
Интересная идея для заработка
Жалко в Питоне нет такого же механизма просмотра файлов как в VS2003. А то давно бы Питон разобрал... Мож уже есть ? (Чтобы все файлы можно было бы видеть и редактировать из одного редактора, чтобы можно было производить поиск по всем файлам).
Программирование - это не то, что ты думаешь.... - Это то, что думает о тебе компьютер.
http://blacksun.civfanatics.ru
-------------------------------------------------
MTDG2 - [civ]christianity[/civ]Монархия
---------------------------------
Председатель CFR Awards 2007
---------------------------------
Председатель CFR Awards 2008
<div class='quotetop'>Цитата(Blacksun * 14.9.2009, 11:22) [snapback]306972[/snapback]</div>Notepad++ производит поиск по всем открытым в нем файлам. Я сам пользуюсь и другим советую.Жалко в Питоне нет такого же механизма просмотра файлов как в VS2003. А то давно бы Питон разобрал... Мож уже есть ? (Чтобы все файлы можно было бы видеть и редактировать из одного редактора, чтобы можно было производить поиск по всем файлам).[/b]
Если новые технологии позволяют обходится без услуг простых людей - это прогресс, а если новые технологии позволяют обходится без услуг миллионеров и крупных компаний - это нарушение авторских прав.
Мой мод
Спасибо! Скачал.
Программирование - это не то, что ты думаешь.... - Это то, что думает о тебе компьютер.
http://blacksun.civfanatics.ru
-------------------------------------------------
MTDG2 - [civ]christianity[/civ]Монархия
---------------------------------
Председатель CFR Awards 2007
---------------------------------
Председатель CFR Awards 2008
<div class='quotetop'>Цитата(swan * 13.9.2009, 19:38) [snapback]306901[/snapback]</div>Как поэксперементируешь не скажешь что вышло?Пашок. Уболтал. На днях поэкспериментирую
[/b]
А то есть мысль по росту улучшения сделать изменение feature, а принцип вроде бы там тот же...
Сомнения верны, этот блок относится к действию рабочего в данный момент.Originally posted by Swan
Но всё же терзают меня смутные сомнения, что onImprovementBuilt() относится к завершению действия рабочего, а не к завершению эволюции улучшения
Я поковыряюсь в Эволюции на днях, сейчас назрела пара идей, может что да выйдет
Не важно... что было сказано или написано... все это от незнания и неумения выбрать верное среди многого...
Мои взгляды на то какой должна быть глобальная стратегия
<div class='quotetop'>Цитата(Gesse * 23.9.2009, 23:19) [snapback]308149[/snapback]</div>Неа, не верны сомнения-)Сомнения верны, этот блок относится к действию рабочего в данный момент.
Я поковыряюсь в Эволюции на днях, сейчас назрела пара идей, может что да выйдет
[/b]
Я использовал (надо бы описать) рост лесов помимо прямого выращивания выращиванием через TreeFarm описав что через некоторое количество турнов использования импровемент меняется на импровемент прямого выращивания лесов- которое вызывает соответствующую функцию в питоне и леса вырастают.
Тут немного не то
Дело в том, что в здесь привязка же не к ходам, а к эволюции как таковой. Это не разовое действие, и не цикличное. т.е. у каждого тайла будет свой каунт времени (т.е. количество ходов), да и к тому же тут нужно каждый ход проверять, есть ли новые improvement типа фермы. Так же нужно чтобы у уже учтеных каунт времени не обновлялся при проверке тайлов.
И надо отвязатся от обрабатывания/необрабатывания клетки. Чтобы независимо было изменение.
Я просто сегодня вариант "TreeFarm" (в моем случае FarmEvent) уже пробывал, результат не порадовал пока
А по поводу onImprovementBuilt(), он отвечает за то что объект N заканчивает, действие H в месте М и появляется результат R.
Т.е. тут получается скрипт уже нужен дополнительный на каунт improvementпрописывать, который будет активироватся при появлении improvement и по истечению лимита ходов он активировал действие H в месте M.
И опять таки чтобы работало на всех improvement такого типа, нужно проверку каждый ход.
Не важно... что было сказано или написано... все это от незнания и неумения выбрать верное среди многого...
Мои взгляды на то какой должна быть глобальная стратегия
<div class='quotetop'>Цитата(Gesse * 24.9.2009, 12:39) [snapback]308227[/snapback]</div>Повторю ещё раз, функция onImprovementBuilt прекрасно работает при любом появлении нового импрувмента на клетке,не обязательно при строительстве. Всё это не пи...шь,а многократно проверенный опыт на своём собственном моде. Я так терраформинг осуществил. При эволюции улучшения происходит преобразование земли. вместо этого можно впихнуть любой код,который поймёт питон.Тут немного не то
Дело в том, что в здесь привязка же не к ходам, а к эволюции как таковой. Это не разовое действие, и не цикличное. т.е. у каждого тайла будет свой каунт времени (т.е. количество ходов), да и к тому же тут нужно каждый ход проверять, есть ли новые improvement типа фермы. Так же нужно чтобы у уже учтеных каунт времени не обновлялся при проверке тайлов.
И надо отвязатся от обрабатывания/необрабатывания клетки. Чтобы независимо было изменение.
Я просто сегодня вариант "TreeFarm" (в моем случае FarmEvent) уже пробывал, результат не порадовал пока
А по поводу onImprovementBuilt(), он отвечает за то что объект N заканчивает, действие H в месте М и появляется результат R.
Т.е. тут получается скрипт уже нужен дополнительный на каунт improvementпрописывать, который будет активироватся при появлении improvement и по истечению лимита ходов он активировал действие H в месте M.
И опять таки чтобы работало на всех improvement такого типа, нужно проверку каждый ход.
[/b]
Интересная идея для заработка
<div class='quotetop'>Цитата</div>Ну возможно, это так и есть, просто когда я прописывал изменения типа улучшения, при изменении обьекта, срабатывало это только если действие активировать, т.е. задествовать рабочего или событие типа label.Повторю ещё раз, функция onImprovementBuilt прекрасно работает при любом появлении нового импрувмента на клетке,не обязательно при строительстве.[/b]
И осуществлялось это не повсеместно и одновременно, а в каждом конкретном месте где было инициировано действие. Т.е. после окончания дествия, дальнейших измений не происходило более, пока снова не иницировалось дейстивие.
Не важно... что было сказано или написано... все это от незнания и неумения выбрать верное среди многого...
Мои взгляды на то какой должна быть глобальная стратегия
Возможно,ты где то ошибся в коде. Я проиллюстрирую на примере эволюции дома в поселение(hamlet):
[code]def onImprovementBuilt(self, argsList):
Интересная идея для заработка