pep8854

Папка addons

7 сообщений в этой теме

Аддон загружается в соответствии с функцией, описанной в файле /metro/scripts/addons.script

Вот ее текст:

function initAddon($path) {

echo "Loading addon \""+$path+"\"...";

$strings2 = null;

if (file_exists($path+"/strings/"+MAIN.$language+".strings")) {

$strings2 = load "/"+$path+"/strings/"+MAIN.$language+".strings";

} else if (file_exists($path+"/strings/en_US.strings")) {

$strings2 = load "/"+$path+"/strings/en_US.strings";

}

if ($strings2) {

$strings.mergeVariables($strings2);

delete $strings2;

}

foreach (list_files($path+"/maps", ".grid")) {

$maps[] = $path+"/maps/"+current;

}

foreach (list_files($path+"/campaigns", ".campaign")) {

$campaigns[] = $path+"/campaigns/"+current;

}

foreach (list_files($path+"/scenarios", ".scenario")) {

$scenarios[] = $path+"/scenarios/"+current;

}

foreach (list_files($path+"/company-logos", ".dds")) {

$companyLogos[] = $path+"/logos/"+current;

}

foreach (list_dirs($path+"/locations")) {

$locations[] = $path+"/locations/"+current;

}

if (file_exists($path+"/scripts/environment.script")) {

$environments[] = $path+"/scripts/environment.script";

}

if (file_exists($path+"/scripts/game.script")) {

$gameScripts[] = $path+"/scripts/game.script";

}

if (file_exists($path+"/scripts/editor.script")) {

$editorScripts[] = $path+"/scripts/editor.script";

}

if (file_exists($path+"/scripts/newsticker.script")) {

$newsScripts[] = $path+"/scripts/newsticker.script";

}

if (file_exists($path+"/scripts/init.script")) {

load "/"+$path+"/scripts/init.script";

}

echo "[done]";

}

Вроде бы структура аддона такая, но нужно проверять:

  1. Папка maps - это карты (файлы с расширением .grid)
  2. Папка campaigns - это кампании (файлы с расширением .campaign).
  3. Папка scenarios - это сценарии (файлы с расширением .scenario).
    foreach (list_files($path+"/company-logos", ".dds")) {
    $companyLogos[] = $path+"/logos/"+current;
    }
    Вроде бы опечатка...
  4. Папка locations - это регионы (список папок).
  5. Папка scripts состоит из файлов:

    1. environment.script - добавление новых транспортных средств и зданий
    2. game.script - добавление интерфейса, а может быть еще чего-нибудь (в игру).
    3. editor.script - добавление интерфейса, а может быть еще чего-нибудь (в редактор).
    4. newsticker.script - не знаю.
    5. init.script - не знаю.

Всё это нужно проверять, пока ясно одно: попытка поместить добавление кнопки в environment.script терпит фиаско. Такие вещи нужно писать в game.script

P.S. Для того чтобы использовать функции, объявленные в других скриптах, нужно найти в скрипте строку MAIN.$xxx = this

Это значит, что функцию нужно вызывать не имя_функции(аргументы), а MAIN.$xxx.имя_функции(аргументы) или попробовать такой код (я не пробовал, но поидее должен работать):

with (MAIN.$xxx) {

имя_функции(аргументы)

...

}

4

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


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

Пытаюсь разобраться с простой вещью. Пример. Требуется замена строк №60 и №67 в скрипте metro\objects\vehicles\metro-01\metro01.script так, чтобы остальной файл оказался нетронутым.

 

Как сделать описание этого действия в addons?

0

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


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

@Sonik, я конкретно с этим не разбирался, но тебе точно стоит покопать VehRealMod. Его изменённая версия есть в ЕСЦХ. Насколько помню, там есть большие скрипты для каждого из видов транспорта, которые обращаются к дефолтным транспортным средствам и изменяют их характеристики.

1

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


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

Все бесполезно. Простые характеристики типа цены или потребления топлива добавить нет проблем. Примерно следующий шаблон:
Создаем файл ***.script и помещаем его внутрь GS-архива. Затем подключаем модменеджером.

// Неясные для меня условия:$grid = MAIN.$grid;
$level = MAIN.$level;

//Ищем в игровом мире объект "метро-01"
if($grid.getGridObject("metro-01")) {
with ($grid.getGridObject("metro-01")) {

//Далее даем ему имя
.displayName = "Nazyvaem kak-nibud";
//Вместимость
.capacity = 5;
//Цену
.$price =1000000;
//Потребление топлива
.$fuelConsumption = 0;
//Потребление электричества
.$electricityConsumption = 100;
}
}

Для замены звука в оригинальном описании объекта стоит целая функция:

 

with (this.doorOpenSound = new_sound(this)) {
  .load("/metro/sounds/sbw/Subway1_door_open.wav");
  .volume = 1.0;
  .minDistance = 50.0;
  .maxDistance = 150.0;
}

В синтаксисе файла из GS-архива миллион вариантов применения этой функции. Какой правильный? Алекс, кто вообще может в этой ситуации помочь теоретически? Может есть программеры?

 

И вообще как можно без GS-архива заставить работать script-файл в папке addons? Если его распаковать в "CiM/addons/" или в "CiM/addons/имяGSархива/" или "CiM/addons/scripts" или "CiM/addons/metro/scripts" и еще другими способами - скрипт не работает. Но если он внутри GS-архива (модменеджером подключаю папки), то все ок.

0

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


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

Ну, точно смогут помочь немцы - eis_os, или mediziner, или кто-то ещё из них... 


И вообще как можно без GS-архива заставить работать script-файл в папке addons?

 

Тут нужно действовать по следующей логике: если путь был такой

CiM/addons/gsFile/scripts/file.script

То нужно сделать его таким:

CiM/addons/folder/scripts/file.script

То есть просто название папки в addons должно соответствовать названию .gs-файла.

0

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


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

Не работает из папки - дублирующий GS-файл убрал из addons, оставил только каталог с CiM/addons/имяGSфайла/scripts/имя.скрипта. Игра игнорирует его. В модменеджере включен. 

0

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


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

Хмм, вообще, если ты хочешь изменить содержание скрипта какого-то аддона, то .gs-файл аддона убирать не нужно. Изменённый скрипт будет грузиться поверх оригинального.

0

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


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

Создайте аккаунт или войдите для комментирования

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

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас

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

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