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

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

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

Ответ
Страница 255 из 260
 
Опции темы
#3811
Старый 19.12.2022, 14:56
  #3811
^
AstralLein
 
Аватар для AstralLein
📖
Регистрация: 02.06.2017
Адрес: В Империи Незанхельм.
Сообщения: 3910
Регистрация: 02.06.2017
Адрес: В Империи Незанхельм.
Сообщения: 3910
По умолчанию
Re: Скрипты

Я не помню, но на худой конец ее всегда можно сделать через переменную. 
__________________
Ох это сладостное, поглощающее разум безумие! 

Готовые проекты:


Карты для героев 5:
"Плата за любовь"
"Путь некроманта"
"Темные грани"

Карты для Disciples 3:
"Противостояние"

Проекты в разработке:

Моды для Disciples 3:
"Астельнаир" - разработка возобновлена в мае 2019 год

Карты для героев 5:
"Рок Гримхейма" - в активной разработке
Ох это сладостное, поглощающее разум безумие! 

Готовые проекты:


Карты для героев 5:
"Плата за любовь"
"Путь некроманта"
"Темные грани"

Карты для Disciples 3:
"Противостояние"

Проекты в разработке:

Моды для Disciples 3:
"Астельнаир" - разработка возобновлена в мае 2019 год

Карты для героев 5:
"Рок Гримхейма" - в активной разработке
AstralLein вне форума
Ответить с цитированием
#3812
Старый 04.01.2023, 00:28
  #3812
^
TTPOCTO-DEMOH
📖
Регистрация: 16.11.2016
Сообщения: 21
Регистрация: 16.11.2016
Сообщения: 21
По умолчанию
Re: Скрипты

Здравствуйте. Подскажите, пожалуйста, как включить скрипты на мультиплеерных картах?
TTPOCTO-DEMOH вне форума
Ответить с цитированием
#3813
Старый 04.01.2023, 12:13
  #3813
^
}{0TT@6bI4
 
Аватар для }{0TT@6bI4
📖
Регистрация: 05.09.2019
Адрес: Серебряные Города, Аль-Сафир
Сообщения: 1973
Выставка наград
Регистрация: 05.09.2019
Адрес: Серебряные Города, Аль-Сафир
Сообщения: 1973
Выставка наград
По умолчанию
Re: Скрипты

Скрипты карты приключений на мультиплеерных картах работают! Для включения боевых скриптов и скриптов города нужно пропатчить exe игры специальным патчем (не уверен на 100%, что нужно), могу скинуть в частном порядке.
__________________
С уважением, }{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 вне форума
Ответить с цитированием
#3814
Старый 04.01.2023, 19:54
  #3814
^
IchGViji
 
Аватар для IchGViji
📖
Регистрация: 23.08.2022
Сообщения: 98
Регистрация: 23.08.2022
Сообщения: 98
Сообщение
Re: Скрипты

Всем доброго дня!

С помощью руководства решил я попробовать сделать боевой скрипт.
Возникло пару проблем по нему
1) функция GetDefenderCreatures() выдает ошибку: "Wrong type of argument 1 when calling function GetUnits" в независимости, где я в файле скрипта ее вызову. Пробовал аналогичную функцию, но для атакующего - GetAttackerCreatures(). Первый раз сработала, второй раз та же проблема, что и с Defender.
2) хуки DefenderHeroMove(heroName) и AttackerHeroMove(heroName) при ходе героев не запускаются - в консоли даже нет сообщения, что скрипт вошел в тело функции, и даже ошибки никакой не выдает. Один раз даже было, что хук AttackerHeroMove(heroName) просто зациклился. Стабильно работают только хуки Prepare() и Start().
Можете, пожалуйста, подсказать, как эти проблемы разрешить? 

Содержимое скрипта (пока просто логи, чтобы понять, что работает, что нет):

print("inside combat file");

DEFENDER = GetDefenderHero();
print(DEFENDER);
ATTACKER = GetAttackerHero();
print(ATTACKER);
defenderCreatures = {0};
attackerCreatures = {0};



function Prepare()
  print("inside Prepare function");
  print("Prepare function has ended");
end;

function Start()
  print("inside Start function");
  ShowFlyingSign(GetMapDataPath().."CombatMessage.txt", DEFENDER, 200);
  defenderCreatures = GetDefenderCreatures();
  attackerCreatures = GetAttackerCreatures();
  print(1);
  for key, creature in defenderCreatures do
    print("key=", key, ", creature=", creature);
  end;
  print(attackerCreatures);
  print("Start function has ended");
