Sign in to follow this  
Followers 0
Alex

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

72 posts in this topic

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

$cityID = "amsterdam";

зато нет

$levelName = "";

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

0

Share this post


Link to post
Share on other sites

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

0

Share this post


Link to post
Share on other sites

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

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

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

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

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

0

Share this post


Link to post
Share on other sites

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

1

Share this post


Link to post
Share on other sites

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

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

$currentDate = 726833;

0

Share this post


Link to post
Share on other sites

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

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

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

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

Share this post


Link to post
Share on other sites

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

$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";

Edited by ArtMetro
1

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites

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

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

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

Edited by ArtMetro
0

Share this post


Link to post
Share on other sites

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

0

Share this post


Link to post
Share on other sites

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

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

0

Share this post


Link to post
Share on other sites

$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

Share this post


Link to post
Share on other sites

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

0

Share this post


Link to post
Share on other sites

$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

Share this post


Link to post
Share on other sites

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

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

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

Edited by ArtMetro
0

Share this post


Link to post
Share on other sites

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

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

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

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

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

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

0

Share this post


Link to post
Share on other sites

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

0

Share this post


Link to post
Share on other sites

Основную мысль уловил, но как сделать не совсем въехал. :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

Share this post


Link to post
Share on other sites

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

0

Share this post


Link to post
Share on other sites

$levelName = "";

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

0

Share this post


Link to post
Share on other sites

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

0

Share this post


Link to post
Share on other sites

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

0

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0

  • Recently Browsing   0 members

    No registered users viewing this page.