Geremande 2,684 22.02.2013, 07:43:51 Поделиться #1 22.02.2013, 07:43:51 Моддинг Тропико 4 возможен. И если разобраться в исходниках, написанных на языке Lua, то мод можно написать за 10 минут. Для это понадобится знание языка Lua, лучше всего его учить уже когда знаешь какой-нибудь другой язык. Pascal, PHP, C++ - не важно, ведь переменные, условные операторы, циклы и др. уже должны быть вам известны. Документация по Lua находится Войдите или зарегистрируйтесь, чтобы увидеть скрытое содержимое. и Войдите или зарегистрируйтесь, чтобы увидеть скрытое содержимое. . Уделите изучению этого языка час и вы сможете понимать декомпилированные файлы .lua. 1. Для начала Войдите или зарегистрируйтесь, чтобы увидеть скрытое содержимое. последнюю версию HPK Archiver (для запуска требуется .NET Framework). Лично я запускал HPK Archiver с правами администратора, ибо без них программа вылетала. Для удобства перемещаем его в папку Тропико 4 (C:\Program Files (x86)\Tropico 4) 2. Скачиваем iGOLua (Войдите или зарегистрируйтесь, чтобы увидеть скрытое содержимое. ) или другой декомпилятор Lua. В качестве компилятора будем использовать Войдите или зарегистрируйтесь, чтобы увидеть скрытое содержимое. . Сохраняем его, например в документы. Для компиляции уже готового скрипта: открываем командную строку и пишем <адрес директории, где расположен luac.exe> luac -o <полный адрес файла .lua, в который скрипт будет скомпилирован>.lua <адрес скрипта>.luad 3. С помощью HPK Archiver распаковываем файл Game.hpk (\Tropico 4\Packs\boot\persist\Game.hpk) в новую папку. 5. С помощью iGOLua декомпилируем lua файлы. Получаем файл .luad - его открываем блокнотом и изучаем. 6. Пишем мод Разберем простой указ Распаковываем EdictEconomy.lua Войдите или зарегистрируйтесь, чтобы увидеть скрытое содержимое. Это указ "разрешение на строительство". Все это - массив (он заключен в скобки {}). __parents, id, display_name и др. - это "ключи" массива. {"Edict"}, "SpecialBuildingPermit", "[[11599][building Permit][]]" - значения ключей массива. Нетрудно догадаться, что description это описание указа. В ключах init и done объявляется функция self, в которой вызываются функции SetModifier, RemoveEdictFromQueue и др. Войдите или зарегистрируйтесь, чтобы увидеть скрытое содержимое. Эти строчки кода уменьшают уважение интеллектуалов Войдите или зарегистрируйтесь, чтобы увидеть скрытое содержимое. Эта строчка отвечает за увеличение стоимости всех построек на 20% Войдите или зарегистрируйтесь, чтобы увидеть скрытое содержимое. Это строчка кода переводит 10% от стоимости строения на счет в швейцарский банк Войдите или зарегистрируйтесь, чтобы увидеть скрытое содержимое. Эти строчки кода отвечают за отмену указа. Получается, в игре существует собственные функции, зарезервированные переменные, значения ("intellectuals", "Constructions") и др. А это значит, что для создания мода нужно это все изучить. Хотя, таким же методом научного "тыка" можно изменять числа - например, начислять на счет в банк все 20% от стоимости постройки: Войдите или зарегистрируйтесь, чтобы увидеть скрытое содержимое. Уже отсюда можно выделить немало интересных вещей, например ключ __parents отвечает за то, что в итоге получится из переменной - например {"Edict"} (указ). display_name содержит название этого указа. Цифра, указанная до него - это id строки, который будет искать игра в файлах локализации, если установлен не английский язык. rollover - описание указа. description - это тоже описание. Вероятно, оно отображается в отдельном окне. icon - иконка указа. Она запакована в тот же файл Game.hpk. switch отвечает за активность указа(?). Наверное, если указать false, то нужны будут специальные инструкции, когда он обратится в true. minister - необходимый для указа министр. Init - то, что происходит после издания указа, Done - после отмены. Самое сложное начинается сейчас. Для создания мода потребуется написать собственные скрипты lua и заархивировать их в .hpk в папку %Tropico4DIR%/Packs. Этот аспект будет рассмотрен в следующем уроке. Изменено 20.03.2013, 10:52:48 пользователем Leoparde77 Цитата Ссылка на комментарий
Geremande 2,684 25.02.2013, 05:36:29 Автор Поделиться #2 25.02.2013, 05:36:29 Задача усложняется При компиляции скрипта в lua и папки в архив hpk никаких изменений в игре нет Придется посидеть, подумать, что у них за движок такой корявый. Кстати, еще половина файлов не компилируется, самый популярный тип ошибки: LuaDec: [string "Edict.luad"]:98: unexpected symbol near '{' Изменено 25.02.2013, 05:37:50 пользователем Leoparde77 Цитата Ссылка на комментарий
Geremande 2,684 25.02.2013, 09:01:10 Автор Поделиться #3 25.02.2013, 09:01:10 Решил проблему - lua скрипт должен находится в папке ex hpk архив в папке Packs. Следовательно, все то, что выше - не актуально. Для моддинга необходимо лишь знание языка Lua, компилятор .lua и архиватор .hpk Цитата Ссылка на комментарий
Freezze 1,445 25.02.2013, 09:25:31 Поделиться #4 25.02.2013, 09:25:31 Если хотите, можно организовать гильдию мододелов Тропико, которая займется изучением исходников Тропико, а после напишет для вас новую модифицакию (если, конечно, изучим). Предлагаю это обсудить, не зря же тему создал. Гильдия мододелов Тропико - это здорово, но, мне кажется, сначала надо найти единомышленников и/или собрать материал. Насчет Луа это здорово. Когда-то пытался в этом языке разобраться. Документация была только на английском и десяток "полухалтурных" статей. Цитата Ссылка на комментарий
Geremande 2,684 25.02.2013, 09:31:47 Автор Поделиться #5 25.02.2013, 09:31:47 Гильдия мододелов Тропико - это здорово, но, мне кажется, сначала надо найти единомышленников и/или собрать материал.Насчет Луа это здорово. Когда-то пытался в этом языке разобраться. Документация была только на английском и десяток "полухалтурных" статей. Да никто даже этот раздел не посещает А насчет Lua... Он очень легкий. Если вы знаете какой-либо другой язык, Lua вам дастся без особых проблем. Смотрите: Войдите или зарегистрируйтесь, чтобы увидеть скрытое содержимое. Вот расшифровка кода выше Войдите или зарегистрируйтесь, чтобы увидеть скрытое содержимое. Даже легче, чем паскаль. И толк от Lua есть. Изменено 25.02.2013, 09:32:44 пользователем Leoparde77 Цитата Ссылка на комментарий
Freezze 1,445 25.02.2013, 10:30:16 Поделиться #6 25.02.2013, 10:30:16 Да никто даже этот раздел не посещает Ура!!! Я мистер Никто. )))) (шутка) Естественно не посещает. Надеюсь, пока не посещает. Отдача однозначно будет, поверь мне. Так что работай. А насчет Lua... Он очень легкий. Если вы знаете какой-либо другой язык, Lua вам дастся без особых проблем. Смотрите: Я понимаю что он достаточно легкий как и все скриптовые языки. (Я программист ) Цитата Ссылка на комментарий
Geremande 2,684 25.02.2013, 10:44:27 Автор Поделиться #7 25.02.2013, 10:44:27 Надеюсь, пока не посещает. Отдача однозначно будет, поверь мне. Так что работай. Ок. В данных момент пишу документацию по моддингу, что бы в голове отложилось, что и как. Я понимаю что он достаточно легкий как и все скриптовые языки. (Я программист ) На каком языке программируешь, если не секрет? Цитата Ссылка на комментарий
Freezze 1,445 25.02.2013, 10:54:45 Поделиться #8 25.02.2013, 10:54:45 На каком языке программируешь, если не секрет? Давным-давно был Pascal. Сейчас C#. Цитата Ссылка на комментарий
Geremande 2,684 25.02.2013, 11:00:52 Автор Поделиться #9 25.02.2013, 11:00:52 Давным-давно был Pascal. Сейчас C#. Я тоже хотел учить .net языки, но выбрал Си. Цитата Ссылка на комментарий
Geremande 2,684 20.03.2013, 10:51:13 Автор Поделиться #10 20.03.2013, 10:51:13 Обновил шапку. Вскоре допишу мануал. Изменено 20.03.2013, 10:51:28 пользователем Leoparde77 Цитата Ссылка на комментарий
Kassatka 1,842 23.08.2013, 16:11:20 Поделиться #11 23.08.2013, 16:11:20 Класс, может хоть моддингом можно будет реализовать то, что через редактор не выходит. В редакторе сценариев есть очень полезные события (пусть и не на все случаи жизни). Что меня больше всего убивает в этом редакторе - вместо обычного в любом программировании Если(в текущий момент) Флаг То Событие принята другая логика Как только (с текущего момента и до конца игры) Флаг То Событие Особенно вредоносно это для окон выбора нашим эль-президенте одного из 2-4 вариантов событий. Классический редактор: 01.01.1962: Вывалить для Эль-президента диалоговое окно (Вопрос) (ответ1) (ответ2). Результатом есть значения булевских флагов otvet1, otvet2. 02.01.1962: Задать действие 1 как только установится флаг otvet1 02.01.1962: Задать действие 2 по установлению otvet1 Фот такие вот 3 эвента. Вроде всё ОК, но если я задам для них цикличность (повторять Н раз через каждые Н месяцев) получится полная лажа, приходится для каждого случая писать по-новому и юзать другие флаги (так как действие 1 выполнится и в 1999 году, если тогда флаг otvet1 примет значение true). Пример: Каждые пять лет, начиная с 1955 Хотите профинансировать рекламную кампанию по привлечению в Тропико 10 иммигрантов: 1: да, заплатить 1000 песо 2. нет, ничего не надо Каждые пять лет, начиная с 1955 Событие - прислать на корабле 10 чуваков и снять 1000 песо по достижению otvet1=true. Допустим, мы в 1955, 1960, 1975 отказались, а в 1980 согласились. У нас заберут 4000 песо и пришлют 40 чуваков СРАЗУ. Почему? Потоку как в памяти висит целых четыре несвершившихся события, которые ожидают флага otvet1. Фигня выходит? фигня... Вот это самая моя неприятная проблема в редакторе сценариев Тропико 3. И скажем, хотелось бы прислать 5 женщин из СССР возрастом от 18 до 30 лет, 3 мужика из США от 25 до 35 лет, и двух ворчливых старух из Франции, которым через 5 лет пора на пенсию? Как такое задать, если в редакторе есть только пункт об образовании и все. Цитата Ссылка на комментарий
Wseslaw 0 10.01.2014, 10:07:04 Поделиться #12 10.01.2014, 10:07:04 Прекрасно! Вот я и осознал, как моддить тропику. Актуальная информация. А то зануды на англоязычных сайтах пишут: "кажется модов к тропике нет ((". А lua действительно очень прост, даже при том что я программистом вообще не являюсь. Скрипт читается с минимальными знаниями си или паскаля или даже просто английского языка. Цитата(Leoparde77 @ 22.2.2013, 11:43) *Если хотите, можно организовать гильдию мододелов Тропико, которая займется изучением исходников Тропико, а после напишет для вас новую модифицакию (если, конечно, изучим). Предлагаю это обсудить, не зря же тему создал. Гильдия мододелов Тропико - это здорово, но, мне кажется, сначала надо найти единомышленников и/или собрать материал. Отличная идея! Кстати, может ли кто поделиться идеями о том, где какие характеристики лежат и по каким конкретно файлам их искать? P.S. Разумеется, я тоже господин Никто ибо посетил этот раздел. Изменено 10.01.2014, 10:09:38 пользователем Wseslaw Цитата Ссылка на комментарий
Wseslaw 0 10.01.2014, 12:58:04 Поделиться #13 10.01.2014, 12:58:04 Какая жалость. Кажется, все же мало кто смог написать работающие моды для тропики, несмотря на кажущуюся легкость. переписанные скрипты не срабатывают Цитата Ссылка на комментарий
Falcon_x 0 11.09.2020, 14:44:07 Поделиться #14 11.09.2020, 14:44:07 Здравствуйте! Даже спустя столько времени игра актуальности не теряет (по крайней мере у меня :D) Вопрос к знатокам: получилось ли хотя бы упаковать hpk обратно? Возможно что-то не так делаю, но с новым Game.hpk игра не запускается, тупо падает с ошибкой (судя по описанию, не может что-то прочесть). Даже если просто перепаковать исходник безо всяких изменений. И есть ли возможность подредактировать модели? Конкретно мне бы хотелось слегка уменьшить самолеты и удлинить аэропорт для большего реализма, но я даже не нашел их папку, просмотрел несколько архивов кроме Game Цитата Ссылка на комментарий
Рекомендованные сообщения
Присоединиться к обсуждению
Вы можете оставить комментарий уже сейчас, а зарегистрироваться позже! Если у вас уже есть аккаунт, войдите, чтобы оставить сообщение через него.