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

Сообщения от Скрипты

В ответ пользователю Heroist
Аватар пользователя
13 лет назад
кто-нибудь смог создать свою специализацию героя скриптами? ну например сделать спеца по скелетам...:confused:
В ответ пользователю Markel the Imperor
Аватар пользователя
13 лет назад
Markel the Imperor
кто-нибудь смог создать свою специализацию героя скриптами? ну например сделать спеца по скелетам...:confused:
Кое-что можно.
Если интересно, можете изучать и копипастить скрипты мода, главной целю которого являются новые специализации:
/topic/9337/

Добавлено через 14 часов 41 минуту
Есть функция, которая определяет, в какую сторону повернут объект?
Моды для HeroesV:
NHF 0.90 : NHF - группа в VK

Карты для HeroesV:
Путешествие , Условие крови , Рука судьбы.Часть 1: В поход , Рука судьбы.Часть 2: Отчаянье , Рука судьбы.Часть 3: Восхождение , Стойкость
Абсолютная власть , Иду на Вы! , Корона Ургаша , На задворках
Мир надо уничтожить... Чтобы создать свой...
В ответ пользователю Dyrman
Аватар пользователя
13 лет назад
Dyrman

Добавлено через 14 часов 41 минуту
Есть функция, которая определяет, в какую сторону повернут объект?
Я думаю, это не понадобится. У порталов всего 4 угла поворота и их можно будет определить по относительному положению моба.
Карты для Героев Меча и Магии 5
Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты
Кампания: Империя Единорога

Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
В ответ пользователю RedHeavenHero
Аватар пользователя
13 лет назад
RedHeavenHero
Я думаю, это не понадобится. У порталов всего 4 угла поворота и их можно будет определить по относительному положению моба.
Ну , посмотрим. Типов порталов то немало.
Моды для HeroesV:
NHF 0.90 : NHF - группа в VK

Карты для HeroesV:
Путешествие , Условие крови , Рука судьбы.Часть 1: В поход , Рука судьбы.Часть 2: Отчаянье , Рука судьбы.Часть 3: Восхождение , Стойкость
Абсолютная власть , Иду на Вы! , Корона Ургаша , На задворках
Мир надо уничтожить... Чтобы создать свой...
Аватар пользователя
13 лет назад
Помогите,пожалуйста! Не могу понять в чём дело,не фурычит скрипт,хоть головой об стену бейся.
function biaraF ()
Trigger(REGION_ENTER_AND_STOP_TRIGGER, "biara", nil );
MessageBox(GetMapDataPath()..'text9.txt');
SetObjectPosition ('Raelag' , 8, 129, 0)
end;
Trigger(REGION_ENTER_AND_STOP_TRIGGER, "biara", "biaraF" );

Вроде всё верно,имя героя совпадает со скриптовым,так что тут ошибок быть не может. Консоль пишет: "Can`t find terrain info file for map... и директория карты" Причём все остальные скрипты работают,а этот при входе в регион просто никак не реагирует :smile32:
Создаётся карта "Забытый Авангард (готовность 80%)
В ответ пользователю AkaR
Аватар пользователя
13 лет назад
AkaR
Помогите,пожалуйста! Не могу понять в чём дело,не фурычит скрипт,хоть головой об стену бейся.
function biaraF ()
Trigger(REGION_ENTER_AND_STOP_TRIGGER, "biara", nil );
MessageBox(GetMapDataPath()..'text9.txt');
SetObjectPosition ('Raelag' , 8, 129, 0)
end;
Trigger(REGION_ENTER_AND_STOP_TRIGGER, "biara", "biaraF" );

