PDA

Просмотр полной версии : Описание моддинга случайных событий



swan
12.01.2008, 16:51
Пока статья на стадии перевода, поэтому пока-что не полностью ибо статья очень огромна - если есть желание помочь с переводом при хотя-бы минимальных познаниях в языках программирования - стучитесь ко мне в аську - буду рад любой помощи
По многочисленным просьбам "телезрителей" ;) выкладываю хотя-бы в том виде, насколько уже переведено
Вопросы по теме можно задавать уже сейчас

<div align="center">Civ4EventInfos.xml

<blockquote>
Assets\XML\Events\Civ4EventInfos.xml - основной файл, описывающий все события в игре. Данный раздел описывает все теги этого файла и объясняет их значения.

Type - идентификатор типа эвента. Имеет вид EVENT_NAME

Description - идентификатор вхождения текстового массива, содержащего описание события. Обычно имеет форму TXT_KEY_EVENT_NAME. Описание текстовых значений по умолчанию может быть обнаружено в Assets\XML\Text\Civ4GameText_Events_BTS.xml (хотя по данному пути может быть любой другой файл с произвольным именем, куда можно записать текстовое значение данного вхождения - прим. пер.).

LocalInfoText - идентификатор вхождения текстовой строки (если требуется) которая будет отображаться у других игроков, которых затрагивает данное событие.

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

OtherPlayerPopup - определяет вхождение текста (если требуется), который будет высвечиваться другому игроку, которого затрагивает данный эвент. В Civ4: Beyond the Sword используется для эвента про партизан.

QuestFailText - определяет вхождение текста, отображаемого при провале квеста. Очевидно используется для квестов.

bQuest - может иметь значение 0 или 1. При значении равном 1 определяет, что эвент является квестом.

bGlobal - может иметь значение 0 или 1. Значение равное 1 означает, что эвент относится ко всем игрокам. Это используется для эвентов, завершающих квест для каждого игрока.

bTeam - может иметь значение 0 или 1. Значение равное 1 означает, что эвент относится ко всем игрокам в команде (team_n, например при вечном союзе (permanent alliance) - прим. пер.). Это не используется в эвентах оригинальной Civ4: BtS.

bPickCity - может иметь значение 0 или 1. Значение 1 показывает, что эвент произойдет в том городе игрока, в котором он был инициирован.

bPickOtherPlayerCity - может иметь значение 0 или 1. Значение 1 показывает, что событие влияет на иностранный город. Например вы можете задать выбор расхода очков шпионажа, чтобы ухудшить эффекты эвента, имеющего дело с иностранным городом. Используя в связке с bPickCity создает эвент влияющий на город игрока и город оппонента. Эвент голода является одним из примеров такой связки в BtS.

bDeclareWar - может принимать значения 0 или 1. Значение 1 указывает на обявление войны между игроком, которого затрагивает данный эвент и другим игроком.

iGold - числовое значение. Определяет базовую сумму золота, которую получает игрок, которого затрагивает данный эвент. При отрицательном значении игрок теряет золото. Может также дополнительно повлиять на другого игрока. См. ниже.

bGoldToPlayer - принимает значение 0 или 1. Работает в связке с iGold. При значении равном 1 величина iGold будет передана другому игроку. Поскольку это требует другого игрока, то это полезно только для событий, которые включают другого игрока

iRandomGold - числовое значение. Определяет максимальный уровень рандома дополнительной суммы золота, которое будет добавлено к iGold, чтобы определить общую сумму золота.

iCulture - числовое значение. Определяет объем культуры которая добавится к городу. Полезно только для эвентов, определяемых на конкретный город.

iEspionagePoints - числовое значение. Определяет сумму очков шпионажа против некоего игрока, которого затрагивает данный эвент.

bGoldenAge - может иметь значение 0 или 1. При значении 1 запускает золотой век у нации, которую затрагивает данный эвент.

iFreeUnitSupport - числовое значение. Определяет количество юнитов, которые будут содержаться бесплатно.

iInflationMod - числовое значение. Опрделяет насколько может измениться инфляция у игрока, которого затрагивает данное событие.

iSpaceProductionMod - числовое значение. Определяет изменение количества молотков, которое изменит производство игрока к созданию частей космического корабля. Например значение 10 добавит 10% молотков к созданию данной части корабля.

Tech - идентификатор технологии. NONE - если нет. Если определено - то указывает на технологию, к которой произойдет изменение количества колбочек

