Alex

Добавление своего герба и экрана загрузки

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

У стандартных карт есть строчка

$cityID = "amsterdam";

зато нет

$levelName = "";

Возможно, если добавить первую после описания, то будет название в новостях?

0

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


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

Может быть. Тогда, чтобы название было на русском, нужно соответствующую кодировку ставить.

0

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


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

Зачем мне русский? Город-то Роттенбург - там всё на латинице сделано. :)

Ковыряясь с модом роста города наткнулся на такую строчку:

$startDate = mkdate(1,1,1920);

Что значит "mkdate"?

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

0

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


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

На cimexchange.com есть статейка про создание компании на своей карте Моя ссылка, там же довольно интересная статья о том как можно сделать новые карты быстро, но адресована она скорее моддерам Моя ссылка

1

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


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

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

ArtMetro, mkdate в данном случае - это, я так понимаю, просто дата начала всей игры, ну и первая дата в шкале времени. Дата начала игры на карте указывается в .scenario-файле этой карты, правда, в каком-то странном формате:

$currentDate = 726833;

0

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


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

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

На счёт сценария: так можно задавать дополнительные задания для игрока, которые будут появляться в режиме песочницы, в кампании карта не появится. Зато так можно создать уникальные задания для твоей карты, например проложить трамвайную линию из точки А в точку Б, если, например, она реально исторически там прокладывалась. То есть придать игре большей исторической реалистичности.

Вот что осталось в логе, любопытно:

Error: Compiler error in "userdata/maps/Rottenburg.scenario" at line 15: Operator expected but "metro/ui/timebar" found!

Error: Runtime error in "metro/ui/menus/sandbox.script" at line 281: Array index out of bounds (9)!

Error: Called from "metro/ui/menus/sandbox.script" at line 74

0

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


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

Пока лучшее, что мне удалось добиться, что теперь он грузит только второе избражение:

$illustration = "addons/Rottenburg/illustrations/Rottenburg1920.dds"; if ($currentDate >= 1960) $illustration = "addons/Rottenburg/illustrations/Rottenburg1960.dds";

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

Ещё такой вариант:

$illustration = "addons/Rottenburg/illustrations/Rottenburg1920.dds"; if ($startYear > $currentDate+39) $illustration = "addons/Rottenburg/illustrations/Rottenburg1960.dds";

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

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


Ссылка на сообщение
Поделиться на других сайтах
Error: Compiler error in "userdata/maps/Rottenburg.scenario" at line 15: Operator expected but "metro/ui/timebar" found!

Точку с запятой нигде не забыл? :D Ну или что-то в этом роде может быть.

Касательно второго - попробуй так:

$illustration = "addons/Rottenburg/illustrations/Rottenburg1920.dds"; if ($currentDate >= 1960) {$illustration = "addons/Rottenburg/illustrations/Rottenburg1960.dds";}

То есть, код в условии просто заключи в фигурные скобки. Хотя если работает - может и не надо. :D Ну и да, попробуй везде указывать условие (и перед первой картинкой тоже).

0

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


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

