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

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

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

Ответ
Страница 257 из 260
 
Опции темы
#3841
Старый 11.03.2023, 21:33
  #3841
^
Азгалор
 
Аватар для Азгалор
📖
Регистрация: 24.04.2016
Сообщения: 206
Регистрация: 24.04.2016
Сообщения: 206
По умолчанию
Re: Скрипты

DevoRevo

Приветствую. Голову уже сломал, как работают SetHeroLootable и IsHeroLootable

Я попробовал IsHeroLootable(“heroname”, nil)
Пробовал SetHeroLootable(“heroname”,nil)
SetHeroLootable(“heroname”, disable)
 Все равно как не крути, артефакты у героя отбираются. 

Подскажите, что я делаю не так?

Консоль ни на что не жалуется?
Азгалор вне форума
Ответить с цитированием
#3842
Старый 12.03.2023, 00:13
  #3842
^
DevoRevo
 
Аватар для DevoRevo
📖
Регистрация: 02.07.2020
Адрес: Сургут
Сообщения: 101
Регистрация: 02.07.2020
Адрес: Сургут
Сообщения: 101
По умолчанию
Re: Скрипты

АзгалорКонсоль ни на что не жалуется?

Абсолютно не на что.
DevoRevo вне форума
Ответить с цитированием
#3843
Старый 14.03.2023, 05:59
  #3843
^
Марта
📖
Регистрация: 31.01.2020
Сообщения: 80
Регистрация: 31.01.2020
Сообщения: 80
По умолчанию
Re: Скрипты

И у меня вопрос назрел. 
Скажите пожалуйста кто-нибудь, - есть ли какой-то способ скриптом перенести на карте предмет статик из одной точки в другую так, чтобы он по координате z был на новом месте выше или ниже нуля?
Позарез надо, и давно.
Как телепортировать на нуль я знаю, а вот выше или ниже - не попадалось.
Марта вне форума
Ответить с цитированием
#3844
Старый 15.03.2023, 12:42
  #3844
^
DevoRevo
 
Аватар для DevoRevo
📖
Регистрация: 02.07.2020
Адрес: Сургут
Сообщения: 101
Регистрация: 02.07.2020
Адрес: Сургут
Сообщения: 101
По умолчанию
Re: Скрипты

DevoRevo

Приветствую. Голову уже сломал, как работают SetHeroLootable и IsHeroLootable

Я попробовал IsHeroLootable(“heroname”, nil)
Пробовал SetHeroLootable(“heroname”,nil)
SetHeroLootable(“heroname”, disable)
 Все равно как не крути, артефакты у героя отбираются. 

Подскажите, что я делаю не так?


В общем, сам решил данный вопрос. 
Написал так в общем коде:

SetHeroLootable("Berein", nil);

 

DevoRevo вне форума
Ответить с цитированием
#3845
Старый 15.03.2023, 19:31
  #3845
^
kycaka
📖
Регистрация: 13.06.2019
Сообщения: 6
Регистрация: 13.06.2019
Сообщения: 6
По умолчанию
Re: Скрипты

подскажите плиз кто шарит в скриптах.
у меня на карте есть хижина пророка. в ней дается задание повторяемое. саму хижину я настроил правильно. указано что нужно для выполнения задания. указана награда. указано что задание многоразовое.
проблема вот в чем - в виде награды выбрано выдача существа. но помимо этого мне нужно чтобы забирались определенные ресурсы у того героя который выполнит задание. причем это типа падлянка такая). принес игрок 20 дерева ему дали дендроида например но в виде подлянки забрали все имеющиеся у героя на этот момент ресурсы и снизили его удачу и мораль на 20 единиц. 
я так понимаю придется писать через скрипт так как все уже перепробовал. важно чтобы скрипт срабатывал именно в тот момент и именно по тому герою который сдаст квест в хижине. ну и соответственно скрипт многоразовый так как задание повторяемое. отпишите плиз в личку кто сможет помочь. заранее благодарен.
kycaka вне форума
Ответить с цитированием
#3846
Старый 30.03.2023, 15:58
  #3846
^
Капуста
 
