Перейти к содержанию

Сообщения от Скрипты для начинающих

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

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

Всякое/карты:

Добавление недостающей музыки гномам

В ответ пользователю Азгалор

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

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

 

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

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

Всякое/карты:

Добавление недостающей музыки гномам

В ответ пользователю Азгалор

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

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

 

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

Аватар пользователя
AngryTapok1337, ну и незначительно, но на всякий случай, от лишнего спама в консоли - в SetObjectEnabled для выключения объектов стоит использовать nil вместо false. Скрипт от этого не ломается, просто засоряет консоль лишним текстом)

Всякое/карты:

Добавление недостающей музыки гномам

В ответ пользователю Азгалор

Азгалор
Как только запустил карту, меня сразу же с порога встречает ошибка на отсутствующий регион 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

Хотел снова идти сюда просить помощи со скриптом но каким-то невероятным образом смог заставить его работать. 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
Аватар пользователя
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")

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

Мои моды:
Визуальные:
Изменение внешнего вида героев-некромантов
Существа-жители и кое-что по мелочи в городах Ордена Порядка, Некрополиса и Инферно

NCF-существа:
Странствующие рыцари
Наемники

В ответ пользователю AngryTapok1337
Аватар пользователя

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")

Всякое/карты:

Добавление недостающей музыки гномам

В ответ пользователю Азгалор
Аватар пользователя
Азгалор

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

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 скачивать карты с форума и лазить в них, или в картах кампаний, таким образом можно много чему научиться и открыть для себя множество интересных возможностей.

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

Мои моды:
Визуальные:
Изменение внешнего вида героев-некромантов
Существа-жители и кое-что по мелочи в городах Ордена Порядка, Некрополиса и Инферно

NCF-существа:
Странствующие рыцари
Наемники

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

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

 

 

В ответ пользователю AngryTapok1337
Добрый день! Ситуация вот какая: я бы хотел сделать прикольный простой мод в vcmi для героев 3 ко дню рождения друга. Просто добавить парочку артефактов со своим дизайном хотя бы. Но я не очень разбираюсь в программировании... Как-то по образцу создал json код для самого артефакта, но, как я понял, проблема с тем, чтобы прикрепить файл с анимацией формата .def для отображения на карте. Я искал, как делать эти .def файлы, но не нашëл ничего. Я просто хочу, чтобы картинка была видна во время игры и чтобы можно было подобрать. Как-то можно PDF в def переделать или написать json код для последовательности изображений (вроде так тоже можно)? Очень хочется, чтобы всë работало. Заранее спасибо!
В ответ пользователю Ment
Здравствуйте, уважаемые мододелы! Подскажите пожалуйста, каким образом я могу добавить героя Николоса - вампира в редакторе мультиплеерных карт? В списке “Heroes (Scenario)” я его не нашел, а как с помощью скрипта добавить я не знаю(
Аватар пользователя
Killer5029, для удобства можно поставить любого героя-некроманта, а потом выделить его и слева в свойствах объекта зайти в его Shared, и там в списке героев Necropolis выбрать героя Nikolay, нажать OK, и герой сменится на Николаса-вампира.

Всякое/карты:

Добавление недостающей музыки гномам

Статистика

Приветствуем новейшего участника: Emil

Сейчас на сайте 8 пользователей 1354 гостей