Скрипты для начинающих - Страница 26 - Форум HeroesWorld-а

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

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

Ответ
Страница 26 из 28
 
Опции темы
#376
Старый 27.10.2023, 03:18
  #376
^
Азгалор
 
Аватар для Азгалор
📖
Регистрация: 24.04.2016
Сообщения: 207
Регистрация: 24.04.2016
Сообщения: 207
По умолчанию
Re: Скрипты для начинающих

AngryTapok1337, я там код поправил, попробуй его) А вообще, на что консоль жалуется? Может, ошибка появляется в другой строке. Или у тебя ошибку не выдаёт, просто сама функция не работает?

Добавлено через 25 минут
Потестил, всё работает. Правда, есть одна ошибка: конечную точку для доставки в город нужно ставить не точку где расположен город, а точку входа в город, т.е. где встают герои когда посещают город. Хотя и без этой правки караван отспавнился, существами наполнился. Просто, никуда не ехал а стоял на точке спавна, ежедневно выдавая стандартную ошибку невозможности движения караванов как будто он чем-то блокирован или гарнизон города не имеет слотов. Таким образом, мой изначальный вариант скрипта(без дополнения с проверкой на выполненное задание) работает.
Азгалор вне форума
Ответить с цитированием
#377
Старый 27.10.2023, 11:31
  #377
^
AngryTapok1337
📖
Регистрация: 14.10.2023
Сообщения: 16
Регистрация: 14.10.2023
Сообщения: 16
По умолчанию
Re: Скрипты для начинающих

АзгалорAngryTapok1337, я там код поправил, попробуй его) А вообще, на что консоль жалуется? Может, ошибка появляется в другой строке. Или у тебя ошибку не выдаёт, просто сама функция не работает?

Добавлено через 25 минут
Потестил, всё работает. Правда, есть одна ошибка: конечную точку для доставки в город нужно ставить не точку где расположен город, а точку входа в город, т.е. где встают герои когда посещают город. Хотя и без этой правки караван отспавнился, существами наполнился. Просто, никуда не ехал а стоял на точке спавна, ежедневно выдавая стандартную ошибку невозможности движения караванов как будто он чем-то блокирован или гарнизон города не имеет слотов. Таким образом, мой изначальный вариант скрипта(без дополнения с проверкой на выполненное задание) работает.

 

Вообще не работает,  как бы ни вставлял. При этом в строке не выдает ошибки когда караван должен заспавнится. Как будто в коде вообще нет про караван ничего. Возможно дело в остальном коде или вообще в карте?

Вложения
Тип файла: h5m ZimaMap1v2NoScriptsNoQuests.h5m (250.4 Кбайт, 5 просмотров)
AngryTapok1337 вне форума
Ответить с цитированием
#378
Старый 27.10.2023, 17:09
  #378
^
Азгалор
 
Аватар для Азгалор
📖
Регистрация: 24.04.2016
Сообщения: 207
Регистрация: 24.04.2016
Сообщения: 207
По умолчанию
Re: Скрипты для начинающих

AngryTapok1337Вообще не работает,  как бы ни вставлял. При этом в строке не выдает ошибки когда караван должен заспавнится. Как будто в коде вообще нет про караван ничего. Возможно дело в остальном коде или вообще в карте?
Как только запустил карту, меня сразу же с порога встречает ошибка на отсутствующий регион RegionFight7, на который у тебя ссылаются 2 строки в функции RegionFight2F. Закомментировал их, перезапустил карту - появляется ошибка с караваном при попытке его повернуть. sleep(4) стоит не в том месте, должен был стоять перед SetObjectRotation(как в том коде который я изначально и присылал. Его же ты скидывал в прошлом посте с припиской "Получилось следующее"), из-за чего игра не успевает прогрузить караван, после чего мгновенно пытается его повернуть и ломает скрипт потому что пытается повлиять на объект которого ещё технически нет на карте(работает как с DeployReserveHero). Да, и ещё... Угол поворота поставь в -90, т.к. разворачивается лицом к углу карты
Азгалор вне форума
Ответить с цитированием
#379
Старый 27.10.2023, 17:23
  #379