end;

function DefenderHeroMove(heroName)
  print("inside DefenderHeroMove function");
  ShowFlyingSign(GetMapDataPath().."CombatMessage.txt", DEFENDER, 200);
  print("DefenderHeroMove function has ended");
end;

function AttackerHeroMove(heroName)
  print("inside AttackerHeroMove function");
  ShowFlyingSign(GetMapDataPath().."CombatMessage.txt", DEFENDER, 200);
  print("AttackerHeroMove function has ended");
end;

IchGViji вне форума
Ответить с цитированием
#3815
Старый 04.01.2023, 21:25
  #3815
^
TTPOCTO-DEMOH
📖
Регистрация: 16.11.2016
Сообщения: 21
Регистрация: 16.11.2016
Сообщения: 21
По умолчанию
Re: Скрипты

}{0TT@6bI4Скрипты карты приключений на мультиплеерных картах работают! Для включения боевых скриптов и скриптов города нужно пропатчить exe игры специальным патчем (не уверен на 100%, что нужно), могу скинуть в частном порядке.
Спасибо, видимо я где-то раньше накосячил. Был бы благодарен за патч, патчер у меня имеется если что)
TTPOCTO-DEMOH вне форума
Ответить с цитированием
#3816
Старый 05.01.2023, 00:44
  #3816
^
Gerter
 
Аватар для Gerter
📖
Регистрация: 16.07.2012
Адрес: Санкт-Петербург
Сообщения: 825
pegn0ly#9113
Выставка наград
Регистрация: 16.07.2012
Адрес: Санкт-Петербург
Сообщения: 825
pegn0ly#9113
Выставка наград
По умолчанию
Re: Скрипты

IchGViji

Всем доброго дня!

С помощью руководства решил я попробовать сделать боевой скрипт.
Возникло пару проблем по нему
1) функция GetDefenderCreatures() выдает ошибку: "Wrong type of argument 1 when calling function GetUnits" в независимости, где я в файле скрипта ее вызову. Пробовал аналогичную функцию, но для атакующего - GetAttackerCreatures(). Первый раз сработала, второй раз та же проблема, что и с Defender.
2) хуки DefenderHeroMove(heroName) и AttackerHeroMove(heroName) при ходе героев не запускаются - в консоли даже нет сообщения, что скрипт вошел в тело функции, и даже ошибки никакой не выдает. Один раз даже было, что хук AttackerHeroMove(heroName) просто зациклился. Стабильно работают только хуки Prepare() и Start().
Можете, пожалуйста, подсказать, как эти проблемы разрешить? 

Содержимое скрипта (пока просто логи, чтобы понять, что работает, что нет):

print("inside combat file");

DEFENDER = GetDefenderHero();
print(DEFENDER);
ATTACKER = GetAttackerHero();
print(ATTACKER);
defenderCreatures = {0};
attackerCreatures = {0};



function Prepare()
  print("inside Prepare function");
  print("Prepare function has ended");
end;

function Start()
  print("inside Start function");
  ShowFlyingSign(GetMapDataPath().."CombatMessage.txt", DEFENDER, 200);
  defenderCreatures = GetDefenderCreatures();
  attackerCreatures = GetAttackerCreatures();
  print(1);
  for key, creature in defenderCreatures do
    print("key=", key, ", creature=", creature);
  end;
  print(attackerCreatures);
  print("Start function has ended");
end;

function DefenderHeroMove(heroName)
  print("inside DefenderHeroMove function");
  ShowFlyingSign(GetMapDataPath().."CombatMessage.txt", DEFENDER, 200);
  print("DefenderHeroMove function has ended");
end;

function AttackerHeroMove(heroName)
  print("inside AttackerHeroMove function");
  ShowFlyingSign(GetMapDataPath().."CombatMessage.txt", DEFENDER, 200);
  print("AttackerHeroMove function has ended");
end;


вероятно, проблема в этих двух строчках:
DEFENDER = GetDefenderHero();
print(DEFENDER);
ATTACKER = GetAttackerHero();
print(ATTACKER);

суть в чем - в игре определены 2 константы ATTACKER и DEFENDER, которые соответственно определяют атакующую и защищающуюся стороны боя. Этими строчками ты по сути перезаписываешь эти константы, назначая в них имена юнитов героев вместо стандартных сторон. Дальнейшие ошибки очевидны - GetAttackerCreatures() и GetDefenderCreatures() это просто обертки над функцией более низкого уровня - внутри них происходит вызов GetCreatures(ATTACKER) и GetCreatures(DEFENDER) соответственно. Из-за переопределенных констант, эти функции не могут отработать корректно, что и провоцирует ошибку. Остальной скрипт просто не отрабатывает из-за этих ошибок. Соответственно, решение простое - использовать другие названия для твоих констант имен героев.
__________________
Нет войне.
Нет войне.
Gerter вне форума
Ответить с цитированием
#3817
Старый 06.01.2023, 19:13
  #3817
