Скрипты - Страница 239 - Форум HeroesWorld-а

Быстрая навигация по основным разделам форума:
Турниры
КАРТЫ
Heroes 6
Heroes 5
Heroes 4
Heroes 3
Heroes 2
Heroes 1
Might&Magic

Герои Меча и Магии 5 - Картостроительство (Редактор карт) В этом разделе можно обсуждать все что касается редактора карт для Heroes of Might and Magic V. Так же здесь обсуждаем картостроительство.

Ответ
Страница 239 из 248
 
Опции темы
#3571
Старый 24.02.2022, 16:55
  #3571
^
Jewily
 
Аватар для Jewily
📖
Регистрация: 25.09.2016
Сообщения: 139
Jewily#4267
Регистрация: 25.09.2016
Сообщения: 139
Jewily#4267
По умолчанию
Re: Скрипты

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

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

По поводу Заката тьмы: там есть система репутации у рас, она сделана через квест. Т.е это работает так: Сущетсвует objective с именем "orcs rep",у которого существует бесконечно много этапов прогресса т.е он невыполним(ибо имеет кастомное условие, как вам известно его завершить можно только скриптом). Ну и собственно когда нужно этому квесту дается определенное число прогресса, т.е увеличение репутации на 5 единиц сдвинет прогресс квеста на 5 единиц. Из-за такого способа её можно удобно выводить в штатном меню заданий внутри игры. Это рабочий способ(я проверил, действительно можно так любые механики репутации реализовывать), но мне кажется несколько нелогичным использовать функционал заданий(которые не предназначены для этого).
Jewily вне форума
Ответить с цитированием
#3572
Старый 24.02.2022, 18:42
  #3572