^
AngryTapok1337
📖
Регистрация: 14.10.2023
Сообщения: 16
Регистрация: 14.10.2023
Сообщения: 16
По умолчанию
Re: Скрипты для начинающих

АзгалорКак только запустил карту, меня сразу же с порога встречает ошибка на отсутствующий регион RegionFight7, на который у тебя ссылаются 2 строки в функции RegionFight2F. Закомментировал их, перезапустил карту - появляется ошибка с караваном при попытке его повернуть. sleep(4) стоит не в том месте, должен был стоять перед SetObjectRotation(как в том коде который я изначально и присылал. Его же ты скидывал в прошлом посте с припиской "Получилось следующее"), из-за чего игра не успевает прогрузить караван, после чего мгновенно пытается его повернуть и ломает скрипт потому что пытается повлиять на объект которого ещё технически нет на карте(работает как с DeployReserveHero). Да, и ещё... Угол поворота поставь в -90, т.к. разворачивается лицом к углу карты

Я ошибку с регионом когда скидывал увидел и пофиксил, но, видимо, забыл сохранить😁

 

Спасибо за помощь - приду домой попробую переставить слип)

AngryTapok1337 вне форума
Ответить с цитированием
#380
Старый 27.10.2023, 17:56
  #380
^
Азгалор
 
Аватар для Азгалор
📖
Регистрация: 24.04.2016
Сообщения: 207
Регистрация: 24.04.2016
Сообщения: 207
По умолчанию
Re: Скрипты для начинающих

AngryTapok1337, ну и незначительно, но на всякий случай, от лишнего спама в консоли - в SetObjectEnabled для выключения объектов стоит использовать nil вместо false. Скрипт от этого не ломается, просто засоряет консоль лишним текстом)
Азгалор вне форума
Ответить с цитированием
#381
Старый 27.10.2023, 22:03
  #381
^
AngryTapok1337
📖
Регистрация: 14.10.2023
Сообщения: 16
Регистрация: 14.10.2023
Сообщения: 16
По умолчанию
Re: Скрипты для начинающих

АзгалорКак только запустил карту, меня сразу же с порога встречает ошибка на отсутствующий регион RegionFight7, на который у тебя ссылаются 2 строки в функции RegionFight2F. Закомментировал их, перезапустил карту - появляется ошибка с караваном при попытке его повернуть. sleep(4) стоит не в том месте, должен был стоять перед SetObjectRotation(как в том коде который я изначально и присылал. Его же ты скидывал в прошлом посте с припиской "Получилось следующее"), из-за чего игра не успевает прогрузить караван, после чего мгновенно пытается его повернуть и ломает скрипт потому что пытается повлиять на объект которого ещё технически нет на карте(работает как с DeployReserveHero). Да, и ещё... Угол поворота поставь в -90, т.к. разворачивается лицом к углу карты

Все заработало, спасибо большое!smile

 

Оставлю код, мало ли кому понадобится

 

CARAVAN = "caravan"

function respawn_caravan()
    if (GetDate( DAY_OF_WEEK ) == 5) and ( GetObjectiveState("NaydiSuhestv1") == OBJECTIVE_COMPLETED ) then
        car = CARAVAN..GetDate(DAY)
        CreateCaravan(car, PLAYER_1, GROUND, 173, 68, GROUND, 156, 159 )
        sleep(4)
        SetObjectRotation(car, 240)
        AddObjectCreatures(car, CREATURE_CHAMPION, 5)
        AddObjectCreatures(car, CREATURE_LONGBOWMAN, 75)
        AddObjectCreatures(car, CREATURE_VINDICATOR, 50)
        AddObjectCreatures(car, CREATURE_ZEALOT, 15)
        sleep(4)
        MessageBox ("/Maps/SingleMissions/ZimaMap1v2NoScriptsNoQuests/Rally.txt")
    end
end