Вроде всё верно,имя героя совпадает со скриптовым,так что тут ошибок быть не может. Консоль пишет: "Can`t find terrain info file for map... и директория карты" Причём все остальные скрипты работают,а этот при входе в регион просто никак не реагирует :smile32:
Значит, ошибка не в скрипте. Впервые встречаюсь с такой ошибкой. Наверное, повредился файл, содержащий географию карты, или ссылка неверная.
Карты для Героев Меча и Магии 5
Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты
Кампания: Империя Единорога

Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
Аватар пользователя
13 лет назад
O_o мда... пропал куда-то файлик земного покрытия. В игре при выходе на поверхность игра вылетает,в редакторе просто нету покрытия,объекты висят в воздухе... попробую скопировать этот файл с другой карты и отредактировать там всё :(

Добавлено через 16 минут
Ошибку с поверхность исправил,но скрипт по прежнему не работает. Обнаружил странную вещь: телепорт героя происходит,но совершенно в другой функции (другой триггер). Регионы не пересекаются... не пойму в чём дело :(
Создаётся карта "Забытый Авангард (готовность 80%)
В ответ пользователю AkaR
Аватар пользователя
13 лет назад
AkaR
O_o мда... пропал куда-то файлик земного покрытия. В игре при выходе на поверхность игра вылетает,в редакторе просто нету покрытия,объекты висят в воздухе... попробую скопировать этот файл с другой карты и отредактировать там всё :(

Добавлено через 16 минут
Ошибку с поверхность исправил,но скрипт по прежнему не работает. Обнаружил странную вещь: телепорт героя происходит,но совершенно в другой функции (другой триггер). Регионы не пересекаются... не пойму в чём дело :(
Функции или регионы, может, одноименные есть?
Карты для Героев Меча и Магии 5
Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты
Кампания: Империя Единорога

Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
Аватар пользователя
13 лет назад
Возникла проблема :(
Никак не получается оперировать функцией GetDate.
Мне нужно,чтобы в момент получения задания N начался отсчёт дней до числа M (в моём случае 10) и когда настанет 10й день с момента получения задания выполнилось бы определённое действие. Но также необходимо что-бы если герой таки прошёл задание за эти 10 дней то триггер обнулился бы,и дальнейшая функция потеряла бы смысл. Написал мудрёную функцию с тучей if,но фурычить отказывается. Консоль ничего не пишет :( .
Создаётся карта "Забытый Авангард (готовность 80%)
В ответ пользователю AkaR
Аватар пользователя
13 лет назад
как контролировать порядок выполнения операторов. а то у меня герой ии долже подойти к точке а затем оттуда телепортироваться. а он сразу телепортируется и все=(
и еще можно ли заставить его видеть порталы? например если путь к замку черех портал он не реагирует на movehero(... коорд замка)
Мои карты

Возрождённый v 1.5 (обновление от 25/09/2016) :smile24:

готовится продолжение.

Великая Пустыня ( 25%) - про Маркела
Тьма над Иролланом (0%) - про Николаса

Мои моды (скорректированы мод на чумных энтов и циклопов зомби)
Аватар пользователя
13 лет назад
Попробуйте использовать SetObjectPosition вместо телепорта и повесьте триггер на регион,где ТОЧНО пройдёт ИИ
Создаётся карта "Забытый Авангард (готовность 80%)
В ответ пользователю AkaR
Аватар пользователя
13 лет назад
AkaR
Возникла проблема :(
Никак не получается оперировать функцией GetDate.
Мне нужно,чтобы в момент получения задания N начался отсчёт дней до числа M (в моём случае 10) и когда настанет 10й день с момента получения задания выполнилось бы определённое действие. Но также необходимо что-бы если герой таки прошёл задание за эти 10 дней то триггер обнулился бы,и дальнейшая функция потеряла бы смысл. Написал мудрёную функцию с тучей if,но фурычить отказывается. Консоль ничего не пишет :( .

Я думаю, тут ничего сложного. Значит, так. Получение задания у Вас висит на функции, так?

Тогда:
n = 0 (пишем это вне всех ф-ий)

--Ваша функция--
....
Получение задания (требуемого)
n = 1 -- теперь мы сделали n равным одному
--конец функции--

Теперь, через триггер нового дня (Trigger(NEW_DAY_TRIGGER , 'day')) (пример), вызываем выполнение ф-ии.

--функция нового дня--
если n > 0, тогда
n = n + 1 -- если n > 0, что в нашем случае означает, что задание уже стало активным, мы увеличиваем n на 1.
--конец функции нового дня--

Таким образом, мы каждый день прибавляем + 1 к n, начиная со следующего после получения задания дня.
Теперь, осталось лишь дописать проверочную ф-ию (её можно дописать прямо внутри ф-ии нового дня)

--функция нового дня--
--то, что написано выше--
если n == 11 и задание уже выполнено, тогда
Ваши действия
Иначе, если n == 11, тогда (это уже означает, что по истечение этого срока задание не выполнено)
Ваши прочие действия
"Для красивости, если не нужно, чтобы счетчик крутился дальше, делаем n = 0"
--конец ф-ии нового дня--

Если "Ваши действия" уже записаны в другой ф-ии, не беда. Вместо это пишем startThread (название_функции_с_действиями). Вот, вроде, и все.
[/code]
Теперь, немного справочного материала:

Trigger(NEW_DAY_TRIGGER , 'day') -- триггер нового дня
SetObjectiveState ('objname' , OBJECTIVE_ACTIVE) -- активировать задание, вместо первого параметра - имя Вашего задания
SetObjectiveState ('objname' , OBJECTIVE_COMPLETED/FAILED) -- выполнить задание, или провалить его.
n = 0 -- и тп (переменная)
Trigger(TRIGGER_NAME, nil) -- обнуление триггера.


Таким образом, вот полный скрипт: (вместо красного Вы подставляете Ваши значения):

n = 0

function xxx
...
SetObjectiveState ('obj1' , OBJECTIVE_ACTIVE)
n = 1
end

Trigger(NEW_DAY_TRIGGER , 'day')

function day
if n > 0 then
n = n + 1
end
if n == 11 and GetObjectiveState ('obj1') == OBJECTIVE_COMPLETED then
...
elseif n == 11 then
...
end
end

Вроде, больше ничего сложного я не написал. ;)

Whatever
В ответ пользователю Heroist
Аватар пользователя
13 лет назад
Heroist
Я думаю, тут ничего сложного. Значит, так. Получение задания у Вас висит на функции, так?

Тогда:
n = 0 (пишем это вне всех ф-ий)

--Ваша функция--
....
Получение задания (требуемого)
n = 1 -- теперь мы сделали n равным одному
--конец функции--

Теперь, через триггер нового дня (Trigger(NEW_DAY_TRIGGER , 'day')) (пример), вызываем выполнение ф-ии.

--функция нового дня--
если n > 0, тогда
n = n + 1 -- если n > 0, что в нашем случае означает, что задание уже стало активным, мы увеличиваем n на 1.
--конец функции нового дня--

Таким образом, мы каждый день прибавляем + 1 к n, начиная со следующего после получения задания дня.
Теперь, осталось лишь дописать проверочную ф-ию (её можно дописать прямо внутри ф-ии нового дня)

--функция нового дня--
--то, что написано выше--
если n == 11 и задание уже выполнено, тогда
Ваши действия
Иначе, если n == 11, тогда (это уже означает, что по истечение этого срока задание не выполнено)
Ваши прочие действия
"Для красивости, если не нужно, чтобы счетчик крутился дальше, делаем n = 0"
--конец ф-ии нового дня--

Если "Ваши действия" уже записаны в другой ф-ии, не беда. Вместо это пишем startThread (название_функции_с_действиями). Вот, вроде, и все.
[/code]
Теперь, немного справочного материала:

Trigger(NEW_DAY_TRIGGER , 'day') -- триггер нового дня
SetObjectiveState ('objname' , OBJECTIVE_ACTIVE) -- активировать задание, вместо первого параметра - имя Вашего задания
SetObjectiveState ('objname' , OBJECTIVE_COMPLETED/FAILED) -- выполнить задание, или провалить его.
n = 0 -- и тп (переменная)
Trigger(TRIGGER_NAME, nil) -- обнуление триггера.


Таким образом, вот полный скрипт: (вместо красного Вы подставляете Ваши значения):

n = 0

function xxx
...
SetObjectiveState ('obj1' , OBJECTIVE_ACTIVE)
n = 1
end

Trigger(NEW_DAY_TRIGGER , 'day')

function day
if n > 0 then
n = n + 1
end
if n == 11 and GetObjectiveState ('obj1') == OBJECTIVE_COMPLETED then
...
elseif n == 11 then
...
end
end

Вроде, больше ничего сложного я не написал. ;)

Спасибо вам огромное :) Внятно и доходчиво объяснили. Буду теперь знать :)
Создаётся карта "Забытый Авангард (готовность 80%)
Аватар пользователя
13 лет назад
Да, нзчто) На самом деле, ф-ии с переменными довольны просты и не требуют особых знаний скрипта, однако, при частом их использовании позволяют легко запутаться и нагружают игру. Я не настолько профи в этом деле, потому делаю так. Однако, совсем не собираюсь отрицать тот факт, что существуют способы проще, чем мой ;)

Whatever
Аватар пользователя
13 лет назад
Возможно уже был такой вопрос: как забанить определённый навык для героев на карте?
Кампании для Heroes V 3.1 (Трилогия):

Пробуждение зла
Нашествие из Преисподней
Смена эпох

Скачать все кампании одним архивом: Яндекс.Диск Google.Диск

You can download the set of 3 Campaigns (English version) here


Одиночные сценарии Heroes V 3.1:


Незваные гости
Красный кристалл
Синий кристалл
Закат тьмы

Мультиплеерные карты для Heroes V 3.1:

Легендарная война
Сердце вулкана
Передел мира

Статистика

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