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

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

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

Ответ
Страница 102 из 260
 
Опции темы
#1516
Старый 19.07.2013, 18:20
  #1516
^
Markel the Imperor
 
Аватар для Markel the Imperor
📖
Регистрация: 23.05.2012
Сообщения: 197
Регистрация: 23.05.2012
Сообщения: 197
Плохо
Re: Скрипты

кто-нибудь смог создать свою специализацию героя скриптами? ну например сделать спеца по скелетам...
Markel the Imperor вне форума
Ответить с цитированием
#1517
Старый 20.07.2013, 11:45
  #1517
^
Dyrman
 
Аватар для Dyrman
📖
Регистрация: 24.06.2008
Адрес: Там, где неба кончается край
Сообщения: 3479
Отправить сообщение для  Dyrman с помощью ICQ
Регистрация: 24.06.2008
Адрес: Там, где неба кончается край
Сообщения: 3479
Отправить сообщение для  Dyrman с помощью ICQ
По умолчанию
Re: Скрипты

Markel the Imperorкто-нибудь смог создать свою специализацию героя скриптами? ну например сделать спеца по скелетам...
Кое-что можно.
Если интересно, можете изучать и копипастить скрипты мода, главной целю которого являются новые специализации:
https://forum.heroesworld.ru/showthread.php?t=9337

Добавлено через 14 часов 41 минуту
Есть функция, которая определяет, в какую сторону повернут объект?
Dyrman вне форума
Ответить с цитированием
#1518
Старый 20.07.2013, 12:24
  #1518
^
RedHeavenHero
 
Аватар для RedHeavenHero
📖
Регистрация: 10.02.2012
Сообщения: 2378
Выставка наград
Регистрация: 10.02.2012
Сообщения: 2378
Выставка наград
По умолчанию
Re: Скрипты

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

Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
Карты для Героев Меча и Магии 5
Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты
Кампания: Империя Единорога

Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
RedHeavenHero вне форума
Ответить с цитированием
#1519
Старый 20.07.2013, 12:44
  #1519
^
Dyrman
 
Аватар для Dyrman
📖
Регистрация: 24.06.2008
Адрес: Там, где неба кончается край
Сообщения: 3479
Отправить сообщение для  Dyrman с помощью ICQ
Регистрация: 24.06.2008
Адрес: Там, где неба кончается край
Сообщения: 3479
Отправить сообщение для  Dyrman с помощью ICQ
По умолчанию
Re: Скрипты

RedHeavenHeroЯ думаю, это не понадобится. У порталов всего 4 угла поворота и их можно будет определить по относительному положению моба.
Ну , посмотрим. Типов порталов то немало.
Dyrman вне форума
Ответить с цитированием
#1520
Старый 23.07.2013, 22:18
  #1520
^
AkaR
 
Аватар для AkaR
📖
Регистрация: 25.08.2011
Сообщения: 29
Регистрация: 25.08.2011
Сообщения: 29
По умолчанию
Re: Скрипты

Помогите,пожалуйста! Не могу понять в чём дело,не фурычит скрипт,хоть головой об стену бейся.
	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... и директория карты" Причём все остальные скрипты работают,а этот при входе в регион просто никак не реагирует
__________________
Создаётся карта "Забытый Авангард (готовность 80%)
Создаётся карта "Забытый Авангард (готовность 80%)
AkaR вне форума
Ответить с цитированием
#1521
Старый 23.07.2013, 22:25
  #1521
^
RedHeavenHero
 
Аватар для RedHeavenHero
📖
Регистрация: 10.02.2012
Сообщения: 2378
Выставка наград
Регистрация: 10.02.2012
Сообщения: 2378
Выставка наград
По умолчанию
Re: Скрипты

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... и директория карты" Причём все остальные скрипты работают,а этот при входе в регион просто никак не реагирует
Значит, ошибка не в скрипте. Впервые встречаюсь с такой ошибкой. Наверное, повредился файл, содержащий географию карты, или ссылка неверная.
__________________
Карты для Героев Меча и Магии 5
Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты
Кампания: Империя Единорога

Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
Карты для Героев Меча и Магии 5
Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты
Кампания: Империя Единорога

Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
RedHeavenHero вне форума
Ответить с цитированием
#1522
Старый 23.07.2013, 22:52
  #1522
^
AkaR
 
Аватар для AkaR
📖
Регистрация: 25.08.2011
Сообщения: 29
Регистрация: 25.08.2011
Сообщения: 29
По умолчанию
Re: Скрипты

O_o мда... пропал куда-то файлик земного покрытия. В игре при выходе на поверхность игра вылетает,в редакторе просто нету покрытия,объекты висят в воздухе... попробую скопировать этот файл с другой карты и отредактировать там всё

Добавлено через 16 минут
Ошибку с поверхность исправил,но скрипт по прежнему не работает. Обнаружил странную вещь: телепорт героя происходит,но совершенно в другой функции (другой триггер). Регионы не пересекаются... не пойму в чём дело
__________________
Создаётся карта "Забытый Авангард (готовность 80%)
Создаётся карта "Забытый Авангард (готовность 80%)
AkaR вне форума
Ответить с цитированием
#1523
Старый 23.07.2013, 22:55
  #1523
^
RedHeavenHero
 
Аватар для RedHeavenHero
📖
Регистрация: 10.02.2012
Сообщения: 2378
Выставка наград
Регистрация: 10.02.2012
Сообщения: 2378
Выставка наград
По умолчанию
Re: Скрипты