Аватар для Капуста
📖
Регистрация: 07.02.2020
Сообщения: 11
Регистрация: 07.02.2020
Сообщения: 11
По умолчанию
Re: Скрипты

Здравствуйте!

Нельзя ли как-нибудь прибить костыль к игре/карте, чтобы делать реквест на веб сервер? Я думал как-то попробовать через lua скрипты в карте это сделать... Не представляю честно с какой стороны подойти к игре в этом вопросе. Мне вообще кажется это маловозможным без правки в ехешнике игры. Все же интересны соображения старожил карто/модостроения.

Капуста вне форума
Ответить с цитированием
#3847
Старый 31.03.2023, 13:44
  #3847
^
}{0TT@6bI4
 
Аватар для }{0TT@6bI4
📖
Регистрация: 05.09.2019
Адрес: Серебряные Города, Аль-Сафир
Сообщения: 1971
Выставка наград
Регистрация: 05.09.2019
Адрес: Серебряные Города, Аль-Сафир
Сообщения: 1971
Выставка наград
По умолчанию
Re: Скрипты

В игре есть кнопка "подключиться к ubi.com" в разделе сетевой игры, через эту кнопку можно подвязать любую ссылку (только скорее всего айпи адресом), а чисто теоретически её можно размножить на экран карты приключений и так далее.
Кроме того, если вы хороший программист с кучей свободного времени, то вы можете написать программу, в фоновом режиме обрабатывающию данные игры и по каким-либо ивентам (проще всего — комбинации клавиш) накладывать поверх либо окно со ссылкой, либо сразу открывать ссылку в браузере
__________________
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
Discord-сервер "Герои 5: S.T.A.L.K.E.R"
Сервер по модификации "Герои 5: S.T.A.L.K.E.R"
_________________
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
Discord-сервер "Герои 5: S.T.A.L.K.E.R"
Сервер по модификации "Герои 5: S.T.A.L.K.E.R"
_________________
}{0TT@6bI4 вне форума
Ответить с цитированием
#3848
Старый 29.04.2023, 17:47
  #3848
^
Shiroyasha2910
📖
Регистрация: 07.07.2019
Сообщения: 42
Регистрация: 07.07.2019
Сообщения: 42
По умолчанию
Re: Скрипты

Здравствуйте, есть ли возможность с помощью скриптов выставить определенную неделю?
Типа, выполнил условие, значит теперь будет неделя голубя 
Shiroyasha2910 вне форума
Ответить с цитированием
#3849
Старый 30.04.2023, 15:43
  #3849
^
Gerter
 
Аватар для Gerter
📖
Регистрация: 16.07.2012
Адрес: Санкт-Петербург
Сообщения: 824
pegn0ly#9113
Выставка наград
Регистрация: 16.07.2012
Адрес: Санкт-Петербург
Сообщения: 824
pegn0ly#9113
Выставка наград
По умолчанию
Re: Скрипты

нет.
__________________
Нет войне.
Нет войне.
Gerter вне форума
Ответить с цитированием
#3850
Старый 06.05.2023, 00:41
  #3850
^
Азгалор
 
Аватар для Азгалор
📖
Регистрация: 24.04.2016
Сообщения: 206
Регистрация: 24.04.2016
Сообщения: 206
По умолчанию
Re: Скрипты

Привет, возможно ли прописать какой-то скрипт, которым можно будет передавать название объекта в текст? Конкретно, хочу сделать квест на поиск случайного артефакта, т.е. через random будет выбираться id артефакта, однако не знаю можно ли передать название выбранного id артефакта в аргумент текста(не в тексты для квеста, а в Msg box), или же придётся создавать таблицу для всех айдишников артефактов?
Азгалор вне форума
Ответить с цитированием
#3851
Старый 06.05.2023, 13:20
  #3851
^
Долгий
 
Аватар для Долгий
📖
Регистрация: 23.04.2019
Сообщения: 91
Регистрация: 23.04.2019
Сообщения: 91
По умолчанию
Re: Скрипты

АзгалорПривет, возможно ли прописать какой-то скрипт, которым можно будет передавать название объекта в текст? Конкретно, хочу сделать квест на поиск случайного артефакта, т.е. через random будет выбираться id артефакта, однако не знаю можно ли передать название выбранного id артефакта в аргумент текста(не в тексты для квеста, а в Msg box), или же придётся создавать таблицу для всех айдишников артефактов?

Можно создать массив, где в качестве позиции будет использован id артефакта, и там будет храниться имя. Например:

artefactArray = {}

artefactArray[4] = "Лук из рога единорога" --где 4 это id артефакта

rndArt = random(ваше число)

MessageBox({"Ссылка_на_текст"; artefact = artefactArray[rndArt]})--где artefact это <value=artefact> в вашем текстовом файле

Добавлено через 12 часов 23 минуты
А так, я не нашел ни одной функции, которая бы возвращала текстовое имя объекта. Если нужен большой список возможных артефактов, то прийдётся писать таблицу
Долгий вне форума
Ответить с цитированием
#3852
Старый 06.05.2023, 23:50
  #3852
^
Jack_of_shadows
 
Аватар для Jack_of_shadows
📖
Регистрация: 08.09.2013
Сообщения: 507
Выставка наград
Регистрация: 08.09.2013
Сообщения: 507
Выставка наград
По умолчанию
Re: Скрипты

Азгалор, ловите таблицу. Взято из моей карты Путь героя, поэтому не полностью универсально, но название и описание артефакта доступны по id с помощью функций GetArtefactName(id) / GetArtefactDesc(id). Если нужно будет, можете в карте найти файлик const.lua, там есть аналогичные таблицы и для заклинаний, существ, скиллов и прочего.

-- типы артефактов. распределял по логике, а не по слотам, в которые они ставятся
ART_TYPE_WEAPON = 1;    -- оружие
ART_TYPE_SHIELD = 2;    -- щиты
ART_TYPE_BOOTS = 3;     -- сапоги и поножи
ART_TYPE_HELMET = 4;    -- шлемы и шапки
ART_TYPE_ARMOR = 5;     -- кирасы
ART_TYPE_CLOAK = 6;     -- плащи
ART_TYPE_RING = 7;      -- кольца
ART_TYPE_NECKLACE = 8;  -- ожерелья
ART_TYPE_MISC = 9;      -- прочее

-- список артефактов
ARTEFACT_TABLE_NAME = 1;  -- файл с названием артефакта
ARTEFACT_TABLE_TYPE = 2;  -- тип артефакта
ARTEFACT_TABLE_COST = 3;  -- номинальная цена артефакта (не равна внутрегеройской)
artefact_table =
{
	[ARTIFACT_SWORD_OF_RUINS]                = {'SwordOfRuin', ART_TYPE_WEAPON, 2000}, -- Меч Мощи
	[ARTIFACT_GREAT_AXE_OF_GIANT_SLAYING]    = {'Great_Axe_of_giant_slaying', ART_TYPE_WEAPON, 8000}, -- Секира горного короля
	[ARTIFACT_WAND_OF_X]                     = {'Wand_of_x', ART_TYPE_WEAPON, 4000}, -- Палочка с заклинанием
	[ARTIFACT_UNICORN_HORN_BOW]              = {'UnicornHornBow', ART_TYPE_WEAPON, 10000}, -- Лук из рога Единорога
	[ARTIFACT_TITANS_TRIDENT]                = {'Titan`s_trident', ART_TYPE_WEAPON, 4000}, -- Трезубец Титанов
	[ARTIFACT_STAFF_OF_VEXINGS]              = {'Staff_of_vexing', ART_TYPE_WEAPON, 16000}, -- Посох Преисподней
	[ARTIFACT_SHACKLES_OF_WAR]               = {'ShacklesOfWar', ART_TYPE_MISC, 20000}, -- Кандалы неизбежности
	[ARTIFACT_FOUR_LEAF_CLOVER]              = {'Four_leaf_clover', ART_TYPE_MISC, 2000}, -- Четырехлистный клевер
	[ARTIFACT_ICEBERG_SHIELD]                = {'Iceberg_shield', ART_TYPE_SHIELD, 5000}, -- Ледяной щит
	[ARTIFACT_GOLDEN_SEXTANT]                = {'Golden_sextant', ART_TYPE_MISC, 3000}, -- Секстант морских эльфов
	[ARTIFACT_CROWN_OF_COURAGE]              = {'Crown_of_courage', ART_TYPE_HELMET, 15000}, -- Корона льва
	[ARTIFACT_CROWN_OF_MANY_EYES]            = {'Crown_of_many_eyes', ART_TYPE_HELMET, 1000}, -- Корона всевидящего
	[ARTIFACT_PLATE_MAIL_OF_STABILITY]       = {'PlateMailOfStability', ART_TYPE_ARMOR, 20000}, -- Доспехи Забытого Героя
	[ARTIFACT_BREASTPLATE_OF_PETRIFIED_WOOD] = {'Breastplate_of_petrified_wood', ART_TYPE_ARMOR, 2000}, -- Нагрудник огромной мощи
	[ARTIFACT_PEDANT_OF_MASTERY]             = {'Pedant_of_mastery', ART_TYPE_NECKLACE, 15000}, -- Кулон Мастерства
	[ARTIFACT_NECKLACE_OF_BRAVERY]           = {'Necklace_of_bravery', ART_TYPE_NECKLACE, 2000}, -- Ошейник льва
	[ARTIFACT_WEREWOLF_CLAW_NECKLACE]        = {'Werewolf_claw_necklace', ART_TYPE_NECKLACE, 6000}, -- Ожерелье Кровавого Когтя
	[ARTIFACT_EVERCOLD_ICICLE]               = {'Evercold_icicle', ART_TYPE_NECKLACE, 4000}, -- Кулон ледяных объятий
	[ARTIFACT_NECKLACE_OF_POWER]             = {'Necklace_of_power', ART_TYPE_NECKLACE, 8000}, -- Ожерелье победы
	[ARTIFACT_RING_OF_LIGHTING_PROTECTION]   = {'Ring_of_lightning_protection', ART_TYPE_RING, 3000}, -- Кольцо защиты от молний
	[ARTIFACT_RING_OF_LIFE]                  = {'RingOfLife', ART_TYPE_RING, 7000}, -- Кольцо жизненной силы
	[ARTIFACT_RING_OF_HASTE]                 = {'Ring_of_haste', ART_TYPE_RING, 18000}, -- Кольцо скорости
	[ARTIFACT_NIGHTMARISH_RING]              = {'Nightmarish_ring', ART_TYPE_RING, 7000}, -- Кольцо сломленного духа
	[ARTIFACT_BOOTS_OF_SPEED]                = {'BootsOfSpeed', ART_TYPE_BOOTS, 8000}, -- Сапоги путешественника
	[ARTIFACT_GOLDEN_HORSESHOE]              = {'Golden_horseshoe', ART_TYPE_MISC, 6000}, -- Золотая подкова
	[ARTIFACT_WAYFARER_BOOTS]                = {'Wayfarer_boots', ART_TYPE_BOOTS, 5000}, -- Сапоги открытого пути
	[ARTIFACT_BOOTS_OF_INTERFERENCE]         = {'Boots_of_interference', ART_TYPE_BOOTS, 1000}, -- Сапоги магической защиты
	[ARTIFACT_ENDLESS_SACK_OF_GOLD]          = {'EndlessSackOfGold', ART_TYPE_MISC, 40000}, -- Сума бесконечного золота
	[ARTIFACT_ENDLESS_BAG_OF_GOLD]           = {'Endless_bag_of_gold', ART_TYPE_MISC, 10000}, -- Мешочек бесконечного золота
	[ARTIFACT_ANGEL_WINGS]                   = {'Angel_wings', ART_TYPE_CLOAK, 40000}, -- Крылья ангела
	[ARTIFACT_LION_HIDE_CAPE]                = {'Lion_hide_cape', ART_TYPE_CLOAK, 6000}, -- Накидка с гривой льва
	[ARTIFACT_PHOENIX_FEATHER_CAPE]          = {'Phoenix_feather_cape', ART_TYPE_CLOAK, 4000}, -- Накидка из перьев феникса
	[ARTIFACT_CLOAK_OF_MOURNING]             = {'Cloak_of_mourning', ART_TYPE_CLOAK, 12000}, -- Плащ Смертоносной Тени
	[ARTIFACT_HELM_OF_ENLIGHTMENT]           = {'Helm_of_enlightenment', ART_TYPE_HELMET, 4000}, -- Тюрбан просвещенности
	[ARTIFACT_CHAIN_MAIL_OF_ENLIGHTMENT]     = {'Chain_mail_of_enlightenment', ART_TYPE_ARMOR, 6000}, -- Кольчуга просвещенности
	[ARTIFACT_DRAGON_SCALE_ARMOR]            = {'Dragon_scale_armor', ART_TYPE_ARMOR, 10000}, -- Доспехи из чешуи дракона
	[ARTIFACT_DRAGON_SCALE_SHIELD]           = {'DragonscaleShield', ART_TYPE_SHIELD, 10000}, -- Щит из чешуи дракона
	[ARTIFACT_DRAGON_BONE_GRAVES]            = {'Dragon_bone_greaves', ART_TYPE_BOOTS, 10000}, -- Поножи из кости дракона
	[ARTIFACT_DRAGON_WING_MANTLE]            = {'Dragon_wing_mantle', ART_TYPE_CLOAK, 10000}, -- Мантия из крыльев дракона
	[ARTIFACT_DRAGON_TEETH_NECKLACE]         = {'Dragon_teeth_necklace', ART_TYPE_NECKLACE, 10000}, -- Ожерелье из зубов дракона
	[ARTIFACT_DRAGON_TALON_CROWN]            = {'Dragon_talon_crown', ART_TYPE_HELMET, 10000}, -- Корона из когтей дракона
	[ARTIFACT_DRAGON_EYE_RING]               = {'Dragon_eye_ring', ART_TYPE_RING, 10000}, -- Кольцо Глаз дракона
	[ARTIFACT_DRAGON_FLAME_TONGUE]           = {'Dragon_flame_tongue', ART_TYPE_WEAPON, 10000}, -- Пламенный язык дракона
	[ARTIFACT_ROBE_OF_MAGI]                  = {'Robe_of_magi', ART_TYPE_ARMOR, 20000}, -- Халат Сар-Иссы
	[ARTIFACT_STAFF_OF_MAGI]                 = {'Staff_of_magi', ART_TYPE_WEAPON, 20000}, -- Посох Сар-Иссы
	[ARTIFACT_CROWN_OF_MAGI]                 = {'Crown_of_magi', ART_TYPE_HELMET, 20000}, -- Корона Сар-Иссы
	[ARTIFACT_RING_OF_MAGI]                  = {'Ring_of_magi', ART_TYPE_RING, 20000}, -- Кольцо Сар-Иссы
	[ARTIFACT_DWARVEN_MITHRAL_CUIRASS]       = {'Dwarven_mithral_cuirass', ART_TYPE_ARMOR, 15000}, -- Кираса короля гномов
	[ARTIFACT_DWARVEN_MITHRAL_GREAVES]       = {'Dwarven_mithral_greaves', ART_TYPE_BOOTS, 15000}, -- Поножи короля гномов
	[ARTIFACT_DWARVEN_MITHRAL_HELMET]        = {'Dwarven_mithral_helmet', ART_TYPE_HELMET, 15000}, -- Шлем короля гномов
	[ARTIFACT_DWARVEN_MITHRAL_SHIELD]        = {'Dwarven_mithral_shield', ART_TYPE_SHIELD, 15000}, -- Щит короля гномов
	[ARTIFACT_SCROLL_OF_SPELL_X]             = {'ScrollOfSpell', ART_TYPE_MISC, 7000}, -- Магический свиток с заклинанием
	[ARTIFACT_GRAAL]                         = {'Graal', ART_TYPE_MISC, 100000}, -- Слеза Асхи
	[ARTIFACT_BOOTS_OF_LEVITATION]           = {'Boots_of_levitation', ART_TYPE_BOOTS, 12000}, -- Сапоги левитации
	[ARTIFACT_SKULL_HELMET]                  = {'Skull_Helmet', ART_TYPE_HELMET, 2000}, -- Шлем некроманта
	[ARTIFACT_VALORIOUS_ARMOR]               = {'Valorious_Armor', ART_TYPE_ARMOR, 3000}, -- Доспехи бесстрашия
	[ARTIFACT_BOOTS_OF_SWIFTNESS]            = {'Boots_of_Swiftness', ART_TYPE_BOOTS, 5000}, -- Сапоги странника
	[ARTIFACT_MOONBLADE]                     = {'Moonblade', ART_TYPE_WEAPON, 4000}, -- Лунный клинок
	[ARTIFACT_RING_OF_CELERITY]              = {'Ring_of_Celerity', ART_TYPE_RING, 8000}, -- Кольцо стремительности
	[ARTIFACT_BAND_OF_CONJURER]              = {'Band_of_Conjurer', ART_TYPE_RING, 7000}, -- Пояс элементалей
	[ARTIFACT_EARTHSLIDERS]                  = {'Earthsliders', ART_TYPE_BOOTS, 4000}, -- Изумрудные туфли
	[ARTIFACT_RIGID_MANTLE]                  = {'Rigid_Mantle', ART_TYPE_CLOAK, 3000}, -- Плащ Силанны
	[ARTIFACT_JINXING_BAND]                  = {'Jinxing_Band', ART_TYPE_RING, 6000}, -- Проклятое кольцо
	[ARTIFACT_BONESTUDDED_LEATHER]           = {'Bonestudded_Leather', ART_TYPE_ARMOR, 3000}, -- Туника из плоти
	[ARTIFACT_WISPERING_RING]                = {'Wispering_Ring', ART_TYPE_RING, 4000}, -- Кольцо предостережения
	[ARTIFACT_HELM_OF_CHAOS]                 = {'Helm_of_Chaos', ART_TYPE_HELMET, 4000}, -- Шлем Хаоса
	[ARTIFACT_TWISTING_NEITHER]              = {'Twisting_neither', ART_TYPE_NECKLACE, 8000}, -- Кулон Поглощения
	[ARTIFACT_SANDALS_OF_THE_SAINT]          = {'Sandals_of_the_Saint', ART_TYPE_BOOTS, 12000}, -- Сандалии Святого
	[ARTIFACT_SHAWL_OF_GREAT_LICH]           = {'Shawl_of_the_great_lich', ART_TYPE_CLOAK, 14000}, -- Плащ Сандро
	[ARTIFACT_RING_OF_DEATH]                 = {'Ring_of_Death', ART_TYPE_RING, 4000}, -- Кольцо Грешников
	[ARTIFACT_NECROMANCER_PENDANT]           = {'Necromancer_Pendant', ART_TYPE_NECKLACE, 7000}, -- Амулет некроманта
	[ARTIFACT_FREIDA]                        = {'Freida', ART_TYPE_MISC, 1000}, -- Фрида (fake)
	[ARTIFACT_RING_OF_THE_SHADOWBRAND]       = {'Ring_of_the_Shadowbrand', ART_TYPE_RING, 1000}, -- Кольцо Заклейменных Тенью (fake)
	[ARTIFACT_OGRE_CLUB]                     = {'Ogre_Club', ART_TYPE_WEAPON, 15000}, -- Дубина людоеда
	[ARTIFACT_OGRE_SHIELD]                   = {'Ogre_Shield', ART_TYPE_SHIELD, 15000}, -- Щит людоеда
	[ARTIFACT_TOME_OF_DESTRUCTION]           = {'Tome_of_Destruction', ART_TYPE_MISC, 20000}, -- Том магии Хаоса
	[ARTIFACT_TOME_OF_LIGHT_MAGIC]           = {'Tome_of_Light_Magic', ART_TYPE_MISC, 20000}, -- Том магии Света
	[ARTIFACT_TOME_OF_DARK_MAGIC]            = {'Tome_of_Dark_Magic', ART_TYPE_MISC, 20000}, -- Том магии Тьмы
	[ARTIFACT_TOME_OF_SUMMONING_MAGIC]       = {'Tome_of_Summoning_Magic', ART_TYPE_MISC, 20000}, -- Том магии Призыва
	[ARTIFACT_BEGINNER_MAGIC_STICK]          = {'Beginer_Magic_Stick', ART_TYPE_WEAPON, 2000}, -- Волшебная палочка новичка
	[ARTIFACT_RUNIC_WAR_AXE]                 = {'Runic_War_Axe', ART_TYPE_WEAPON, 10000}, -- Рунный боевой топор
	[ARTIFACT_RUNIC_WAR_HARNESS]             = {'Runic_War_Harness', ART_TYPE_ARMOR, 10000}, -- Рунная боевая упряжь
	[ARTIFACT_SKULL_OF_MARKAL]               = {'Skull_of_Markal', ART_TYPE_MISC, 18000}, -- Череп Маркела
	[ARTIFACT_BEARHIDE_WRAPS]                = {'Bearhide_Wraps', ART_TYPE_CLOAK, 3000}, -- Тайные защитные покровы
	[ARTIFACT_DWARVEN_SMITHY_HUMMER]         = {'Dwarven_Smithy_Hammer', ART_TYPE_WEAPON, 5000}, -- Гномий кузнечный молот
	[ARTIFACT_RUNE_OF_FLAME]                 = {'Rune_of_Flame', ART_TYPE_MISC, 4000}, -- Руна пламени
	[ARTIFACT_TAROT_DECK]                    = {'Tarot_Deck', ART_TYPE_MISC, 3000}, -- Колода Таро
	[ARTIFACT_CROWN_OF_LEADER]               = {'Crown_Of_Leader', ART_TYPE_HELMET, 5000}, -- Корона лидерства
	[ARTIFACT_MASK_OF_DOPPELGANGER]          = {'Mask_Of_Doppelganger', ART_TYPE_HELMET, 16000}, -- Маска справедливости
	[ARTIFACT_EDGE_OF_BALANCE]               = {'Edge_Of_Balance', ART_TYPE_WEAPON, 2000}, -- На грани равновесия
	[ARTIFACT_RING_OF_MACHINE_AFFINITY]      = {'Ring_Of_Machine_Affinity', ART_TYPE_RING, 18000}, -- Кольцо родства с машинами
	[ARTIFACT_HORN_OF_PLENTY]                = {'Horn_Of_Plenty', ART_TYPE_MISC, 20000}, -- Рог изобилия
	[ARTIFACT_RING_OF_UNSUMMONING]           = {'Ring_Of_Unsummoning', ART_TYPE_RING, 3000}, -- Кольцо изгнания
	[ARTIFACT_BOOK_OF_POWER]                 = {'Book_Of_Power', ART_TYPE_MISC, 9000}, -- Том Силы
	[ARTIFACT_TREEBORN_QUIVER]               = {'Treeborn_Quiver', ART_TYPE_MISC, 10000}, -- Изумительный колчан
	[ARTIFACT_PRINCESS]                      = {'Princess_Aelina', ART_TYPE_MISC, 1000}, -- Принцесса Аэлина (fake)
};

function GetArtefactName(id)
  if(id == ARTIFACT_BEARHIDE_WRAPS) then
    return '/Text/Game/Artifacts/'..artefact_table[id][ARTEFACT_TABLE_NAME]..'/name.txt'
  else
    return '/Text/Game/Artifacts/'..artefact_table[id][ARTEFACT_TABLE_NAME]..'/Name.txt'
  end
end

function GetArtefactDesc(id)
  return '/Text/Game/Artifacts/'..artefact_table[id][ARTEFACT_TABLE_NAME]..'/Description.txt'
end

function GetArtefactType(id)
  return artefact_table[id][ARTEFACT_TABLE_TYPE]
end

function GetArtefactCost(id)
  return artefact_table[id][ARTEFACT_TABLE_COST]
end
__________________
РПГ-сценарий для HoMM5: Путь героя

ЧаВо по созданию карт для HoMM5: ЧаВо
РПГ-сценарий для HoMM5: Путь героя

ЧаВо по созданию карт для HoMM5: ЧаВо
Jack_of_shadows вне форума
Ответить с цитированием
#3853
Старый 28.05.2023, 16:04
  #3853
^
MaiorPain
📖
Регистрация: 14.09.2013
Сообщения: 9
Регистрация: 14.09.2013
Сообщения: 9
По умолчанию
Re: Скрипты

Здравствуйте. Подскажите, пожалуйста: как в боевом скрипте дождаться окончания проигрываемой анимации. 

 

Обязательно ли запускать анимацию в отдельном потоке, или можно запускать её в основном?

 

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

Вот код используемых функций:

function Cast(unit, target)
  combatSetPause(not nil);
  CastBlindForFree(unit, target);
  playAnimation(target, 'hit', ONESHOT_STILL);
  table.insert(blind_array, target);
  combatSetPause(nil);
  return not nil
end

function CastBlindForFree(caster, target)
  SetUnitManaPoints(caster, 100);
  local mana_before_cast = GetUnitManaPoints(caster);
  repeat sleep(1) until(GetUnitManaPoints(caster) == 100);
  UnitCastAimedSpell(caster, SPELL_BLIND, target);
  sleep(4);
  SetUnitManaPoints(caster, mana_before_cast);
  repeat sleep(1) until(GetUnitManaPoints(caster) == mana_before_cast);
end

Другими словами именно логика отрабатывает корректно, а как синхронизировать анимации, чтобы они проигрывались последовательно, а не основные игровые анимации прерывали анимацию каста. 

 

Большое спасибо за уделённое время и внимание к прочтению вопроса, будут благодарен за информацию. 

MaiorPain вне форума
Ответить с цитированием
#3854
Старый 28.05.2023, 20:53
  #3854
^
Долгий
 
Аватар для Долгий
📖
Регистрация: 23.04.2019
Сообщения: 91
Регистрация: 23.04.2019
Сообщения: 91
По умолчанию
Re: Скрипты

MaiorPain

Здравствуйте. Подскажите, пожалуйста: как в боевом скрипте дождаться окончания проигрываемой анимации. 

 

Обязательно ли запускать анимацию в отдельном потоке, или можно запускать её в основном?

 

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

Вот код используемых функций:

function Cast(unit, target)
  combatSetPause(not nil);
  CastBlindForFree(unit, target);
  playAnimation(target, 'hit', ONESHOT_STILL);
  table.insert(blind_array, target);
  combatSetPause(nil);
  return not nil
end

function CastBlindForFree(caster, target)
  SetUnitManaPoints(caster, 100);
  local mana_before_cast = GetUnitManaPoints(caster);
  repeat sleep(1) until(GetUnitManaPoints(caster) == 100);
  UnitCastAimedSpell(caster, SPELL_BLIND, target);
  sleep(4);
  SetUnitManaPoints(caster, mana_before_cast);
  repeat sleep(1) until(GetUnitManaPoints(caster) == mana_before_cast);
end

Другими словами именно логика отрабатывает корректно, а как синхронизировать анимации, чтобы они проигрывались последовательно, а не основные игровые анимации прерывали анимацию каста. 

 

Большое спасибо за уделённое время и внимание к прочтению вопроса, будут благодарен за информацию. 


while combatReadyPerson() == nil do sleep(1) end

Данный код "спит" пока ход не принадлежит никакому существу: в момент старта боя или во время проигрывания анимации. Если не поможет, то тогда только через ожидание, но стоит учитывать что sleep() в боевом скрипте отличается от аналога на карте приключений. Аргумент sleep() должен исчисляться сотнями чтобы выдать хоть какую-то видимую задержку в боевом скрипте
Долгий вне форума
Ответить с цитированием
#3855
Старый 29.05.2023, 00:26
  #3855
^
Jack_of_shadows
 
Аватар для Jack_of_shadows
📖
Регистрация: 08.09.2013
Сообщения: 507
Выставка наград
Регистрация: 08.09.2013
Сообщения: 507
Выставка наград
По умолчанию
Re: Скрипты

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

И насколько я понимаю, вы же делаете каст юнитом во время его хода в хуке UnitMove(unit)? Тогда если каст состоялся, нужно просто чтобы эта функция вернула not nil и игра не будет сама управлять этим существом в этот ход.
__________________
РПГ-сценарий для HoMM5: Путь героя

ЧаВо по созданию карт для HoMM5: ЧаВо
РПГ-сценарий для HoMM5: Путь героя

ЧаВо по созданию карт для HoMM5: ЧаВо
Jack_of_shadows вне форума
Ответить с цитированием
Ответ
Страница 257 из 260


Опции темы



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


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

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