Перейти к содержанию

Сообщения от Текущие вопросы и ответы по редактору карт

Аватар пользователя
5 лет назад
Кроме того, в Map Properties Tree => players => номеригрока => TavernFilter можно забанить расы, героев. Этот вариант, как мне кажется, попроще.
Аватар пользователя
5 лет назад
Большое спасибо, буду пробовать.
Аватар пользователя
5 лет назад
Ещё такой вопрос: Выставляю скриптом заклинание "Адская волна", но выдаётся ошибка (скрин ниже). Может, чтобы заклинание появилось надо добавить его в map.xdb данной карты или ещё что-нибудь сделать?
Вложения 1
1 файл • Общий размер: 44,6 KB
5 лет назад
герою со старта в хмлке или как там в редакторе ее задавать, если у него нету ее со старта - никогда не получит.
В мап.хдб тоже надо в список допустимых заклинаний ее добавить
Аватар пользователя
5 лет назад
Спасибо за помощь, vasik.
Аватар пользователя
5 лет назад
Не так давно я писал про баг с неразрушающимся городом некромантов. Я не учел следующее: когда играл я помимо кампании в папке Maps у меня были эти же миссии, но по отдельности. Как только я убрал эти карты, баг появился и  у меня. Консоль пишет, что этот город неразрушаемый. Но графа Razed заполнена. Думаю,что проблема с разархивированием карты в кампанию. Если кто-то знает, как это можно устранить буду очень признателен.  
Аватар пользователя
5 лет назад
Скорее всего где-то лежит версия файла города, у которой не прописан Razed, и он перекрывает ваш.
В ответ пользователю }{0TT@6bI4
Аватар пользователя
5 лет назад
}{0TT@6bI4
Скорее всего где-то лежит версия файла города, у которой не прописан Razed, и он перекрывает ваш.
Понятно. Теперь дошло в чём дело. Файл города с разрушением распакован в архив кампании. А в map.xdb этот же город, но без разрушаемости, и на него ссылается карта. Надо просто переписать путь  к xdb-файлу с  разрушением.Огромное вам спасибо, }{0TT@6bI4.
Аватар пользователя
5 лет назад

Доброго геройского утра, хочется поинтересоваться насчет создания карты (из 355 страниц в топике прочитано не более 10, если что - соррян за повтор

В целом вполне устраивает стандартный генератор и дефолтные шаблоны (особенно радует опция "скрыть мини-карту" ghb генерации), однако, добавлять героев кампаний и выставлять команды всё равно приходится с помощью стандартного же редактора карт (уменьшив окошечко перед открытием карты, дабы не заспойлерить дислокацию и не развеять туман войны до начала баталии).

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

Находим Map properties tree - player№ - TavernFilter - Banned - *аничоненажимаеццо*.smile50Вероятно, нужен расширенный редактор, хотя ради правки одной лишь таверны  - может и не нужен... Так вот ежели возможно, то как в этакой конъюнктуре осуществить следующее:

Формат 1. Запретить таверну к властелиновой бабке, пусть у каждого по одному персонажу - и никакая Гильдия воров-болтунов никому сведений не предоставляет (кроме той, что есть на карте)

Формат 2. Оставить возможность постройки таверны, но убрать из питейного заведения Гильдию воров (и будут орки всегда брать приглушение Тьмы, а Раилаг-Аграил пусть сдаётся без боя, встретив в замке королеву Изабель

Формат 3 Оставить возможность постройки таверны, оставить Гильдию воров, но ограничить общее число героев у конкретного игрока до четырех, к примеру (чтоб не злоупотребляли менторством)

Формат 4. Оставить таверну, как она есть, но заранее посадить в неё по два рандомных героя своей замковой фракции на первую неделю (идеально - если включая и героев кампаний)

З.Ы, И еще полюбопытствуем, как исправить окошко с "Миссия провалена" для одного из союзников при завершении игры (т.е. игрок 2 лихо сносит последнего соперника - катка окончена и вместо сообщения о триумфе игра уведомляет, мол, продул ты, приятель, а в это же время лавры совместной победы достаются игроку 1) 

 

В ответ пользователю Eiinar
Аватар пользователя
5 лет назад

Eiinar

1. По поводу таверны: Вы всегда можете открыть любую оригинальную карту в файлах игры и скопировать от туда список доступных героев в таверне, чтобы после вставить этот список в файл своей карты  

2. Не уверен что из городской таверны как-то можно вырезать гильдию воров. По крайней мере, я такого точно не встречал.

3. Можете, AllowPlayerTavernRace(для ботов и игрока) и AllowHeroHiringByRaceForAI(только для ботов) вам помогут)

4. Можете, но опять же вероятно придётся манипулировать баном рас для таверны, ибо по стандарту таверна генерирует героев случайным образом. У меня вот стоит мод на всех героев для всех карты, и порой сильно удивляет запуск за условных рыцарей и с условными Годриком и Биарой в таверне.

5. Хм... Ну, первое что приходит в голову: отобрать у 2 игрока города и героев, убрать героев из резерва(если есть) и тогда игрок, не имея ни героев, ни городов, автоматом проигрывает. Чтобы победил конкретный игрок, можно провести "раскулачивание" на города и героев сразу у всех игроков "непобедителей". 

Аватар пользователя
5 лет назад
Думаю, открыть свойства города (Выделение + Пробел) и отключить таверну (BUILDING_TAVERN + кнопка Demolish) — решит вашу проблему?
В ответ пользователю }{0TT@6bI4
Аватар пользователя
5 лет назад

Большое спасибо откликнувшимся 🤗

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

1)  В клиенте генерируется карта, по нужным параметрам и заранее известному шаблону, взакрытую(галка "Скрыть мини-карту), присваивается имя (нечто вроде Show no fear)

2) Открывается обычный редактор, на тулбаре кнопка ObjectFilter, убрать всё, кроме "Сооружения" - соответственно, остаются видны только постройки - города, двеллинги, трежи etc

3) Следуя советам более опытных камрадов в каждом из имеющихся городов-замков сносим таверны, это нетрудно: круглый town выделяется вручную мышью, открывается пробелом, в разделе Buildings тык в "Таверна", снять галку "Enable") - долой пьянство, всем героям  - по коням!

