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

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

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

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

ДолгийIsAIPlayer(Player_ID)

Если игрок человек, возвращает 0, если ИИ, то 1.
Спасибо. 
В очередной раз я неудомеваю: что за документ валяется в папке с игрой? 
У меня (как вы заметили), опять нет этого... 
Хотя уж в документе то найти строчку я могу. 
В следующий раз буду интуитивно подбирать имя функции на авось.  

Добавлено через 1 минуту
АзгалорСреди официальных заметил только IsHuman и IsComputer в боевых скриптах. Но, как я понимаю, Вам нужны функции для не боевого скрипта?
Да, вообще я хотел для adv map. В целом я то знаю как это проверить,через некоторый танец, но там 10 строк на 1 простое действие. 
Долгий, вон, нарыл видимо на топике не задокументированных.  
__________________




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

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




                                                                                       




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

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




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

Jewill, вы же редактором скриптов пользуетесь? В нужном месте файла нажимаете, потом Ctrl+SPACE. Откроется контекстное окно — в нём все функции + незадокументированные (около 99%). Заодно там же айдишники.

Если поставить каретку в свойствах функции, в которую нужно поставить айди,например, после Trigger( , то в контекстное меню сразу ввверх прилетят айдишники триггеров (или айдишники, которые нужны для функции).
__________________
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
_________________
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
_________________
}{0TT@6bI4 вне форума
Ответить с цитированием
#3588
Старый 17.03.2022, 17:32
  #3588
^
Jewily
 
Аватар для Jewily
📖
Регистрация: 25.09.2016
Сообщения: 139
Jewily#4267
Регистрация: 25.09.2016
Сообщения: 139
Jewily#4267
По умолчанию
Re: Скрипты

}{0TT@6bI4Jewill, вы же редактором скриптов пользуетесь? В нужном месте файла нажимаете, потом Ctrl+SPACE. Откроется контекстное окно — в нём все функции + незадокументированные (около 99%). Заодно там же айдишники.

Если поставить каретку в свойствах функции, в которую нужно поставить айди,например, после Trigger( , то в контекстное меню сразу ввверх прилетят айдишники триггеров (или айдишники, которые нужны для функции).
Спасибо, действительно, так удобнее работать. 
У меня кстати получилось немного пошаманив интегрировать редактор скриптов в VS Code, но некоторые моменты ещё не работают. 
Если разберусь — нужно кому-нибудь? 
Ещё в принципе не является проблемой туда подключить файловую структуру через скрипт автоархивации. 
Но это запарно, а вот нужно ли это кому-то не знаю. 
__________________




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

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




                                                                                       




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

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




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

Получилось — открыть код редактора скриптов в visual studio или visual studio превратить в редактор геройских скриптов?) Интересно узнать, какой функционал тогда

Пока преимущества работы в vs не очень понятны, поэтому скидывать не прошу...
__________________
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
_________________
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
_________________
}{0TT@6bI4 вне форума
Ответить с цитированием
#3590
Старый 18.03.2022, 09:41
  #3590
^
Jewily
 
Аватар для Jewily
📖
Регистрация: 25.09.2016
Сообщения: 139
Jewily#4267
Регистрация: 25.09.2016
Сообщения: 139
Jewily#4267
По умолчанию
Re: Скрипты

}{0TT@6bI4Получилось — открыть код редактора скриптов в visual studio или visual studio превратить в редактор геройских скриптов?) Интересно узнать, какой функционал тогда

Пока преимущества работы в vs не очень понятны, поэтому скидывать не прошу...
Да нет преимуществ, кроме привычки. Мне это как сесть в любимые жигули: просто для души. А вот новичкам, не видевшим код в текстовых документах и на листочках, может было бы удобно. 
Но таковых очень мало, увы. А функционально там не работает  система сокращений(Механически нужно пораскидывать функции, описания им изменить(кодировки ругаются),в общем мелочи но муторные), и пока что не устранена проблема того, что , как вам известно, в героях версия lua одна, а в редакторе немного посвежее. 
__________________




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

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




                                                                                       




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

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




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