AngryTapok1337 вне форума
Ответить с цитированием
#382
Старый 30.10.2023, 01:24
  #382
^
AngryTapok1337
📖
Регистрация: 14.10.2023
Сообщения: 16
Регистрация: 14.10.2023
Сообщения: 16
По умолчанию
Re: Скрипты для начинающих

Хотел снова идти сюда просить помощи со скриптом но каким-то невероятным образом смог заставить его работать. smile

 

Скрипт передает игроку город и героя когда он завершает задание(В моем случае задание изначально скрыто, поэтому просто оставить OBJECTIVE_STATE_CHANGE_TRIGGER я не мог). Скорее всего это можно было написать проще, и если так, то меня поправят. Но короче оставлю, мало ли кому-то пригодится.

 

function InfernoF()
 if ( GetObjectiveState("KillDruid") == OBJECTIVE_COMPLETED ) then
         MessageBox ("/Maps/SingleMissions/ZimaMap1v2NoScriptsNoQuests/Succubus2.txt")
         sleep(1)
         SetObjectOwner( "InfTown", 1 )
         DeployReserveHero( "Biara", 28, 21, UNDERGROUND )
 end
end

Trigger(OBJECTIVE_STATE_CHANGE_TRIGGER, "KillDruid", "InfernoF")

 



Добавлено через 4 минуты

И опять я прошу помощи.

Суть в чем? У меня были нормальные рабочие скрипты для того, чтобы герой входил в регион и начиналась битва. Все работало отлично. Но внезапно мне под хвост ударила вожжа и я захотел сделать игроку на старте двоих героев(отчасти потому что карта большая и одним героем ее пылесосить можно до второго пришествия, но не суть). И вот я поставил второго героя игроку, и тут же все пошло по одному месте - скрипт работает штатно и бой начинается, но... бой ведет только первый герой(Далее - герой1). Т.е когда в скриптовый регион заходит герой2 то битву все равно ведет герой1, не взирая на то где он сейчас находится. 

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

Скрипт прилагается.

function Region1F ()
         MessageBox ("/Maps/SingleMissions/ZimaMap1v2NoScriptsNoQuests/Spasenie1.txt")
         StartCombat("RedHeavenHero04", nil, 4, 93, 100, 93, 100, 95, 75, 101, 15, nil)
         RemoveObject('g1')
         RemoveObject('g2')
         RemoveObject('g3')
         RemoveObject('g4')
         RemoveObject('g5')
         RemoveObject('g6')
         sleep(1)
Trigger(REGION_ENTER_AND_STOP_TRIGGER,"Region1",nil)
end
Trigger(REGION_ENTER_AND_STOP_TRIGGER,"Region1","Region1F")

 

Заранее спасибо!

AngryTapok1337 вне форума
Ответить с цитированием
#383
Старый 30.10.2023, 07:19
  #383
^
BlueHeavenHero
 
Аватар для BlueHeavenHero
📖
Регистрация: 20.08.2022
Адрес: "Асхан/Священная Империя Единорога/Светлолесье"
Сообщения: 426
Регистрация: 20.08.2022
Адрес: "Асхан/Священная Империя Единорога/Светлолесье"
Сообщения: 426
По умолчанию
Re: Скрипты для начинающих

AngryTapok1337

Хотел снова идти сюда просить помощи со скриптом но каким-то невероятным образом смог заставить его работать. smile

 

Скрипт передает игроку город и героя когда он завершает задание(В моем случае задание изначально скрыто, поэтому просто оставить OBJECTIVE_STATE_CHANGE_TRIGGER я не мог). Скорее всего это можно было написать проще, и если так, то меня поправят. Но короче оставлю, мало ли кому-то пригодится.

 

function InfernoF()
 if ( GetObjectiveState("KillDruid") == OBJECTIVE_COMPLETED ) then
         MessageBox ("/Maps/SingleMissions/ZimaMap1v2NoScriptsNoQuests/Succubus2.txt")
         sleep(1)
         SetObjectOwner( "InfTown", 1 )
         DeployReserveHero( "Biara", 28, 21, UNDERGROUND )
 end
