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

Сообщения от Скрипты

В ответ пользователю }{0TT@6bI4
Аватар пользователя
#3640
}{0TT@6bI4
Именно после рестарта карты? Только SetGameVar("имя переменной", значение), GetCameVar("имя переменной").

Про закат тьмы не слышал, можно поподробнее?
Я не отрицаю, что не очень разбираюсь в особенностях движка героев) Просто у меня такая логика: скрипт карты выполняется по её загрузке, и вроде как нет никаких средств, который бы паковал твои Локальные данные (например значения глобальных переменных,переопределяемых по ходу игры) в сейв, чтобы когда игру остановили,а  затем загрузили переменные имели прежние значения. Ну т.е я не нашел аналога БД для конкретной карты для динамических данных. Я повторюсь, что может просто не до конца разобрался.
Чтобы было понятнее дам пример: у меня есть массив с массивами(таблица на луа-языке), где ключ - игрок, и у него например существуют value1 и value2. Хочется менять эти значения по ходу игры. Это без проблем делается, однако когда карта сохраняется, а затем загружается, массив конечно же пуст(ведь я объявляю его где-угодно в скрипте, который отрабатывает по загрузке карты, и , конечно же, переопределяет его заново в исходное состояние).
Обычно в таких случаях инициализацию массива пишут внутри функции, а затем делают что-то типа проверки на isset. Однако и там данные куда-то да записываются.

По поводу Заката тьмы: там есть система репутации у рас, она сделана через квест. Т.е это работает так: Сущетсвует objective с именем "orcs rep",у которого существует бесконечно много этапов прогресса т.е он невыполним(ибо имеет кастомное условие, как вам известно его завершить можно только скриптом). Ну и собственно когда нужно этому квесту дается определенное число прогресса, т.е увеличение репутации на 5 единиц сдвинет прогресс квеста на 5 единиц. Из-за такого способа её можно удобно выводить в штатном меню заданий внутри игры. Это рабочий способ(я проверил, действительно можно так любые механики репутации реализовывать), но мне кажется несколько нелогичным использовать функционал заданий(которые не предназначены для этого).
Аватар пользователя
#3641
Бесконечным даже этапы прогресса не могут быть; если начать карту заново, то все прогрессы всех задая скинутся в ноль, если же загружать сейвы, то и значения скриптовых переменных сохранятся, разве нет?

Я просто никак не пойму, вы вроде и говорите о рестарте карты, но про Закат Тьмы — там что, после рестарта карты сохраняется прогресс заданий? Да нет, конечно. О каком тогда хранении локальных данных в задачах может идти речь?
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
Discord-сервер "Герои 5: S.T.A.L.K.E.R"
Сервер по модификации "Герои 5: S.T.A.L.K.E.R"
_________________
В ответ пользователю }{0TT@6bI4
Аватар пользователя
#3642

Вот по поводу скриптовых переменных при загрузке сохранения и идет речь. Конечно, о рестарте я не говорю(прощу прощения за неясные пояснения, грешу этим). 
Я попробую пару экспериментов с этим (Разными способами по-сохранять данные), отпишусь. Просто меня не очень радует "работает и слава богу", хочется разобраться почему именно работает : )
Спасибо за терпение и помощь.

Добавлено через 4 часа 3 минуты
Чтож, вы были абсолютно правы.
Современные технологии затмили мой разум :) 
На сейве карта делает свой "слепок", поэтому да, все переменные действительно хранят свои значения. Не знаю, как я это тестировал ранее, но был убежден, что там совсем другой принцип.
Спасибо за вразумление.
Аватар пользователя
#3643
Рад, что разобрались) smile
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
Discord-сервер "Герои 5: S.T.A.L.K.E.R"
Сервер по модификации "Герои 5: S.T.A.L.K.E.R"
_________________
Аватар пользователя
#3644
Снова добрый вечер!
Существует ли возможность увеличивать армию в гарнизоне скриптом?
Задокументированной функции не нашел, костыля не придумал.
Знаю что можно получить армию гарнизона через GetObjectArmyTypes().
Пост скриптум:
Засунуть героя в проход гарнизона и ему давать армию идея конечно рабочая, но неэстетичная.
Кстати, если может кто знает(хотя я знаю что есть соседний топик для такого), можно ли зарезервировать героев для любого игрока?
В принципе можно резервировать для "мнимого" игрока и менять ему команду при деплое, но может это можно в редакторе сделать.
Не нашел. 
И существует ли метод "обратной резвервации"? То есть чтобы героя скриптом можно было дергать туда-сюда. Знаю, что можно разрешить найм
резервного героя, и можно его задеплоить.
Аватар пользователя
#3645
function pack(...)
return arg
end