^
}{0TT@6bI4
 
Аватар для }{0TT@6bI4
📖
Регистрация: 05.09.2019
Адрес: Серебряные Города, Аль-Сафир
Сообщения: 1605
Выставка наград
Регистрация: 05.09.2019
Адрес: Серебряные Города, Аль-Сафир
Сообщения: 1605
Выставка наград
По умолчанию
Re: Скрипты

Бесконечным даже этапы прогресса не могут быть; если начать карту заново, то все прогрессы всех задая скинутся в ноль, если же загружать сейвы, то и значения скриптовых переменных сохранятся, разве нет?

Я просто никак не пойму, вы вроде и говорите о рестарте карты, но про Закат Тьмы — там что, после рестарта карты сохраняется прогресс заданий? Да нет, конечно. О каком тогда хранении локальных данных в задачах может идти речь?
__________________
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
_________________
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
_________________
}{0TT@6bI4 вне форума
Ответить с цитированием
#3573
Старый 24.02.2022, 23:24
  #3573
^
Jewily
 
Аватар для Jewily
📖
Регистрация: 25.09.2016
Сообщения: 139
Jewily#4267
Регистрация: 25.09.2016
Сообщения: 139
Jewily#4267
По умолчанию
Re: Скрипты

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

Добавлено через 4 часа 3 минуты
Чтож, вы были абсолютно правы.
Современные технологии затмили мой разум  
На сейве карта делает свой "слепок", поэтому да, все переменные действительно хранят свои значения. Не знаю, как я это тестировал ранее, но был убежден, что там совсем другой принцип.
Спасибо за вразумление.
Jewily вне форума
Ответить с цитированием
#3574
Старый 24.02.2022, 23:36
  #3574
^
}{0TT@6bI4
 
Аватар для }{0TT@6bI4
📖
Регистрация: 05.09.2019
Адрес: Серебряные Города, Аль-Сафир
Сообщения: 1605
Выставка наград
Регистрация: 05.09.2019
Адрес: Серебряные Города, Аль-Сафир
Сообщения: 1605
Выставка наград
По умолчанию
Re: Скрипты

Рад, что разобрались) smile
__________________
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
_________________
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
_________________
}{0TT@6bI4 вне форума
Ответить с цитированием
#3575
Старый 01.03.2022, 21:03
  #3575
^
Jewily
 
Аватар для Jewily
📖
Регистрация: 25.09.2016
Сообщения: 139
Jewily#4267
Регистрация: 25.09.2016
Сообщения: 139
Jewily#4267
Вопрос
Re: Скрипты

Снова добрый вечер!
Существует ли возможность увеличивать армию в гарнизоне скриптом?
Задокументированной функции не нашел, костыля не придумал.
Знаю что можно получить армию гарнизона через GetObjectArmyTypes().
Пост скриптум:
Засунуть героя в проход гарнизона и ему давать армию идея конечно рабочая, но неэстетичная.
Кстати, если может кто знает(хотя я знаю что есть соседний топик для такого), можно ли зарезервировать героев для любого игрока?
В принципе можно резервировать для "мнимого" игрока и менять ему команду при деплое, но может это можно в редакторе сделать.
Не нашел. 
И существует ли метод "обратной резвервации"? То есть чтобы героя скриптом можно было дергать туда-сюда. Знаю, что можно разрешить найм
резервного героя, и можно его задеплоить.
Jewily вне форума
Ответить с цитированием
#3576
Старый 02.03.2022, 08:25
  #3576
^
}{0TT@6bI4
 
Аватар для }{0TT@6bI4
📖
Регистрация: 05.09.2019
Адрес: Серебряные Города, Аль-Сафир
Сообщения: 1605
Выставка наград
Регистрация: 05.09.2019
Адрес: Серебряные Города, Аль-Сафир
Сообщения: 1605
Выставка наград
По умолчанию
Re: Скрипты

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
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
_________________
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
_________________
}{0TT@6bI4 вне форума
Ответить с цитированием
#3577
Старый 02.03.2022, 08:29
  #3577
^
}{0TT@6bI4
 
Аватар для }{0TT@6bI4
📖
Регистрация: 05.09.2019
Адрес: Серебряные Города, Аль-Сафир
Сообщения: 1605
Выставка наград
Регистрация: 05.09.2019
Адрес: Серебряные Города, Аль-Сафир
Сообщения: 1605
Выставка наград
По умолчанию
Re: Скрипты

По поводу настройки героев-резервиствов, доступных для любого игрока, - только скриптом и можно, хотя рекомендую попробовать добавить в резерв игрокам одного и того же героя. Для этого в Map Properties Tree => players => [0] => ReserveHeroes => Скопируйте AdvMapHero ссылку на зарезервированного героя и для других игроков в ReserveHeroes добавьте новый элемент (Insert при выделенном свойстве ReserveHeroes или ПКМ->Add), в новый элемент скопируйте ссылку. Метод не проверял, но может оказаться рабочим. Может привести к вылетам
Убрать героя из резерва можно командой UnreserveHero
__________________
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
_________________
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
_________________
}{0TT@6bI4 вне форума
Ответить с цитированием
#3578
Старый 02.03.2022, 11:18
  #3578
^
Jewily
 
Аватар для Jewily
📖
Регистрация: 25.09.2016
Сообщения: 139
Jewily#4267
Регистрация: 25.09.2016
Сообщения: 139
Jewily#4267
По умолчанию
Re: Скрипты

Спасибо за ответы, про скрипт - разберусь, резерв попробую и отпишусь, будет ли вылетать.
Jewily вне форума
Ответить с цитированием
#3579
Старый 04.03.2022, 10:36
  #3579
^
Азгалор
 
Аватар для Азгалор
📖
Регистрация: 24.04.2016
Сообщения: 120
Регистрация: 24.04.2016
Сообщения: 120
По умолчанию
Re: Скрипты

JewillСуществует ли возможность увеличивать армию в гарнизоне скриптом?
AddObjectCreatures("скриптовое имя гарнизона", id существа, кол-во)
Азгалор вне форума
Ответить с цитированием
#3580
Старый 04.03.2022, 11:58
  #3580
^
Jewily
 
Аватар для Jewily
📖
Регистрация: 25.09.2016
Сообщения: 139
Jewily#4267
Регистрация: 25.09.2016
Сообщения: 139
Jewily#4267
По умолчанию
Re: Скрипты

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




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

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




                                                                                       




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

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




                                                                                       
Jewily вне форума
Ответить с цитированием
#3581
Старый 04.03.2022, 12:05
  #3581
^
Азгалор
 
Аватар для Азгалор
📖
Регистрация: 24.04.2016
Сообщения: 120
Регистрация: 24.04.2016
Сообщения: 120
По умолчанию
Re: Скрипты

JewillСпасибо, очень странно, что в мануале "из коробки" такой функции не задокументировано.
10 страница в файле HOMM5_A2_Script_Functions.pdf или 9 в HOMM5_Script_Functions.pdf
Азгалор вне форума
Ответить с цитированием
#3582
Старый 04.03.2022, 20:54
  #3582
^
Jewily
 
Аватар для Jewily
📖
Регистрация: 25.09.2016
Сообщения: 139
Jewily#4267
Регистрация: 25.09.2016
Сообщения: 139
Jewily#4267
По умолчанию
Re: Скрипты

Азгалор10 страница в файле HOMM5_A2_Script_Functions.pdf или 9 в HOMM5_Script_Functions.pdf
Удивительно, как люди слепы . Большое спасибо за наводку. 
__________________




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

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




                                                                                       




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

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




                                                                                       
Jewily вне форума
Ответить с цитированием
#3583
Старый 17.03.2022, 00:04
  #3583
^
Jewily
 
Аватар для Jewily
📖
Регистрация: 25.09.2016
Сообщения: 139
Jewily#4267
Регистрация: 25.09.2016
Сообщения: 139
Jewily#4267
По умолчанию
Re: Скрипты

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




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

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




                                                                                       




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

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




                                                                                       
Jewily вне форума
Ответить с цитированием
#3584
Старый 17.03.2022, 01:38
  #3584
^
Азгалор
 
Аватар для Азгалор
📖
Регистрация: 24.04.2016
Сообщения: 120
Регистрация: 24.04.2016
Сообщения: 120
По умолчанию
Re: Скрипты

JewillДобрый вечер. Может кто знает: какой самый простой способ проверить является ли игрок искусственным интеллектом?
Есть какая-то из функции относящаяся к ИИ, которая возвращает nil при её использовании на игрока-человека?
Поиски(ленивые) пока не дали результата, а такая мелочь...
Среди официальных заметил только IsHuman и IsComputer в боевых скриптах. Но, как я понимаю, Вам нужны функции для не боевого скрипта?
Азгалор вне форума
Ответить с цитированием
#3585
Старый 17.03.2022, 02:02
  #3585
^
Долгий
 
Аватар для Долгий
📖
Регистрация: 23.04.2019
Сообщения: 62
Регистрация: 23.04.2019
Сообщения: 62
По умолчанию
Re: Скрипты

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

IsAIPlayer(Player_ID)

Если игрок человек, возвращает 0, если ИИ, то 1.
Долгий вне форума
Ответить с цитированием
Ответ
Страница 239 из 248


Опции темы



Часовой пояс GMT +4, время: 03:29.


vBulletin v3.5.0, Copyright ©2000-2022, Jelsoft Enterprises Ltd. (Русский)

Яндекс цитирование    Top.Mail.Ru