Понял, спасибо
__________________
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
_________________
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
_________________
}{0TT@6bI4 вне форума
Ответить с цитированием
#3592
Старый 06.05.2022, 14:58
  #3592
^
Долгий
 
Аватар для Долгий
📖
Регистрация: 23.04.2019
Сообщения: 62
Регистрация: 23.04.2019
Сообщения: 62
По умолчанию
Re: Скрипты

Кто-нибудь знает название функции, которая регулирует прирост существ в двеллингах? Моя идея следующая: если условие не соблюдается, то при наступлении новой недели в дневной функций(та, что NEW_DAY_TRIGGER) прирост двеллинга равен 0.

P.S. уже нашёл SetObjectDwellingCreatures. Как не странно, она не работает на двеллинги, только города. Есть ли подобная функция, работающая на двеллинги?
Долгий вне форума
Ответить с цитированием
#3593
Старый 06.05.2022, 22:54
  #3593
^
Jewily
 
Аватар для Jewily
📖
Регистрация: 25.09.2016
Сообщения: 139
Jewily#4267
Регистрация: 25.09.2016
Сообщения: 139
Jewily#4267
По умолчанию
Re: Скрипты

ДолгийКто-нибудь знает название функции, которая регулирует прирост существ в двеллингах? Моя идея следующая: если условие не соблюдается, то при наступлении новой недели в дневной функций(та, что NEW_DAY_TRIGGER) прирост двеллинга равен 0.

P.S. уже нашёл SetObjectDwellingCreatures. Как не странно, она не работает на двеллинги, только города. Есть ли подобная функция, работающая на двеллинги?
Честно говоря задача вроде тривиальная, а я в своё время тоже решения не нашел) Описанная функция работает лишь с городами, это так. А другой не нашел, и в документации не видел лично.
__________________




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

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




                                                                                       




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

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




                                                                                       
Jewily вне форума
Ответить с цитированием
#3594
Старый 12.05.2022, 04:45
  #3594
^
Марта
📖
Регистрация: 31.01.2020
Сообщения: 64
Регистрация: 31.01.2020
Сообщения: 64
По умолчанию
Re: Скрипты

Хоттабыч, хотя вас тут пару месяцев не было, но вдруг вы ответите.
(Или кто-нибудь, поможите, люди добрые).

Вы меня когда-то учили писать комбат скрипт для ГГ. Вот, если помните:
------------------------------------------------------------------------------------------------------
function Start()

Level_R = ceil(GetGameVar("LevR") + 0)

    if GetHeroName(GetAttackerHero()) == 'Raelag' then
        local mana = GetUnitManaPoints(GetAttackerHero());
        SetUnitManaPoints(GetAttackerHero(), 200);
        repeat sleep(1) until GetUnitManaPoints(GetAttackerHero())==200;
        sleep(1);
         if Level_R < 20 then
           for i, creature in GetDefenderCreatures() do
             startThread(UnitCastAimedSpell, GetAttackerHero(), 4, creature);
                 end;
               SetUnitManaPoints(GetAttackerHero(), mana);
            else
              for i, creature in GetDefenderCreatures() do
               startThread(UnitCastAimedSpell, GetAttackerHero(), 226, creature);
                end
                 SetUnitManaPoints(GetAttackerHero(), mana);
                   end
    else
    if GetHeroName(GetDefenderHero()) == 'Raelag' then
        local mana = GetUnitManaPoints(GetDefenderHero())
        SetUnitManaPoints(GetDefenderHero(), 200);
        repeat sleep(1) until GetUnitManaPoints(GetDefenderHero())==200
        sleep(1);
         if Level_R < 20 then
           for i, creature in GetAttackerCreatures() do
            startThread(UnitCastAimedSpell, GetDefenderHero(), 4, creature);
             end;
              SetUnitManaPoints(GetDefenderHero(), mana);
             else
               for i, creature in GetAttackerCreatures() do
                startThread(UnitCastAimedSpell, GetDefenderHero(), 226, creature);
                  end;
                  SetUnitManaPoints(GetDefenderHero(), mana);
                     end
                   end;
                  end;
                end;
------------------------------------------------------------------------------------------------------

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