types = pack(GetObjectCreaturesTypes('garrisonName'))
army = {}
for n, id in types do
if id > 0 then
army[length(army)+1] = {id, GetObjectCreatures(id)}
end
end

-->>>army == {{айди, число}, {айди, число}, итд}

Алгоритм работы с параметрами можете использовать тот, который захотите, этот - пример. GetObjectCreaturesTypes возвращает типы (айди) существ (и ноль, если не полный набор), GetObjectCreatures(id) получает число существ в объекте по заданном айди.

С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
Discord-сервер "Герои 5: S.T.A.L.K.E.R"
Сервер по модификации "Герои 5: S.T.A.L.K.E.R"
_________________
Аватар пользователя
#3646
По поводу настройки героев-резервиствов, доступных для любого игрока, - только скриптом и можно, хотя рекомендую попробовать добавить в резерв игрокам одного и того же героя. Для этого в Map Properties Tree => players => [0] => ReserveHeroes => Скопируйте AdvMapHero ссылку на зарезервированного героя и для других игроков в ReserveHeroes добавьте новый элемент (Insert при выделенном свойстве ReserveHeroes или ПКМ->Add), в новый элемент скопируйте ссылку. Метод не проверял, но может оказаться рабочим. Может привести к вылетам
Убрать героя из резерва можно командой UnreserveHero
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
Discord-сервер "Герои 5: S.T.A.L.K.E.R"
Сервер по модификации "Герои 5: S.T.A.L.K.E.R"
_________________
Аватар пользователя
#3647
Спасибо за ответы, про скрипт - разберусь, резерв попробую и отпишусь, будет ли вылетать.
В ответ пользователю Jewily
Аватар пользователя
#3648
Jewill

Существует ли возможность увеличивать армию в гарнизоне скриптом?
AddObjectCreatures("скриптовое имя гарнизона", id существа, кол-во)
В ответ пользователю Азгалор
Аватар пользователя
#3649
Азгалор
AddObjectCreatures("скриптовое имя гарнизона", id существа, кол-во)
Спасибо, очень странно, что в мануале "из коробки" такой функции не задокументировано.


Не уходи безропотно во тьму,
Будь яростней пред ночью всех ночей,
Не дай погаснуть свету своему!

Хоть мудрый знает – не осилишь тьму
Во мгле словами не зажжёшь лучей –
Не уходи безропотно во тьму.


                                                                                       
В ответ пользователю Jewily
Аватар пользователя
#3650
Jewill
Спасибо, очень странно, что в мануале "из коробки" такой функции не задокументировано.
10 страница в файле HOMM5_A2_Script_Functions.pdf или 9 в HOMM5_Script_Functions.pdf
В ответ пользователю Азгалор
Аватар пользователя
#3651
Азгалор
10 страница в файле HOMM5_A2_Script_Functions.pdf или 9 в HOMM5_Script_Functions.pdf
Удивительно, как люди слепы :). Большое спасибо за наводку. 


Не уходи безропотно во тьму,
Будь яростней пред ночью всех ночей,
Не дай погаснуть свету своему!

Хоть мудрый знает – не осилишь тьму
Во мгле словами не зажжёшь лучей –
Не уходи безропотно во тьму.


                                                                                       
Аватар пользователя
#3653
Добрый вечер. Может кто знает: какой самый простой способ проверить является ли игрок искусственным интеллектом?
Есть какая-то из функции относящаяся к ИИ, которая возвращает nil при её использовании на игрока-человека?
Поиски(ленивые) пока не дали результата, а такая мелочь...


Не уходи безропотно во тьму,
Будь яростней пред ночью всех ночей,
Не дай погаснуть свету своему!

Хоть мудрый знает – не осилишь тьму
Во мгле словами не зажжёшь лучей –
Не уходи безропотно во тьму.


                                                                                       
В ответ пользователю Jewily
Аватар пользователя
#3654
Jewill
Добрый вечер. Может кто знает: какой самый простой способ проверить является ли игрок искусственным интеллектом?
Есть какая-то из функции относящаяся к ИИ, которая возвращает nil при её использовании на игрока-человека?
Поиски(ленивые) пока не дали результата, а такая мелочь...
Среди официальных заметил только IsHuman и IsComputer в боевых скриптах. Но, как я понимаю, Вам нужны функции для не боевого скрипта?
В ответ пользователю Jewily
Аватар пользователя
#3655
Jewill
Добрый вечер. Может кто знает: какой самый простой способ проверить является ли игрок искусственным интеллектом?
Есть какая-то из функции относящаяся к ИИ, которая возвращает nil при её использовании на игрока-человека?
Поиски(ленивые) пока не дали результата, а такая мелочь...

IsAIPlayer(Player_ID)

Если игрок человек, возвращает 0, если ИИ, то 1.

Статистика

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

Сейчас на сайте 7 пользователей 1464 гостей