использовать не стандартную dll (например RevDCM), но там нельзя задать когда именно появляться должны... ну или написать свою dll, в которой можно будет задавать... или делать события в питоне....
если что-то из того что написано понял, то спрашивай, если нет... то тогда ответ - ни как ))
Наверное легче всего в питоне прописать? я в Rhye’s and Fall и других модах пытался разобраться,но не смог найти где и что.Я так понял,там надо создать свой файл и прописать что-то,но вот что? Вот допустим в Greek World че-то похожее нашел:
if (iGameTurn == self.iSpawnTurn) and (iGameTurn >= 30):
#Germanic spawn
tTopLeft = (24, 53)
tBottomRight = (41, 70)
dummy, plotList = self.squareSearch( tTopLeft, tBottomRight, self.outerSpawn, [] )
rndNum = gc.getGame().getSorenRandNum(len(plotList), 'Greek World - Germanic tribes')
result = plotList[rndNum]
if (result):
self.makeUnit(iAxeman, iGermanic, result, 4)
self.makeUnit(iArcher, iGermanic, result, 2)
self.makeUnit(iSettler, iGermanic, result, 1)
self.makeUnit(iWorker, iGermanic, result, 1)
А как это воспроизвети для себя - без понятия)
Snake_B привет, и всем тоже привет , кто подскажет ...
(Играю в редфорс всем доволен поэтому и не показываюсь у тебя в ветке ... )
возник вопрос - в стандартных настройках устанавливается эпоха старта ... а вот эпоха "финиша" развития идет безлимитно .. грубо говоря как сделать так что бы цивилизации развивались только до средних веков. или до новейшего времени ... есть решение не слишком сложное?
вот тут посмотри:
http://www.civfanatics.ru/threads/4545-Era-Stopper
оно под DTS 3.13, но думаю и под 3,19 пойдет...
Здравствуйте. У меня вопрос: как можно сделать так, чтобы при тренировке юнита в городе на 1 уменьшалось население? И возможно ли как-нибудь сделать так, чтобы каждому юниту изначально рандомно генерировалось имя из списка имён и фамилий (как вариант слогов)? При этом, конечно, желательно запретить менять имя игроку.
Торбейн, можешь почитать с этого моего поста
Правда, там все сбилось после перехода на новый форумный движок
Но процитирую со старого форума:
В питоне делается так:
Открой файл Assets\Python\CvEventManager.py
Найди в нем def onUnitBuilt(self, argsList):
и добавь
чтоб получилосьКод:if unit.getUnitType() == gc.getInfoTypeForString('UNIT_WORKER'): city.changePopulation(-1)
UNIT_WORKER - это рабочий. То есть, если построишь рабочего - население города должно уменьшится. Если пропишешь UNIT_SETTLER то будет работать для поселенца и т.д.Код:def onUnitBuilt(self, argsList): 'Unit Completed' city = argsList[0] unit = argsList[1] player = PyPlayer(city.getOwner()) CvAdvisorUtils.unitBuiltFeats(city, unit) #change begin if unit.getUnitType() == gc.getInfoTypeForString('UNIT_WORKER'): city.changePopulation(-1) #change end if (not self.__LOG_UNITBUILD): return CvUtil.pyPrint('%s was finished by Player %d Civilization %s' %(PyInfo.UnitInfo(unit.getUnitType()).getDescription(), player.getID(), player.getCivilizationName()))
Эти названия берутся из файла Assets\XML\Units\CIV4UnitInfos.xml
Я так поняла, если хочешь, чтоб население уменьшалось при постройке ЛЮБОГО юнита, то не надо проверять условие, скорее всего достаточно будет просто строки
Но с этого моего поста все же почитай, там есть много интересных моментовКод:city.changePopulation(-1)![]()
Sungirl, спасибо большоеНет, проверять тип юнита скорее всего придётся, но условием, видимо, будет неравность скауту и исследователю. С постом с удовольствием ознакомлюсь.
А что касается переименовки юнитов, это, кажется, будет не так просто? Есть какая-нибудь функция, которая задавала бы новоиспечённому молодцу name?
P.S. Мда. А вроде и поиском пользовался и гуглил, да и тему листал. Такой я невнимательный.
Народ, подскажите, мб кто знает...
1. Хочу сделать спутник-шпион для которого строится проект. Добавить кнопку на панель еще не самое сложное, как оказалось. Проблема в подсветке области. Как подсветку на сделать в DLL?
2. Как сделать, чтобы Манхеттен позволял строить ядерное оружие только тому, у кого он создан? Иными словами, чтобы каждый строил. В XML сменить не проблема, но постройка-то все равно всем разрешается.
3. Где же все-таки нарастает стоимость поселенца при позднем старте - так и не нашел....
1)
CvPlot::changeAdjacentSight(TeamTypes eTeam, int iRange, bool bIncrement, CvUnit* pUnit, bool bUpdatePlotGroups)
eTeam - комманда-разведыватель
iRange - радиус разведываемой области
bIncrement - если true, делаем область видимой. если false - то невидимой.
pUnit - юнит-разведчик (в твоем случае NULL)
bUpdatePlotGroups - нужно ли перерасчитовать торговые пути (в твоем случае false)
2)
В XML:
В CIV4ProjectInfo.xml и CIV4GameInfoSchema.xml по аналогии с bAllowsNukes надо добавить bTeamNukes
B SDK:
B CvInfos.h и CvInfos.cpp для проэктов CvProjectInfo сделай то же самое
B CvGame.h и CvGame.cpp создай указатель на массив bool m_abTeamNukesValid размером MAX_TEAMS (по аналогии с int m_aiRankTeam). И создай функции для работы с этим массивом:
bool isTeamNukesValid(TeamTypes eTeam) const
void makeTeamNukesValid(TeamTypes eTeam, bool bValid = true)
Вставь эти функции в нужные места возле соответствующих им функций isNukesValid и makeNukesValid в CvTeam::changeProjectCount и CvPlayer::canTrain
Если новые технологии позволяют обходится без услуг простых людей - это прогресс, а если новые технологии позволяют обходится без услуг миллионеров и крупных компаний - это нарушение авторских прав.
Мой мод
Можно ли сделать, чтобы при исследовании определенной технологии, юниты сразу получали нужную прокачку? Если да, то как.
Дело в том, что хотелось бы довести до ума идею из Final Frontier (и модах на его основе). Ведь не логично, что корабль получает новую броню или оружие за счёт опыта, а не технологического развития.
Народ, еще один вопрос: захотел сделать для авианосцев учет по весу самолета.
Переписал 2 строчки в функции setTransportUnit:
Вместо
pOldTransportUnit->changeCargo(-1);
сделал
if (getDomainType() == DOMAIN_AIR && airBaseCombatStr() != 0) {
pTransportUnit->changeCargo(-m_pUnitInfo->getAirUnitCap());
} else {
pTransportUnit->changeCargo(-1);
}
И вместо
pTransportUnit->changeCargo(1);
сделал
if (getDomainType() == DOMAIN_AIR && airBaseCombatStr() != 0) {
pTransportUnit->changeCargo(m_pUnitInfo->getAirUnitCap());
} else {
pTransportUnit->changeCargo(1);
}
Теперь в машину загружаю пехов (сделано как с ракетами через спецюнит), а при выгрузке вылет. И вообще зачастую при выгрузке игра вылетает. Мб кто знает, в чем дело?
В ближайшее время нет.Только в SDKпочитай тут
http://www.civfanatics.ru/threads/76...ом-ходу
Последний раз редактировалось NeseryozniyVET; 09.05.2012 в 20:19.
Если новые технологии позволяют обходится без услуг простых людей - это прогресс, а если новые технологии позволяют обходится без услуг миллионеров и крупных компаний - это нарушение авторских прав.
Мой мод
Народ, извините, если надоел. Мой мод почти готов. Осталось немногое: интерфейс для сканирования местности спутником-шпионом. Я думал добавить кнопку под кнопку шпионажа, только добавив тип кнопки CONTROL_SCAN. Добавил в два места, где встречались эти "контролы" в функции canDoControl и doControl в классе cvGameInterface. Проверил: у меня уже на этапе генерации карты вылетает в ошибку.
Я в верном направлении двигаюсь? Мб где есть тема, посвящённая созданию функциональных кнопок?
Код (функции в отдельности работают - проверено туповызовом при doTurn):
CvMainInterface.py --------------------------------------
...
ePlayer = gc.getGame().getActivePlayer()
if gc.getTeam(gc.getPlayer(ePlayer).getTeam()).IsSateliteScanValid():
iBtnY += iBtnAdvance
screen.setImageButton( "EspionageAdvisorButton", "", iBtnX, iBtnY, iBtnWidth, iBtnWidth, WidgetTypes.WIDGET_ACTION, gc.getControlInfo(ControlTypes.CONTROL_SCAN).getActionInfoIndex(), -1 )
screen.setStyle( "EspionageAdvisorButton", "Button_HUDAdvisorEspionage_Style" )
screen.hide( "EspionageAdvisorButton" )
....
------------------------------
void CvGame::doControl(ControlTypes eControl) {
...
case CONTROL_SCAN:
// Igor ACTION
eTeam = getActiveTeam();
if (eTeam == NO_TEAM) {
pPlot = GC.getMapINLINE().plotSorenINLINE(10, 10);
GET_TEAM(eTeam).SateliteScan(pPlot);
}
break;
...
----------------------------------------
bool CvGame::canDoControl(ControlTypes eControl) const {
....
case CONTROL_SCAN:
return true; // временно, вставить IsSateliteScanValid...
break;
....