AkaRO_o мда... пропал куда-то файлик земного покрытия. В игре при выходе на поверхность игра вылетает,в редакторе просто нету покрытия,объекты висят в воздухе... попробую скопировать этот файл с другой карты и отредактировать там всё

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

Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
Карты для Героев Меча и Магии 5
Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты
Кампания: Империя Единорога

Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
RedHeavenHero вне форума
Ответить с цитированием
#1524
Старый 25.07.2013, 13:22
  #1524
^
AkaR
 
Аватар для AkaR
📖
Регистрация: 25.08.2011
Сообщения: 29
Регистрация: 25.08.2011
Сообщения: 29
По умолчанию
Re: Скрипты

Возникла проблема
Никак не получается оперировать функцией GetDate.
Мне нужно,чтобы в момент получения задания N начался отсчёт дней до числа M (в моём случае 10) и когда настанет 10й день с момента получения задания выполнилось бы определённое действие. Но также необходимо что-бы если герой таки прошёл задание за эти 10 дней то триггер обнулился бы,и дальнейшая функция потеряла бы смысл. Написал мудрёную функцию с тучей if,но фурычить отказывается. Консоль ничего не пишет .
__________________
Создаётся карта "Забытый Авангард (готовность 80%)
Создаётся карта "Забытый Авангард (готовность 80%)
AkaR вне форума
Ответить с цитированием
#1525
Старый 25.07.2013, 16:01
  #1525
^
Markel the Imperor
 
Аватар для Markel the Imperor
📖
Регистрация: 23.05.2012
Сообщения: 197
Регистрация: 23.05.2012
Сообщения: 197
По умолчанию
Re: Скрипты

как контролировать порядок выполнения операторов. а то у меня герой ии долже подойти к точке а затем оттуда телепортироваться. а он сразу телепортируется и все=(
и еще можно ли заставить его видеть порталы? например если путь к замку черех портал он не реагирует на movehero(... коорд замка)
__________________
Мои карты


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



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



Великая Пустыня ( 25%) - про Маркела

Тьма над Иролланом (0%) - про Николаса



Мои моды (скорректированы мод на чумных энтов и циклопов зомби)
Мои карты


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



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



Великая Пустыня ( 25%) - про Маркела

Тьма над Иролланом (0%) - про Николаса



Мои моды (скорректированы мод на чумных энтов и циклопов зомби)
Markel the Imperor вне форума
Ответить с цитированием
#1526
Старый 25.07.2013, 16:37
  #1526
^
AkaR
 
Аватар для AkaR
📖
Регистрация: 25.08.2011
Сообщения: 29
Регистрация: 25.08.2011
Сообщения: 29
По умолчанию
Re: Скрипты

Попробуйте использовать SetObjectPosition вместо телепорта и повесьте триггер на регион,где ТОЧНО пройдёт ИИ
__________________
Создаётся карта "Забытый Авангард (готовность 80%)
Создаётся карта "Забытый Авангард (готовность 80%)
AkaR вне форума
Ответить с цитированием
#1527
Старый 25.07.2013, 22:55
  #1527
^
Heroist
 
Аватар для Heroist
📖
Регистрация: 16.12.2012
Адрес: Запределье
Сообщения: 14599
Выставка наград
Регистрация: 16.12.2012
Адрес: Запределье
Сообщения: 14599
Выставка наград
По умолчанию
Re: Скрипты

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 (название_функции_с_действиями). Вот, вроде, и все.


Теперь, немного справочного материала:

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
Whatever
Heroist вне форума
Ответить с цитированием
#1528
Старый 25.07.2013, 23:04
  #1528
^
AkaR
 
Аватар для AkaR
📖
Регистрация: 25.08.2011
Сообщения: 29
Регистрация: 25.08.2011
Сообщения: 29
По умолчанию
Re: Скрипты

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 (название_функции_с_действиями). Вот, вроде, и все.


Теперь, немного справочного материала:

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%)
Создаётся карта "Забытый Авангард (готовность 80%)
AkaR вне форума
Ответить с цитированием
#1529
Старый 25.07.2013, 23:10
  #1529
^
Heroist
 
Аватар для Heroist
📖
Регистрация: 16.12.2012
Адрес: Запределье
Сообщения: 14599
Выставка наград
Регистрация: 16.12.2012
Адрес: Запределье
Сообщения: 14599
Выставка наград
По умолчанию
Re: Скрипты

Да, нзчто) На самом деле, ф-ии с переменными довольны просты и не требуют особых знаний скрипта, однако, при частом их использовании позволяют легко запутаться и нагружают игру. Я не настолько профи в этом деле, потому делаю так. Однако, совсем не собираюсь отрицать тот факт, что существуют способы проще, чем мой
__________________
Whatever
Whatever
Heroist вне форума
Ответить с цитированием
#1530
Старый 26.07.2013, 14:59
  #1530
^
MasteR
 
Аватар для MasteR
📖
Регистрация: 24.01.2013
Сообщения: 3351
Выставка наград
Регистрация: 24.01.2013
Сообщения: 3351
Выставка наград
По умолчанию
Re: Скрипты

Возможно уже был такой вопрос: как забанить определённый навык для героев на карте?
MasteR вне форума
Ответить с цитированием
Ответ
Страница 102 из 260


Опции темы



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


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

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