end

Trigger(OBJECTIVE_STATE_CHANGE_TRIGGER, "KillDruid", "InfernoF")

 



Добавлено через 4 минуты

И опять я прошу помощи.

Суть в чем? У меня были нормальные рабочие скрипты для того, чтобы герой входил в регион и начиналась битва. Все работало отлично. Но внезапно мне под хвост ударила вожжа и я захотел сделать игроку на старте двоих героев(отчасти потому что карта большая и одним героем ее пылесосить можно до второго пришествия, но не суть). И вот я поставил второго героя игроку, и тут же все пошло по одному месте - скрипт работает штатно и бой начинается, но... бой ведет только первый герой(Далее - герой1). Т.е когда в скриптовый регион заходит герой2 то битву все равно ведет герой1, не взирая на то где он сейчас находится. 

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

Скрипт прилагается.

function Region1F ()
         MessageBox ("/Maps/SingleMissions/ZimaMap1v2NoScriptsNoQuests/Spasenie1.txt")
         StartCombat("RedHeavenHero04", nil, 4, 93, 100, 93, 100, 95, 75, 101, 15, nil)
         RemoveObject('g1')
         RemoveObject('g2')
         RemoveObject('g3')
         RemoveObject('g4')
         RemoveObject('g5')
         RemoveObject('g6')
         sleep(1)
Trigger(REGION_ENTER_AND_STOP_TRIGGER,"Region1",nil)
end
Trigger(REGION_ENTER_AND_STOP_TRIGGER,"Region1","Region1F")

 

Заранее спасибо!

Напишу только скрипт, т.к. лень объяснять. 
function Region1F (hero)
         MessageBox ("/Maps/SingleMissions/ZimaMap1v2NoScriptsNoQuests/Spasenie1.txt")
         StartCombat(hero, nil, 4, 93, 100, 93, 100, 95, 75, 101, 15, nil)
         RemoveObject('g1')
         RemoveObject('g2')
         RemoveObject('g3')
         RemoveObject('g4')
         RemoveObject('g5')
         RemoveObject('g6')
         sleep(1)
Trigger(REGION_ENTER_AND_STOP_TRIGGER,"Region1",nil)
end
Trigger(REGION_ENTER_AND_STOP_TRIGGER,"Region1","Region1F")
__________________
Всем привет,я BlueHeavenHero, любитель Героев Меча и Магии 5 и фанат Дронов-убийц, пишу свою книгу.
#СинийРайскийГерой
by BlueHeavenHero 
- мой ТГ-канал со всякой ерундой, сочинениями и рисуночками.

=======================================
Мои
карты:
"Падший рыцарь"
"Сердце Хаоса"
Мои моды:

"Странствующий рыцарь"
"Наёмники"
"Существа в замке на глобальной карте"

Всем привет,я BlueHeavenHero, любитель Героев Меча и Магии 5 и фанат Дронов-убийц, пишу свою книгу.
#СинийРайскийГерой
by BlueHeavenHero 
- мой ТГ-канал со всякой ерундой, сочинениями и рисуночками.

=======================================
Мои
карты:
"Падший рыцарь"
"Сердце Хаоса"
Мои моды:

"Странствующий рыцарь"
"Наёмники"
"Существа в замке на глобальной карте"

BlueHeavenHero вне форума
Ответить с цитированием
#384
Старый 30.10.2023, 07:21
  #384
^
Азгалор
 
Аватар для Азгалор
📖
Регистрация: 24.04.2016
Сообщения: 207
Регистрация: 24.04.2016
Сообщения: 207
По умолчанию
Re: Скрипты для начинающих