TechFlavors - если не пусто, то содержит один или более технологических флэворов (FLAVOR - прим. пер.). Важен в событиях, которые позволяют приблизиться к открытию технологии. Например FLAVOR_RELIGION равное 1 означает, что вы более вероятно приблизитесь к открытию религиозной технологии. Структура субтегов выглядит следующим образом:

[code]

swan
16.01.2008, 12:27
[SIZE=2]Civ4EventTriggerInfos.xml</span>

Кроме эвентов существуют триггеры. Они описаны в Assets\XML\Events\Civ4EventTriggerInfos.xml. в сущности каждый триггер является набором условий. Если все эти условия являются истинными, тогда события, связанные с данным тригером могут произойти (некоторые события имеют дополнительные обращения к Питону, подробнее об этом в разделе о Питоне). События, которые связаны с триггером также описываются в данном файле. Достаточно предсказуемо, что класс триггеров в SDK - это CvEventTriggerInfo.
Ниже идет перечисление тегов, описывающих триггеры.

<blockquote>

Type - это идентификатор триггера. Имеет следующий вид EVENTTRIGGER_NAME.

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

TriggerTexts - идентификаторы текстовых строк, которые могут быть определены для дополнительных сообщений триггера, например в связке с эрой:
[code]

swan
10.05.2008, 12:32
Reserved

Пет
10.05.2008, 12:44
резёрвед

swan
10.05.2008, 12:45
Reserved

Хальк Юсдаль
06.03.2009, 01:37
А поконкретнее можно узнать, что случилось с продолжением? Что за напасть напала и унесла эти знания во мглу невежества?

NeverMind
06.03.2009, 11:17
Основная часть статьи переведена. "Во мглу невежества" ничего не унесено, всегда можно посмотреть оригинальную статью на их-фанатиках (ссылка в шапке).

Leffet
01.05.2009, 18:24
Решил создать событие, распространение технологий... свободное =)
Данный триггер должен срабатывать когда один из игроков разрабатывает технологию письменности, но собака не работает... целый день с ним мучился.. может есть какой-то мелкий недочет, который я не могу обнаружить, посмотрите пожалуйста свежим взглядом.

Триггер следующего содержания:

<EventTriggerInfo>
<Type>EVENTTRIGGER_EVENT_WRITING</Type>
<WorldNewsTexts/>
<TriggerTexts>
<TriggerText>
<Text>TXT_KEY_EVENT_TRIGGER_WRITTING</Text>
<Era>NONE</Era>
</TriggerText>
</TriggerTexts>
<bSinglePlayer>0</bSinglePlayer> // не только для одиночной игры (не сказывается пробывал и 0 и 1)
<iPercentGamesActive>100</iPercentGamesActive> // точно будет в каждой игре
<iWeight>-1</iWeight> // произойдет как только будут выполнены все условия
<bProbabilityUnitMultiply>0</bProbabilityUnitMultiply>
<bProbabilityBuildingMultiply>0</bProbabilityBuildingMultiply>
<Civic>NONE</Civic>
<iMinTreasury>0</iMinTreasury>
<iMinPopulation>0</iMinPopulation>
<iMaxPopulation>0</iMaxPopulation>
<iMinMapLandmass>0</iMinMapLandmass>
<iMinOurLandmass>0</iMinOurLandmass>
<iMaxOurLandmass>-1</iMaxOurLandmass>
<MinDifficulty>NONE</MinDifficulty>
<iAngry>0</iAngry>
<iUnhealthy>0</iUnhealthy>
<UnitsRequired/>
<iNumUnits>0</iNumUnits>
<iNumUnitsGlobal>0</iNumUnitsGlobal>
<iUnitDamagedWeight>0</iUnitDamagedWeight>
<iUnitDistanceWeight>0</iUnitDistanceWeight>
<iUnitExperienceWeight>0</iUnitExperienceWeight>
<bUnitsOnPlot>0</bUnitsOnPlot>
<BuildingsRequired/>
<iNumBuildings>0</iNumBuildings>
<iNumBuildingsGlobal>0</iNumBuildingsGlobal>
<iNumPlotsRequired>0</iNumPlotsRequired>
<bOwnPlot>0</bOwnPlot>
<iPlotType>-1</iPlotType>
<FeaturesRequired/>
<TerrainsRequired/>
<ImprovementsRequired/>
<BonusesRequired/>
<RoutesRequired/>
<ReligionsRequired/>
<iNumReligions>0</iNumReligions>
<CorporationsRequired/>
<iNumCorporations>0</iNumCorporations>
<bPickReligion>0</bPickReligion>
<bStateReligion>0</bStateReligion>
<bHolyCity>0</bHolyCity>
<bPickCorporation>0</bPickCorporation>
<bHeadquarters>0</bHeadquarters>
<Events> // эвенты которые будут предложены как условия
<Event>EVENT_LE_GET_TECH_WRITING</Event>
<Event>EVENT_LE_NO_TECH_WRITING</Event>
</Events>
<PrereqEvents/>
<bPrereqEventPlot>0</bPrereqEventPlot>
<OrPreReqs/>
<AndPreReqs/>
<ObsoleteTechs/> // здесь пробовал задавать письменность, чтобы если есть уже не происходило, потом убрал, разницы опять же никакой...
<bRecurring>1</bRecurring> // повторение
<bTeam>0</bTeam>
<bGlobal>0</bGlobal>
<bPickPlayer>1</bPickPlayer> // в описание этого параметра говорится, что он отвечает что для спуска триггера должны быть выполнены условия у другого игрока, ставим 1.
<bOtherPlayerWar>0</bOtherPlayerWar> // война..
<bOtherPlayerHasReligion>0</bOtherPlayerHasReligion> // религия.....
<bOtherPlayerHasOtherReligion>0</bOtherPlayerHasOtherReligion>
<bOtherPlayerAI>0</bOtherPlayerAI> // другой игрок должен быть ИИ, мне кажется что тут имеется ввиду может быть ИИ, а не должен быть, хотя в оригинале must. Пробовал и 1 и 0
<iOtherPlayerShareBorders>1</iOtherPlayerShareBorders> // соприкосновение границ в интежере чтобы показать минимальное количество соприкосновения.
<OtherPlayerHasTech>TECH_WRITING</OtherPlayerHasTech> //и наконец наличие технологии у другого игрока.
<bPickCity>0</bPickCity>
<bPickOtherPlayerCity>0</bPickOtherPlayerCity>
<bShowPlot>0</bShowPlot>
<iCityFoodWeight>0</iCityFoodWeight>
<PythonCanDo/>
<PythonCanDoCity/>
<PythonCanDoUnit/>
<PythonCallback/>
</EventTriggerInfo>