4) Дабы не обрекать храбрых странствующих всадников (которые впоследствии появятся в замках) на подвиги славные в одиночестве тоскливом, нужно выбрать Prison на Tool Panel и установить по тюрьме возле каждого города - либо передвинуть поближе уже имеющиеся темницы. А Den of Thieves (гильдия воров на карте) - отодвинуть подальше/закрыть охраной из фениксов/удалить. 

Таким образом:

- "Одноразовая" карта - как и дОлжно

- Я вынужденно заспойлерю сам для себя  типы местности на карте, пока буду редактировать города (пробовал включить сетки Show Grid и Wireframe, но по цветам сразу понятно, где снег, где лава, а где лес), но уж на всём остальном сохранится завеса интриги и туман войны

- Каждый игрок получит в своё распоряжение двух рандомных героев: одного - из замка, второго из тюрьмы, при этом геройские персоналии также останутся в секрете до первой встречи соперников  

З.Ы. А еще получается обойтись без вмешательства в систему и замены скриптов-сценариев. 

5 лет назад
Хелп, люди добрые, если тут есть кто живой!
Помогите написать простейший скрипт. Я не знаю почему, но не работает ни один вариант.
Только не надо писать "читай учебник", я его читала неоднократно, и один из вариантов как раз оттуда.
Элементарное действие, - чтобы ГГ, прикоснувшись к предмету (а лучше бы, зайдя в определённую зону, но пока и предмет не выходит), телепортировался в определённую точку.

Не работают скрипты:

    function PobegF (heroname)
    SetObjectPosition((heroname), 88, 102, floor -1);
    end;
    
    Trigger(OBJECT_TOUCH_TRIGGER, "Proba", "PobegF");
Пишут, attempt to perform arithmetic on a functioh value.

------
    function PobegF (heroname)
    SetObjectPosition(heroname, 88, 102, floor -1);
    end;
    
    Trigger(4, "Proba", "PobegF");
Пишут то же самое.

------
    function PobegF ()
    SetObjectPosition("Raelag", 88, 102, floor -1);
    end;
    
    Trigger(OBJECT_TOUCH_TRIGGER, "Proba", "PobegF");