AngryTapok1337И опять я прошу помощи. Суть в чем? У меня были нормальные рабочие скрипты для того, чтобы герой входил в регион и начиналась битва. Все работало отлично. Но внезапно мне под хвост ударила вожжа и я захотел сделать игроку на старте двоих героев(отчасти потому что карта большая и одним героем ее пылесосить можно до второго пришествия, но не суть). И вот я поставил второго героя игроку, и тут же все пошло по одному месте - скрипт работает штатно и бой начинается, но... бой ведет только первый герой(Далее - герой1). Т.е когда в скриптовый регион заходит герой2 то битву все равно ведет герой1, не взирая на то где он сейчас находится. Вопрос следующий - как изменить скрипт, чтобы бой вел не конкретный герой, а тот, который заходит в регион. Скрипт прилагается. Заранее спасибо!
Вот так, но допишем что скрипт должен работать только на наших героев, иначе прибежит(ну а вдруг?) вражеский бот(что возможно не по сценарию), и активирует скрипт, а этого нам не надо(или надо?)
function Region1F( heroName )
      if ( heroName == "скриптовое имя первого главного героя" ) or ( heroName == "скриптовое имя второго главного героя" ) then --если планируется больше главных героев, то можно дополнить по аналогии с проверкой на второго героя
            MessageBox ("/Maps/SingleMissions/ZimaMap1v2NoScriptsNoQuests/Spasenie1.txt")
            StartCombat( heroName, nil, 4, 93, 100, 93, 100, 95, 75, 101, 15, nil)
            RemoveObject('g1')
            RemoveObject('g2')
            RemoveObject('g3')
            RemoveObject('g4')
            RemoveObject('g5')
            RemoveObject('g6')
            sleep(1)
            Trigger(REGION_ENTER_AND_STOP_TRIGGER,"Region1",nil)
      end
end
Trigger(REGION_ENTER_AND_STOP_TRIGGER,"Region1","Region1F")
Азгалор вне форума
Ответить с цитированием
#385
Старый 30.10.2023, 07:24
  #385
^
BlueHeavenHero
 
Аватар для BlueHeavenHero
📖
Регистрация: 20.08.2022
Адрес: "Асхан/Священная Империя Единорога/Светлолесье"
Сообщения: 426
Регистрация: 20.08.2022
Адрес: "Асхан/Священная Империя Единорога/Светлолесье"
Сообщения: 426
По умолчанию
Re: Скрипты для начинающих

Азгалор

Вот так, но допишем что скрипт должен работать только на наших героев, иначе прибежит(ну а вдруг?) вражеский бот(что возможно не по сценарию), и активирует скрипт, а этого нам не надо(или надо?)

function Region1F( heroName )
      if ( heroName == "скриптовое имя первого главного героя" ) or ( heroName == "скриптовое имя второго главного героя" ) then --если планируется больше главных героев, то можно дополнить по аналогии с проверкой на второго героя
            MessageBox ("/Maps/SingleMissions/ZimaMap1v2NoScriptsNoQuests/Spasenie1.txt")
            StartCombat( heroName, nil, 4, 93, 100, 93, 100, 95, 75, 101, 15, nil)
            RemoveObject('g1')
            RemoveObject('g2')
            RemoveObject('g3')
            RemoveObject('g4')
            RemoveObject('g5')
            RemoveObject('g6')
            sleep(1)
            Trigger(REGION_ENTER_AND_STOP_TRIGGER,"Region1",nil)
      end
end
Trigger(REGION_ENTER_AND_STOP_TRIGGER,"Region1","Region1F")
Фигасе) твоя версия скрипта много лучше чем моя. (ГДЕ ТВОИ СЦЕНАРИИ, А? С ТВОИМ УМОМ ИХ МОЖНО СДЕЛАТЬ ЗАМЕЧАТЕЛЬНЫМИ! без сарказма. ) 
А вообще, рекомендую AngryTapok1337 скачивать карты с форума и лазить в них, или в картах кампаний, таким образом можно много чему научиться и открыть для себя множество интересных возможностей.
__________________
Всем привет,я BlueHeavenHero, любитель Героев Меча и Магии 5 и фанат Дронов-убийц, пишу свою книгу.
#СинийРайскийГерой
by BlueHeavenHero 
- мой ТГ-канал со всякой ерундой, сочинениями и рисуночками.

