Geremande

Моддинг Тропико 4

Рекомендованные сообщения

Geremande

Моддинг Тропико 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. Этот аспект будет рассмотрен в следующем уроке.

Изменено пользователем Leoparde77

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Закреплённое сообщение
Geremande

Задача усложняется

При компиляции скрипта в lua и папки в архив hpk никаких изменений в игре нет :)

Придется посидеть, подумать, что у них за движок такой корявый.

Кстати, еще половина файлов не компилируется, самый популярный тип ошибки:

LuaDec: [string "Edict.luad"]:98: unexpected symbol near '{'
Изменено пользователем Leoparde77

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Geremande

Решил проблему - lua скрипт должен находится в папке ex

hpk архив в папке Packs. Следовательно, все то, что выше - не актуально. Для моддинга необходимо лишь знание языка Lua, компилятор .lua и архиватор .hpk

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Freezze
Если хотите, можно организовать гильдию мододелов Тропико, которая займется изучением исходников Тропико, а после напишет для вас новую модифицакию (если, конечно, изучим). Предлагаю это обсудить, не зря же тему создал.

Гильдия мододелов Тропико - это здорово, но, мне кажется, сначала надо найти единомышленников и/или собрать материал.

Насчет Луа это здорово. Когда-то пытался в этом языке разобраться. Документация была только на английском и десяток "полухалтурных" статей.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Geremande
Гильдия мододелов Тропико - это здорово, но, мне кажется, сначала надо найти единомышленников и/или собрать материал.

Насчет Луа это здорово. Когда-то пытался в этом языке разобраться. Документация была только на английском и десяток "полухалтурных" статей.

Да никто даже этот раздел не посещает :D

А насчет Lua... Он очень легкий. Если вы знаете какой-либо другой язык, Lua вам дастся без особых проблем. Смотрите:

Войдите или зарегистрируйтесь, чтобы увидеть скрытое содержимое.

Вот расшифровка кода выше

Войдите или зарегистрируйтесь, чтобы увидеть скрытое содержимое.

Даже легче, чем паскаль. И толк от Lua есть.

Изменено пользователем Leoparde77

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Freezze
Да никто даже этот раздел не посещает :D

Ура!!! :D Я мистер Никто. )))) (шутка)

Естественно не посещает. Надеюсь, пока не посещает. Отдача однозначно будет, поверь мне. Так что работай.

А насчет Lua... Он очень легкий. Если вы знаете какой-либо другой язык, Lua вам дастся без особых проблем. Смотрите:

Я понимаю что он достаточно легкий как и все скриптовые языки. (Я программист :025: )

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Geremande
Надеюсь, пока не посещает. Отдача однозначно будет, поверь мне. Так что работай.

Ок. В данных момент пишу документацию по моддингу, что бы в голове отложилось, что и как.

Я понимаю что он достаточно легкий как и все скриптовые языки. (Я программист )

На каком языке программируешь, если не секрет? :D

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Freezze
На каком языке программируешь, если не секрет? :D

Давным-давно был Pascal. Сейчас C#.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Geremande
Давным-давно был Pascal. Сейчас C#.

Я тоже хотел учить .net языки, но выбрал Си.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Geremande

Обновил шапку. Вскоре допишу мануал.

Изменено пользователем Leoparde77

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Kassatka

Класс, может хоть моддингом можно будет реализовать то, что через редактор не выходит.

В редакторе сценариев есть очень полезные события (пусть и не на все случаи жизни). Что меня больше всего убивает в этом редакторе - вместо обычного в любом программировании

Если(в текущий момент) Флаг То Событие

принята другая логика

Как только (с текущего момента и до конца игры) Флаг То Событие

Особенно вредоносно это для окон выбора нашим эль-президенте одного из 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

    Прекрасно! Вот я и осознал, как моддить тропику. Актуальная информация. А то зануды на англоязычных сайтах пишут: "кажется модов к тропике нет ((". А lua действительно очень прост, даже при том что я программистом вообще не являюсь. Скрипт читается с минимальными знаниями си или паскаля или даже просто английского языка.

    Цитата(Leoparde77 @ 22.2.2013, 11:43) *

    Если хотите, можно организовать гильдию мододелов Тропико, которая займется изучением исходников Тропико, а после напишет для вас новую модифицакию (если, конечно, изучим). Предлагаю это обсудить, не зря же тему создал.

    Гильдия мододелов Тропико - это здорово, но, мне кажется, сначала надо найти единомышленников и/или собрать материал.

    Отличная идея!

    Кстати, может ли кто поделиться идеями о том, где какие характеристики лежат и по каким конкретно файлам их искать?

    P.S. Разумеется, я тоже господин Никто ибо посетил этот раздел.

    Изменено пользователем Wseslaw

    Поделиться сообщением


    Ссылка на сообщение
    Поделиться на других сайтах

    Wseslaw

    Какая жалость. Кажется, все же мало кто смог написать работающие моды для тропики, несмотря на кажущуюся легкость. переписанные скрипты не срабатывают

    Поделиться сообщением


    Ссылка на сообщение
    Поделиться на других сайтах

    Falcon_x

    Здравствуйте! Даже спустя столько времени игра актуальности не теряет (по крайней мере у меня :D)

    Вопрос к знатокам: получилось ли хотя бы упаковать hpk обратно? Возможно что-то не так делаю, но с новым Game.hpk игра не запускается, тупо падает с ошибкой (судя по описанию, не может что-то прочесть). Даже если просто перепаковать исходник безо всяких изменений.

    И есть ли возможность подредактировать модели? Конкретно мне бы хотелось слегка уменьшить самолеты и удлинить аэропорт для большего реализма, но я даже не нашел их папку, просмотрел несколько архивов кроме Game

    Поделиться сообщением


    Ссылка на сообщение
    Поделиться на других сайтах

    Присоединиться к обсуждению

    Вы можете оставить комментарий уже сейчас, а зарегистрироваться позже! Если у вас уже есть аккаунт, войдите, чтобы оставить сообщение через него.

    Гость
    Ответить в тему...

    ×   Вы вставили отформатированное содержимое.   Удалить форматирование

      Only 75 emoji are allowed.

    ×   Ваша ссылка автоматически преображена.   Отображать как простую ссылку

    ×   Предыдущее содержимое было восстановлено..   Очистить текст в редакторе

    ×   You cannot paste images directly. Upload or insert images from URL.


    • Сейчас на странице   0 пользователей

      Нет пользователей, просматривающих эту страницу

    • Модераторы онлайн

      • Platon
      • Дон Андрон
      • Александрович