Такая же фигня.

------
    function PobegF ()
    SetObjectPosition("Raelag", 88, 102, floor);
    end;
    
    Trigger(OBJECT_TOUCH_TRIGGER, "Proba", "PobegF");
Пишут, Wrong type of argument 4, when calling function SetObjectPosition.

------
    function PobegF ()
    SetObjectPosition("Raelag", destination_151, 138, floor -1);
    end;

    Trigger(OBJECT_TOUCH_TRIGGER, "Proba", "PobegF");
Пишут, attempt to perform arithmetic on a functioh value.
------

    function PobegF ()
    SetObjectPosition("Raelag", destination_151, 138, floor);
    end;

    Trigger(OBJECT_TOUCH_TRIGGER, "Proba", "PobegF");
Пишут, Wrong type of argument 4, when calling function SetObjectPosition.

ЧЯДНТ?
Аватар пользователя
5 лет назад
Eiinar, рад, что у вас все получилось; со скриптами можно было бы конечно сделать все куда элегантнее. Отдельное спасибо за подробный разбор того, как вы делали, возможно, кому-то пригодится!)
В ответ пользователю Марта
Аватар пользователя
5 лет назад
Марта
Хелп, люди добрые, если тут есть кто живой!
Помогите написать простейший скрипт. Я не знаю почему, но не работает ни один вариант.
Только не надо писать "читай учебник", я его читала неоднократно, и один из вариантов как раз оттуда.
Элементарное действие, - чтобы ГГ, прикоснувшись к предмету (а лучше бы, зайдя в определённую зону, но пока и предмет не выходит), телепортировался в определённую точку.

Не работают скрипты:

    function PobegF (heroname)
    SetObjectPosition((heroname), 88, 102, floor -1);
    end;
    
    Trigger(OBJECT_TOUCH_TRIGGER, "Proba", "PobegF");
Пишут, attempt to perform arithmetic on a functioh value.

------
    function PobegF (heroname)
    SetObjectPosition(heroname, 88, 102, floor -1);
    end;
    
    Trigger(4, "Proba", "PobegF");
Пишут то же самое.

------
    function PobegF ()
    SetObjectPosition("Raelag", 88, 102, floor -1);
    end;
    
    Trigger(OBJECT_TOUCH_TRIGGER, "Proba", "PobegF");
Такая же фигня.

------
    function PobegF ()
    SetObjectPosition("Raelag", 88, 102, floor);
    end;
    
    Trigger(OBJECT_TOUCH_TRIGGER, "Proba", "PobegF");
Пишут, Wrong type of argument 4, when calling function SetObjectPosition.

------
    function PobegF ()
    SetObjectPosition("Raelag", destination_151, 138, floor -1);
    end;

    Trigger(OBJECT_TOUCH_TRIGGER, "Proba", "PobegF");
Пишут, attempt to perform arithmetic on a functioh value.
------

    function PobegF ()
    SetObjectPosition("Raelag", destination_151, 138, floor);
    end;

    Trigger(OBJECT_TOUCH_TRIGGER, "Proba", "PobegF");
Пишут, Wrong type of argument 4, when calling function SetObjectPosition.

ЧЯДНТ?

Не думаю, что вы где-то обьявляли переменную floor, а потому вопрос: зачем вы ее используете при вызове функций SetObjectPos? Вместо нее надо написать 0 (поверхность) или 1 (подземка), например, SetObjectPosition("Raelag", 182, 71, 0). Поясню, откуда взялась ошибка. floor — встроенная функция округления вверх. Перед "-1" у вас нет запятой, а потому игра пытается вычесть из floor единицу. Но floor это функция! А из функций вычитать числа пока не научились. Поэтому и появилась ошибка smile

Так же, странная строчка destination_151, опять-таки, у вас была обьявлена переменная с таким именем? Вряд ли. Если вы хотели указать координату, то оставьте просто 151.
Итоговый вариант скрипта:
function PobegF (heroname)
SetObjectPosition(heroname, 88, 102, 0, -1);
end;

Trigger(OBJECT_TOUCH_TRIGGER, "Proba", "PobegF")

Статистика

Приветствуем новейшего участника: recijeb

Сейчас на сайте 3 пользователей 1414 гостей