------------------------------------------------------------------------------------------------------
if GetHeroName(GetAttackerHero()) == 'Shadwyn' then
      if GetHeroName(GetDefenderHero()) == 'Nur' then
            local mana = GetUnitManaPoints(GetDefenderHero())
        SetUnitManaPoints(GetDefenderHero(), 200);
        repeat sleep(1) until GetUnitManaPoints(GetDefenderHero())==200
        for i, creature in GetAttackerCreatures() do
          startThread(UnitCastAimedSpell, GetDefenderHero(), 3, creature)
        end;
        SetUnitManaPoints(GetDefenderHero(), mana);
        
        else
        if GetHeroName(GetAttackerHero()) == 'Shadwyn' then
        local mana = GetUnitManaPoints(GetAttackerHero());
        SetUnitManaPoints(GetAttackerHero(), 200);
        repeat sleep(1) until GetUnitManaPoints(GetAttackerHero())==200;
        sleep(1);
         if Level_R < 20 then
           for i, creature in GetDefenderCreatures() do
             startThread(UnitCastAimedSpell, GetAttackerHero(), 4, creature);
                 end;
               SetUnitManaPoints(GetAttackerHero(), mana);
            else
              for i, creature in GetDefenderCreatures() do
               startThread(UnitCastAimedSpell, GetAttackerHero(), 279, creature);
                end
                 SetUnitManaPoints(GetAttackerHero(), mana);
                   end
------------------------------------------------------------------------------------------------------

И тд, дальше про защитника - так нифига не работает. Хотя Назир исправно фигачит по моей Илайе молнией, но в других боях она не может применить Ледяную глыбу, пишут "ERROR: Wrong type of argument 1,when calling function GetHeroName".

Пыталась менять местами if GetHeroName(GetAttackerHero()) == 'Shadwyn' then и  if GetHeroName(GetDefenderHero()) == 'Nur' then - такая же фигня.

Пыталась в MapScript прописывать Назира вместе с Илайей:

path = '/'..GetMapDataPath()
main_hero = 'Shadwyn'
MagHero = 'Nur'

SetHeroCombatScript('Shadwyn', path.."CombatScript.xdb#xpointer(/Script)");
SetHeroCombatScript('Nur', path.."CombatScript.xdb#xpointer(/Script)");

- тоже не помогает.
Пыталась даже навесить Назиру отдельный CombatScript  - но похоже, игра его вообще не видит.

Вообще, возможно прописать комбат-скрипты нескольким героям, и как это сделать?
Марта вне форума
Ответить с цитированием
#3595
Старый 13.05.2022, 00:09
  #3595
^
}{0TT@6bI4
 
Аватар для }{0TT@6bI4
📖
Регистрация: 05.09.2019
Адрес: Серебряные Города, Аль-Сафир
Сообщения: 1605
Выставка наград
Регистрация: 05.09.2019
Адрес: Серебряные Города, Аль-Сафир
Сообщения: 1605
Выставка наград
По умолчанию
Re: Скрипты

Марта, здравствуйте. Ну, почему не было несколько месяцев? Я форум по обязанностям посещаю не реже двух раз в неделю. С телефона не очень удобно понимать код; завтра вечером гляну с компьютера

Одно скажу сразу: если в бою встретились два героя, у которых у обоих привязан боевой скрипт, то используется боевой скрипт нападающего.
__________________
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
_________________
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
_________________
}{0TT@6bI4 вне форума
Ответить с цитированием
#3596
Старый 13.05.2022, 09:47
  #3596
^
Марта
📖
Регистрация: 31.01.2020
Сообщения: 64
Регистрация: 31.01.2020
Сообщения: 64
По умолчанию
Re: Скрипты

Хоттабыч, - не было потому что я в прошлый раз нарисовала здоровенную карту, очень рельефную и высокую, но оказалось, что играть так одно мучение).
Так что, я тогда плюнула и забила, сорри, - столько сил зря потратила.
Сейчас-то всё легче, я учла прошлые ошибки. Напишите как сможете, - мне ещё долго до главного гада рисовать, а второй комбат скрипт нужен ему.
Марта вне форума
Ответить с цитированием
#3597
Старый 13.05.2022, 20:41
  #3597