=======================================
Мои
карты:
"Падший рыцарь"
"Сердце Хаоса"
Мои моды:

"Странствующий рыцарь"
"Наёмники"
"Существа в замке на глобальной карте"

Всем привет,я BlueHeavenHero, любитель Героев Меча и Магии 5 и фанат Дронов-убийц, пишу свою книгу.
#СинийРайскийГерой
by BlueHeavenHero 
- мой ТГ-канал со всякой ерундой, сочинениями и рисуночками.

=======================================
Мои
карты:
"Падший рыцарь"
"Сердце Хаоса"
Мои моды:

"Странствующий рыцарь"
"Наёмники"
"Существа в замке на глобальной карте"

BlueHeavenHero вне форума
Ответить с цитированием
#386
Старый 30.10.2023, 10:27
  #386
^
AngryTapok1337
📖
Регистрация: 14.10.2023
Сообщения: 16
Регистрация: 14.10.2023
Сообщения: 16
По умолчанию
Re: Скрипты для начинающих

Спасибо BlueHeavenHero и Азгалор за помощь! 

И спасибо за совет по скачиванию карт. Я как-то и забыл, что можно так сделатьredface

 

 

AngryTapok1337 вне форума
Ответить с цитированием
#387
Старый 23.11.2023, 15:56
  #387
^
Christmas
📖
Регистрация: 23.11.2023
Сообщения: 1
Регистрация: 23.11.2023
Сообщения: 1
По умолчанию
Re: Скрипты для начинающих

Добрый день! Ситуация вот какая: я бы хотел сделать прикольный простой мод в vcmi для героев 3 ко дню рождения друга. Просто добавить парочку артефактов со своим дизайном хотя бы. Но я не очень разбираюсь в программировании... Как-то по образцу создал json код для самого артефакта, но, как я понял, проблема с тем, чтобы прикрепить файл с анимацией формата .def для отображения на карте. Я искал, как делать эти .def файлы, но не нашëл ничего. Я просто хочу, чтобы картинка была видна во время игры и чтобы можно было подобрать. Как-то можно PDF в def переделать или написать json код для последовательности изображений (вроде так тоже можно)? Очень хочется, чтобы всë работало. Заранее спасибо!
Christmas вне форума
Ответить с цитированием
#388
Старый 23.11.2023, 16:24
  #388
^
Ment
 
Аватар для Ment
📖
Регистрация: 30.10.2009
Адрес: Национальный заповедник
Сообщения: 30681
Регистрация: 30.10.2009
Адрес: Национальный заповедник
Сообщения: 30681
По умолчанию
Re: Скрипты для начинающих

Рвение хорошее, но игра не та. Вам куда-то в этот раздел.
Ment вне форума
Ответить с цитированием
#389
Старый 17.03.2024, 02:20
  #389
^
Killer5029
📖
Регистрация: 04.01.2020
Сообщения: 27
Регистрация: 04.01.2020
Сообщения: 27
Вопрос
Спавн Николая вампирского в мультиплеер

Здравствуйте, уважаемые мододелы! Подскажите пожалуйста, каким образом я могу добавить героя Николоса - вампира в редакторе мультиплеерных карт? В списке “Heroes (Scenario)” я его не нашел, а как с помощью скрипта добавить я не знаю(
Killer5029 вне форума
Ответить с цитированием
#390
Старый 17.03.2024, 12:09
  #390
^
Азгалор
 
Аватар для Азгалор
📖
Регистрация: 24.04.2016
Сообщения: 207
Регистрация: 24.04.2016
Сообщения: 207
По умолчанию
Re: Скрипты для начинающих

Killer5029, для удобства можно поставить любого героя-некроманта, а потом выделить его и слева в свойствах объекта зайти в его Shared, и там в списке героев Necropolis выбрать героя Nikolay, нажать OK, и герой сменится на Николаса-вампира.
Азгалор вне форума
Ответить с цитированием
Ответ
Страница 26 из 28


Опции темы



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


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

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