NeverMind
02.05.2009, 15:47
В триггере очевидных ошибок не вижу, но надо смотреть и сами события, иначе не разберешься. А лучше - прикрепить файлы с этим событием.

Leffet
02.05.2009, 16:04
NeverMind, разве события могут влиять как-то на триггер? они же вообще просматриваются когда уже механизм запущен, ну кроме очевидных ошибок, скажем так грамматических, цивилизация пропустит...

Просто по идее ведь должен происходит спуск триггера при получение соседом технологии письменности? Может быть там имеется что-то иное, или... вообщем не знаю...
файл, сейчас чуть позже прикреплю.

Arcani
14.06.2009, 03:28
<div class='quotetop'>Цитата(leffet * 2.5.2009, 16:04) 286955</div>

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

Просто по идее ведь должен происходит спуск триггера при получение соседом технологии письменности? Может быть там имеется что-то иное, или... вообщем не знаю...
файл, сейчас чуть позже прикреплю.
[/b]

Тоже замучался с этим. события в которых должны давать плюс к технологиям - вообще не запускаются.

NeverMind
06.07.2009, 14:35
Originally posted by arcani
Начал делать мод и столкнулся с проблемкой. Многое из того что хочется реализовать нужно думается мне делать через события. Идея такова что технологию, которая дает религию изучить напрямую практически нельзя. Но случайные события, постройка некоторых зданий, юнитов и изучение некоторых технологий дают какое-то количество колб к технологии которая дает нужную религию.
Сделал событие, хочу ради проверки чтобы оно срабатывало сразу как игрок начинает игру. А оно не срабатывает. Что я делаю не так?
Возможно, дело в том, что случайные события в игре начинаются не раньше 20-го хода. Это задается тегом FIRST_EVENT_DELAY_TURNS в GlobalDefines (http://modiki.civfanatics.ru/index.php/GlobalDefines).

PS. Извиняюсь за задержку с ответом. По вопросам моддинга лучше писать на форум.

XПавеЛX
04.08.2009, 20:31
<div class='quotetop'>Цитата(leffet * 1.5.2009, 20:24) 286915</div>

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

Триггер следующего содержания [/b]

Попробуй здесь
<iWeight>2000</iWeight>