Сделал, теперь игра рухнула вся и окончательно. :(

Отбой тревоги, всё норм. Перезагрузил комп, игра снова заработала. :D

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

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

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


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

Хмм. Это ты просто условия везде написал? А что, кстати, в логе после этого всего?

0

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


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

$illustration = "addons/Rottenburg/illustrations/Rottenburg1920.dds"; if ($currentDate >= ($startYear = 1960)) $illustration = "addons/Rottenburg/illustrations/Rottenburg1960.dds";

Вот такой вариант даёт второе изображение, но отменяет первое :wacko:

0

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


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

$startDate = mkdate(1,1,1920);

Что значит "mkdate"?

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

ArtMetro, mkdate в данном случае - это, я так понимаю, просто дата начала всей игры, ну и первая дата в шкале времени. Дата начала игры на карте указывается в .scenario-файле этой карты, правда, в каком-то странном формате:

$currentDate = 726833;

Что касается изменяемых экранов загруски:

В режиме песочницы как я понял движок игры не позволяет реализовать изменения. они доступны только для сценария. Причем если посмотреть location-data\illustrations, то там для каждого сценария свои иллюстрации (для игры без дополнений):

amsterdam-1950

amsterdam-2004

berlin-1920

berlin-1980

berlin-1991

berlin-2010

helsinki-1950

helsinki-1990

vienna-1930

vienna-1960

vienna-1970

vienna-2003

Внутри каждой папки есть основная картинка и 7-10 картинок (частей), что появляются по мере загрузки карты.

Управляется это все скриптом в той же папке (для amsterdam-1950 это amsterdam-1950.script)

Пример:

function init($layers) {
 $layers[] = ["metro/location-data/illustrations/amsterdam-1950/sce2_bg.dds", 0.0];
 $layers[] = ["metro/location-data/illustrations/amsterdam-1950/sce2_prop1.dds", 10.0];
 $layers[] = ["metro/location-data/illustrations/amsterdam-1950/sce2_prop2.dds", 20.0];
 $layers[] = ["metro/location-data/illustrations/amsterdam-1950/sce2_prop3.dds", 30.0];
 $layers[] = ["metro/location-data/illustrations/amsterdam-1950/sce2_prop4.dds", 40.0];
 $layers[] = ["metro/location-data/illustrations/amsterdam-1950/sce2_prop5.dds", 50.0];
 $layers[] = ["metro/location-data/illustrations/amsterdam-1950/sce2_prop6.dds", 60.0];
 $layers[] = ["metro/location-data/illustrations/amsterdam-1950/sce2_prop7.dds", 70.0];
 $layers[] = ["metro/location-data/illustrations/amsterdam-1950/sce2_prop8.dds", 80.0];
 $layers[] = ["metro/location-data/illustrations/amsterdam-1950/sce2_prop9.dds", 90.0];
 $layers[] = ["metro/location-data/illustrations/amsterdam-1950/sce2_prop10.dds", 100.0];
}

0

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


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

Дело в том, что при некоторых вариантах написания условия "if" он загружал вторую картинку для 1960 года, то есть это условие он выполнял, несмотря на то, что первым для загрузки указывалось изображение для 1920 года. В общем-то это мне и дало мысль, что смена картинки гипотетически возможна.

0

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


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

$illustration = "addons/Rottenburg/illustrations/Rottenburg1920.dds"; if ($currentDate >= ($startYear = 1960)) $illustration = "addons/Rottenburg/illustrations/Rottenburg1960.dds";

Вот такой вариант даёт второе изображение, но отменяет первое :wacko:

Дело в том, что при некоторых вариантах написания условия "if" он загружал вторую картинку для 1960 года, то есть это условие он выполнял, несмотря на то, что первым для загрузки указывалось изображение для 1920 года. В общем-то это мне и дало мысль, что смена картинки гипотетически возможна.

$currentDate - это число дней с некоторой даты (01.01.1900 например), а сравнение идет с годом или условием.

И еще мысли:

1. $currentDate задается в скриптах и возможно изменение этой даты возможно только в скрипте, то что выбирается в песочнице при запуске игры может быть не доступно.

2. $currentDate >= ($startYear = 1960) - само по себе условие не верное :)) Получается ты сравниваешь $currentDate с равностью или не равностью условия ($startYear = 1960)

3. Попробуй использовать mkDate: $currentDate >= mkDate(1, 1, 1960)

0

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


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

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

Нет, так карта вообще не грузится. Лог:

Error: Linker error in "userdata/maps/Rottenburg.scenario" at line 15: Undefined identifier "mkDate"!
Error: Runtime error in "metro/ui/menus/sandbox.script" at line 281: Array index out of bounds (9)!
Error: Called from "metro/ui/menus/sandbox.script" at line 74

При написании mkdate (получается именно так правильно), карта грузится, но изображение остаётся для 1920 года. В логе ошибок нет, то есть условие записано правильно, но оно не выполняется, точнее не имеет эффекта.

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

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


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

В логе ошибок нет, то есть условие записано правильно, но оно не выполняется, точнее не имеет эффекта.

А если пойти от противного? :)) :))

в скрипте начало указать 1960 год, а потом в песочнице менять на 1920? И соответственно смотреть что бы $currentDate меньше 1960 года? Причем для сравнения берешь число, которое у тебя будет в скрипте имякарты.scenario в определении $currentDate.

Попробуй сделать "отладку" условия, путем добавления команды записи в лог:

echo $currentDate; // - покажет тебе текущее значение $currentDate. 

Можешь свой текст писать в кавычках, можешь другие переменные или условия писать.

0

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


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

Основную мысль уловил, но как сделать не совсем въехал. :D

0

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


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

Основную мысль уловил, но как сделать не совсем въехал. :D

В редакторе карты выставляешь год старта 1960.

В скрипте пишешь

 echo "Debug Start";
 $illustration = "addons/Rottenburg/illustrations/Rottenburg1960.dds";
 echo "$currentDate "+$currentDate;
 echo "$illustration "+$illustration;
 if ($currentDate <= 715875) {
   $illustration = "addons/Rottenburg/illustrations/Rottenburg1920.dds";
   echo "$illustration "+$illustration;
 }
 echo "Debug End";

Проверяешь запуском карты в 1970 году и в 1920 году. Оба раза смотришь что написано в логах.

Скорее всего в логе надписи будут несколько раз.

0

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


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

Что надо прописать в сценарии, чтобы после загрузки сохранения высвечивалось название карты, а не "map".

0

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


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

$levelName = "";

Сюда пробовал? Не уверен что это сработает, но можно попробовать.

0

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


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

Сделано. Работает - нет - увидишь, когда в Симферополь будешь играть.

0

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


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

Это сообщение можно удалить... (№72)

0

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


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

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

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

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

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


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

Войти

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


Войти сейчас

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

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