^
IchGViji
 
Аватар для IchGViji
📖
Регистрация: 23.08.2022
Сообщения: 98
Регистрация: 23.08.2022
Сообщения: 98
Хорошо
Re: Скрипты

Gerterвероятно, проблема в этих двух строчках:
DEFENDER = GetDefenderHero();
print(DEFENDER);
ATTACKER = GetAttackerHero();
print(ATTACKER);

суть в чем - в игре определены 2 константы ATTACKER и DEFENDER, которые соответственно определяют атакующую и защищающуюся стороны боя. Этими строчками ты по сути перезаписываешь эти константы, назначая в них имена юнитов героев вместо стандартных сторон. Дальнейшие ошибки очевидны - GetAttackerCreatures() и GetDefenderCreatures() это просто обертки над функцией более низкого уровня - внутри них происходит вызов GetCreatures(ATTACKER) и GetCreatures(DEFENDER) соответственно. Из-за переопределенных констант, эти функции не могут отработать корректно, что и провоцирует ошибку. Остальной скрипт просто не отрабатывает из-за этих ошибок. Соответственно, решение простое - использовать другие названия для твоих констант имен героев.

Gerter, благодарю за помощь!

Действительно, стоило эти константам дать другие имена, как скрипт пошел как по маслу! По крайней мере, пока я его еще чем-то не сломаю
Получается, ATTACKER и DEFENDER это зарезервированные слова, как к примеру, CREATURE_VAMPIRE.
IchGViji вне форума
Ответить с цитированием
#3818
Старый 06.01.2023, 19:34
  #3818
^
Азгалор
 
Аватар для Азгалор
📖
Регистрация: 24.04.2016
Сообщения: 207
Регистрация: 24.04.2016
Сообщения: 207
По умолчанию
Re: Скрипты

IchGVijiПолучается, ATTACKER и DEFENDER это зарезервированные слова, как к примеру, CREATURE_VAMPIRE.
Выдержка из файла combat-startup.lua:
ATTACKER = 0
DEFENDER = 1

function IsAttacker(unit) return GetUnitSide(unit) == ATTACKER end
function IsDefender(unit) return GetUnitSide(unit) == DEFENDER end

function GetAttackerHero() local temp = GetHero(ATTACKER) return temp end
function GetDefenderHero() local temp = GetHero(DEFENDER) return temp end
function GetAttackerCreatures() local temp = GetCreatures(ATTACKER) return temp end
function GetDefenderCreatures() local temp = GetCreatures(DEFENDER) return temp end
function GetAttackerWarMachines() local temp = GetWarMachines(ATTACKER) return temp end
function GetDefenderWarMachines() local temp = GetWarMachines(DEFENDER) return temp end
function GetAttackerBuildings() local temp = GetBuildings(ATTACKER) return temp end
function GetDefenderBuildings() local temp = GetBuildings(DEFENDER) return temp end
function GetAttackerSpellSpawns() local temp = GetSpellSpawns(ATTACKER) return temp end
function GetDefenderSpellSpawns() local temp = GetSpellSpawns(DEFENDER) return temp end

и т.д.

Так что да, эти две константы трогать нельзя, иначе поломается весь боевой скрипт

Азгалор вне форума
Ответить с цитированием
#3819
Старый 03.02.2023, 12:44
  #3819
^
Марта
📖
Регистрация: 31.01.2020
Сообщения: 80
Регистрация: 31.01.2020
Сообщения: 80
По умолчанию
Re: Скрипты

Доброго времени суток.

Подскажите, если кто может, как добавить созданному эффекту с большой плоской водой блеск и отражения?
Имеется модель, вытащенная из тауна методом эффектов согласно гайду Хоттабыча "Достаём модели из города".
То есть, это не модель, это как раз эффект.
Я сильно увеличила некоторые его части, и всё более-менее норм, но он, собака, по умолчанию не блестит и не отражает, поэтому то, что должно скрываться под этой, типа,  водой ( а там дофига должно скрываться) - выглядит не ахти.
(Особенно скверно она смотрится на переходе между земляными и водными tiles, очень заметна разница между ними, а не должна быть заметна).

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