^
}{0TT@6bI4
 
Аватар для }{0TT@6bI4
📖
Регистрация: 05.09.2019
Адрес: Серебряные Города, Аль-Сафир
Сообщения: 1605
Выставка наград
Регистрация: 05.09.2019
Адрес: Серебряные Города, Аль-Сафир
Сообщения: 1605
Выставка наград
По умолчанию
Re: Скрипты

local defH, attH = GetDefenderHero(), GetAttackerHero()
if defH then --Если присутствует герой защищ. (нападающий есть абсолютно всегда), то...
  if GetHeroName(defH) == ".." and GetHeroName(attH) = "...." then --Если защищается такой-то герой, а нападает такой-то, то...
    --Дальше действия с героями; defH — содержит имя защищающегося героя, attH — нападающего
   --Также для этого, второго скрипта уберите проверку if Level_R>20 (и её else и end'ы) — это же проверка уровней Раилага?
    --Ваш код...
  end
end
__________________
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
_________________
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
_________________
}{0TT@6bI4 вне форума
Ответить с цитированием
#3598
Старый 13.05.2022, 20:43
  #3598
^
}{0TT@6bI4
 
Аватар для }{0TT@6bI4
📖
Регистрация: 05.09.2019
Адрес: Серебряные Города, Аль-Сафир
Сообщения: 1605
Выставка наград
Регистрация: 05.09.2019
Адрес: Серебряные Города, Аль-Сафир
Сообщения: 1605
Выставка наград
По умолчанию
Re: Скрипты

Ошибка Wrong type of argument 1, when calling function GetHeroName() связана с тем, что когда нет защищающегося героя (битва с нейтралами), то GetDefenderHero возвращает nil, а GetHeroName первым параметром обязана принимать имя героя. И когда в неё прилетает nil, она выдает ошибку. В связи с этим нужна проверка на отличие переменной от nil (код выше)
__________________
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
_________________
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
_________________
}{0TT@6bI4 вне форума
Ответить с цитированием
#3599
Старый 13.05.2022, 22:55
  #3599
^
Марта
📖
Регистрация: 31.01.2020
Сообщения: 64
Регистрация: 31.01.2020
Сообщения: 64
По умолчанию
Re: Скрипты

Хоттабыч, пожалуйста, будьте проще с народом). Я нифига не поняла, так как программированию никогда не училась.

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

Это всё в комбат-скрипт писать? А функцию надо новую сделать, и написать её под первой?
Так , вроде, ошибку выдаёт:

-------------------------------------------------------------------------------------------
function Nur_battle()

local defH, attH = GetDefenderHero(), GetAttackerHero()

  if GetHeroName(defH) == "Nur" and GetHeroName(attH) = "Shadwyn" then
        local mana = GetUnitManaPoints(GetDefenderHero())
        SetUnitManaPoints(GetDefenderHero(), 200);
        repeat sleep(1) until GetUnitManaPoints(GetDefenderHero())==200
        for i, creature in GetAttackerCreatures() do
        startThread(UnitCastAimedSpell, GetDefenderHero(), 3, creature)
        end;
        SetUnitManaPoints(GetDefenderHero(), mana);
elseif
if GetHeroName(defH) == "Shadwyn" and GetHeroName(attH) = "Nur" then
        local mana = GetUnitManaPoints(GetAttackerHero())
        SetUnitManaPoints(GetAttackerHero(), 200);
        repeat sleep(1) until GetUnitManaPoints(GetAttackerHero())==200
        for i, creature in GetDefenderCreatures() do
        startThread(UnitCastAimedSpell, GetAttackerHero(), 3, creature)
        end;
        SetUnitManaPoints(GetAttackerHero(), mana);
-------------------------------------------------------------------------------------------
и тд.

Editor выдаёт ошибку на строчке 
if GetHeroName(defH) == "Nur" and GetHeroName(attH) = "Shadwyn" then

Если пишешь 
if defH then
if GetHeroName(defH) == "Nur" and GetHeroName(attH) = "Shadwyn" then
то он выдаёт ошибку на строчке if defH then.

Я понимаю, что туплю, но не тупить не могу). Ответьте, когда у вас будет время, пока мне это не горит.

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

Марта

Editor выдаёт ошибку на строчке 
if GetHeroName(defH) == "Nur" and GetHeroName(attH) = "Shadwyn" then

Если пишешь 
if defH then
if GetHeroName(defH) == "Nur" and GetHeroName(attH) = "Shadwyn" then
то он выдаёт ошибку на строчке if defH then.

Я понимаю, что туплю, но не тупить не могу). Ответьте, когда у вас будет время, пока мне это не горит.

Конкретно тут ошибка потому что  GetHeroName(attH) = "Shadwyn" содержит одно равно, а нужно два. 
Прочитайте руководства в группе Хоттабыча, комбат скрипты это не самое простое, что есть в героях. Я,например, с учётом достаточного опыта написания скриптов глобальной карты вам особо не помогу - т.к не имею опыта написания боевых скриптов, могу чушь посоветовать.
__________________




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

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




                                                                                       




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

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




                                                                                       
Jewily вне форума
Ответить с цитированием
Ответ
Страница 240 из 248


Опции темы



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


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

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