И сразу второй вопрос.
Почему некоторые Particle без проблем копируются внутри тауна, а некоторые нет?
Например,
Particle:Effects\_(Particle)\Towns\Rampart\MysticP ound\Fountain01
копируется и сохраняется без проблем.
Но брызги от водопада из той же модели
Particle:Effects\_(Effect)\Towns\Rampart\MysticPou nd:item_7772e68f-fed1-40e5-b9e9-0d216e051b90:Particle
хотя и сохраняются, но после, на карте, исчезают.
Я раза четыре пробовала.

Что делать с этим горем, как мне присобачить к водопаду эти брызги, или сделать отдельный эффект нужных брызг?
Хелп кто может. Особенно Хоттабыч).

Прошу прощения, что запостила в неправильный раздел, я только сейчас заметила, что опять в скрипты попала.
Марта вне форума
Ответить с цитированием
#3820
Старый 04.02.2023, 10:16
  #3820
^
}{0TT@6bI4
 
Аватар для }{0TT@6bI4
📖
Регистрация: 05.09.2019
Адрес: Серебряные Города, Аль-Сафир
Сообщения: 1973
Выставка наград
Регистрация: 05.09.2019
Адрес: Серебряные Города, Аль-Сафир
Сообщения: 1973
Выставка наград
По умолчанию
Re: Скрипты

Есть такой момент, что у некоторых партиклов не нужно настраивать сдвиг. То есть если сдвиг модели -300, -280, -20, то у партикла остаётся "родной" — 3, 1.4, 0 (например). Попробуйте

Насчёт бликов на воде — а в городе они были? Вообще, это настраивается дополнительными материалами для модели и, как я понимаю, без вмешательства в модель новые материалы не добавить.
__________________
С уважением, }{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 вне форума
Ответить с цитированием
#3821
Старый 04.02.2023, 16:45
  #3821
^
Марта
📖
Регистрация: 31.01.2020
Сообщения: 80
Регистрация: 31.01.2020
Сообщения: 80
По умолчанию
Re: Скрипты

Здравствуйте, Хоттабыч. Очень рада вас снова читать, я тут загремела в больницу на полгода, а ноута у меня, увы, нет.

Эти партиклы и не надо было особо двигать, но они стопудово не переносятся.
Вот, сами смотрите, я скопировала:

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Light    L_NORMAL    Освещается ли партикл солнцем и ambient
Particle    null    
Position        
Position.x    -0.25    
Position.y    0.3    
Position.z    1.6    
Rotation        
Rotation.x    0    
Rotation.y    0    
Rotation.z    0    
Rotation.w    1    
Scale    1    Коэффициент масштабирования
Speed    0.8    Коэффициент на скорость проигрывания
Offset    0    (seconds) Пауза перед проигрыванием
EndCycle    3    (seconds) Длина одного цикла (не повторять = 0)
CycleCount    0    Количество повторений при проигрывании партикла, 0 = бесконечно
Pivot        Место крепления текстуры к партиклу
Pivot.x    0    
Pivot.y    0    
Textures        
Textures.[0]    Texture:Textures\Effects\Water\Water00    
Textures.[1]    Texture:Textures\Effects\Water\Water01    
Textures.[2]    Texture:Textures\Effects\Water\Water02    
Textures.[3]    Texture:Textures\Effects\Water\Water03    
Textures.[4]    Texture:Textures\Effects\Water\Water04    
Textures.[5]    null    
Textures.[6]    null    
Textures.[7]    null    
Textures.[8]    null    
Textures.[9]    null    
Textures.[10]    null    
Textures.[11]    null    
Textures.[12]    null    
Textures.[13]    null    
Textures.[14]    null    
Textures.[15]    null    
LeaveParticlesWhereStarted    false    Do we need particles be attached to it's source or leaved at birth place?
Priority    0  
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Particle    null  пишут. Но когда сохраняешь в городе, там никакой не нулл, там всё в порядке.
Я четыре раза переделывала, не переносятся, заразы. И добавить их в модель на карте не получается, добавляешь, а при перезагрузке опять нулл.
.
Может быть, я попробую сделать отдельную модель пены, но тоже непонятно как, если эта хрень не переносится.
Но точно нет способа её перенести?

Насчёт бликов, в городе их не было, но я нашла способ, как их сделать.
Надо просто засунуть в Дату, в отдельные папки _(Model)\Effects\Towns, файл Rampart_MysticPound-lambert3.(Material), и там вручную прописать <Effect>M_REFLECT_WATER</Effect>  вместо M_GENERIC, и вода сразу становится как родная.
Жаль, с водопадом так не выходит, потому что если там поменять <Effect>M_CLOUDS_H5</Effect>, вода перестаёт течь.
В этих вручную вложенных файлах вообще можно многое делать. Можно ли туда прилепить второй эффект, интересно...

Добавлено через 2 часа 19 минут
И вот ещё вопрос. Можно ли вытащить из замка модель без эффектов? 
Например, здоровенное эльфийское дерево ведь так и напрашивается. Но эффектов на нём нет.
Марта вне форума
Ответить с цитированием
#3822
Старый 04.02.2023, 21:01
  #3822
^
}{0TT@6bI4
 
Аватар для }{0TT@6bI4
📖
Регистрация: 05.09.2019
Адрес: Серебряные Города, Аль-Сафир
Сообщения: 1973
Выставка наград
Регистрация: 05.09.2019
Адрес: Серебряные Города, Аль-Сафир
Сообщения: 1973
Выставка наград
По умолчанию
Re: Скрипты

Встроенные элементы нельзя просто скопировать; выделите все свойства партикла через Shift, нажмите Ctrl+C. Затем в эффекте создайте новый пустой партикл с любым именем, добавьте в нём в Textures столько же элементов и нажмите Ctrl+V

Все свойсвта должны перенестись в новый партикл и уж никак не сбрасываться
__________________
С уважением, }{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 вне форума
Ответить с цитированием
#3823
Старый 05.02.2023, 10:34
  #3823
^
Марта
📖
Регистрация: 31.01.2020
Сообщения: 80
Регистрация: 31.01.2020
Сообщения: 80
По умолчанию
Re: Скрипты

Хмм, большое спасибо, я буду пробовать.
Там много интересных моделей без эффектов.

Добавлено через 45 минут
Сорри, но я не поняла.
Как оттуда попасть в Эффекты?
Там только модели и материалы, доступ к папке Эффекты возможен только через открытое окно, но там, кажется, не сохранить ничего.

Или я неправильно поняла, и это надо с карты делать, а не из окна города?

Добавлено через 10 часов 29 минут
ЗыЗы Чтобы не засорять больше тему про скрипты, я перепишу свои вопросы в Вопросы по редактору карт.
Марта вне форума
Ответить с цитированием
#3824
Старый 06.02.2023, 00:31
  #3824
^
Shiroyasha2910
📖
Регистрация: 07.07.2019
Сообщения: 42
Регистрация: 07.07.2019
Сообщения: 42
По умолчанию
Re: Скрипты

Добрый вечер. Пытаюсь разобраться в боевых скриптах.. пока безуспешно. Видел тут кто-то писал, что есть руководство по боевым скриптам, может кто ссылочку на нее дать? Ибо я не нашел.
Возможно ли, что также, кто поможет сделать необходимый скрипт? Если это реализовать возможно конечно. Идея такова. Битва началась и если у героя вкачено умение "Покровительство Асхи", то на поле боя появятся 3 архангела.
Shiroyasha2910 вне форума
Ответить с цитированием
#3825
Старый 06.02.2023, 00:52
  #3825
^
IchGViji
 
Аватар для IchGViji
📖
Регистрация: 23.08.2022
Сообщения: 98
Регистрация: 23.08.2022
Сообщения: 98
Сообщение
Re: Скрипты

Shiroyasha2910Добрый вечер. Пытаюсь разобраться в боевых скриптах.. пока безуспешно. Видел тут кто-то писал, что есть руководство по боевым скриптам, может кто ссылочку на нее дать? Ибо я не нашел.
Возможно ли, что также, кто поможет сделать необходимый скрипт? Если это реализовать возможно конечно. Идея такова. Битва началась и если у героя вкачено умение "Покровительство Асхи", то на поле боя появятся 3 архангела.


Shiroyasha2910, касательно боевых скриптов есть отличное руководство от уважаемого }{0TT@6bI4: боевые скрипты - гайд
А касательно вашей задумки, то сам пока подобного не делал, но как я вижу, стоит попробовать использовать функцию HasHeroSkill(), а результат записать в переменную через функцию SetGameVar() и его получить в файле боевого скрипта через GetGameVar(). Возможно есть и иной способ, но этот мне кажется самым очевидным.

__________________

Сценарий:
"Холм мертвецов"

Сценарий:
"Холм мертвецов"
IchGViji вне форума
Ответить с цитированием
Ответ
Страница 255 из 260


Опции темы



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


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

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