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

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

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

Ответ
Страница 124 из 224
 
Опции темы
#1846
Старый 25.12.2014, 15:54
  #1846
^
RedHeavenHero
 
Аватар для RedHeavenHero
📖
Регистрация: 10.02.2012
Сообщения: 2364
Выставка наград
Регистрация: 10.02.2012
Сообщения: 2364
Выставка наград
По умолчанию
Re: Скрипты

	
function visit_crypt(hero)
	QuestionBox(GetMapDataPath() .. 'visit_crypt.txt', 'crypt_ok', 'crypt_cancel')
end

Trigger(4, 'crypt', 'visit_crypt')

function crypt_ok() -- функция вызывается в случае нажатия игроком кнопки ОК
	-- ...
end

function crypt_cancel() -- функция вызывается в случае нажатия игроком кнопки Отмена
	-- ...
end


Добавлено через 15 минут
Можно сделать ещё такую функцию, которая будет сразу возвращать сам ответ игрока, а не вызывать другую функцию. По-моему, это несколько удобнее.

	
function QuestionBoxRef(msg)
	question_box_ref_answer = -1
	QuestionBox(msg, "question_box_ref_answer=1 --", "question_box_ref_answer=0 --")
	while question_box_ref_answer == -1 do
		sleep()
	end
	return question_box_ref_answer == 1
end

-- пример использования

function visit_crypt(hero)
	if QuestionBoxRef(GetMapDataPath() .. 'visit_crypt.txt') then
		-- игрок согласен
	else
		-- игрок отказал
	end
end

Trigger(4, 'crypt', 'visit_crypt')


__________________
Карты для Героев Меча и Магии 5

Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты

Кампания: Империя Единорога



Существа NCF

Орден Порядка: 1

Нейтралы: 1 2 3 4
Карты для Героев Меча и Магии 5

Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты

Кампания: Империя Единорога



Существа NCF

Орден Порядка: 1

Нейтралы: 1 2 3 4
RedHeavenHero вне форума
Ответить с цитированием
#1847
Старый 04.01.2015, 15:30
  #1847
^
ggroy
 
Аватар для ggroy
📖
Регистрация: 19.01.2014
Сообщения: 108
Регистрация: 19.01.2014
Сообщения: 108
По умолчанию
Re: Скрипты

Привет, напишите пожалуйста все задания которые можно задавать обычным путём на скриптах. Ато я чёт не разбираюсь в тех, там не понятно. Или если у кого есть, то дайте мануальчик по заданиям
ggroy вне форума
Ответить с цитированием
#1848
Старый 04.01.2015, 16:33
  #1848
^
RedHeavenHero
 
Аватар для RedHeavenHero
📖
Регистрация: 10.02.2012
Сообщения: 2364
Выставка наград
Регистрация: 10.02.2012
Сообщения: 2364
Выставка наград
По умолчанию
Re: Скрипты

Что значит "задания, которые можно задавать обычным путем?
__________________
Карты для Героев Меча и Магии 5

Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты

Кампания: Империя Единорога



Существа NCF

Орден Порядка: 1

Нейтралы: 1 2 3 4
Карты для Героев Меча и Магии 5

Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты

Кампания: Империя Единорога



Существа NCF

Орден Порядка: 1

Нейтралы: 1 2 3 4
RedHeavenHero вне форума
Ответить с цитированием
#1849
Старый 05.01.2015, 00:14
  #1849
^
ggroy
 
Аватар для ggroy
📖
Регистрация: 19.01.2014
Сообщения: 108
Регистрация: 19.01.2014
Сообщения: 108
По умолчанию
Re: Скрипты

Ну типо обыкновенние задания, которые можно задавать в редакторе.
Ну и ладно с этим, может подскажешь где найти мануал по заданиям?
ggroy вне форума
Ответить с цитированием
#1850
Старый 05.01.2015, 17:48
  #1850
^
Dyrman
 
Аватар для Dyrman
📖
Регистрация: 24.06.2008
Адрес: Там, где неба кончается край
Сообщения: 3479
Отправить сообщение для  Dyrman с помощью ICQ
Регистрация: 24.06.2008
Адрес: Там, где неба кончается край
Сообщения: 3479
Отправить сообщение для  Dyrman с помощью ICQ
По умолчанию
Re: Скрипты

Есть ли функция, позволяющая вернуть отвагу и настроение монстра на карте?
Dyrman вне форума
Ответить с цитированием
#1851
Старый 06.01.2015, 00:24
  #1851
^
RedHeavenHero
 
Аватар для RedHeavenHero
📖
Регистрация: 10.02.2012
Сообщения: 2364
Выставка наград
Регистрация: 10.02.2012
Сообщения: 2364
Выставка наград
По умолчанию
Re: Скрипты

Нет такой. Ее можно эмулировать для одной отдельно взятой карты, если обработать map.xdb.

Добавлено через 1 минуту
Какова цель? Может быть, найдется и другое решение.
__________________
Карты для Героев Меча и Магии 5

Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты

Кампания: Империя Единорога



Существа NCF

Орден Порядка: 1

Нейтралы: 1 2 3 4
Карты для Героев Меча и Магии 5

Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты

Кампания: Империя Единорога



Существа NCF

Орден Порядка: 1

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

RedHeavenHeroНет такой. Ее можно эмулировать для одной отдельно взятой карты, если обработать map.xdb.

Добавлено через 1 минуту
Какова цель? Может быть, найдется и другое решение.

Хотел спецу для героя сделать, которая настроение враждебного моба при нападении на него улучшало в сторону присоединения.
Пока сделал просто процент выпадения дружелюбного настроения (без учёта того, что было) - тоже ничего вышло.
Dyrman вне форума
Ответить с цитированием
#1853
Старый 11.01.2015, 11:39
  #1853
^
djulian13
📖
Регистрация: 18.09.2011
Адрес: Сары-Тау, Ранаар.
Сообщения: 161
Регистрация: 18.09.2011
Адрес: Сары-Тау, Ранаар.
Сообщения: 161
По умолчанию
Re: Скрипты

Граждане товарищи господа и дамы, нужна ваша помощь.

Уже не первый год мучаюсь с одним из скриптов на карте, который никак не даёт покоя. Здесь его полный код:
EnableHeroAI('Bersy',nil)
EnableHeroAI('Ingvar', nil)
EnableHeroAI('Vegeyr', nil)
DoNotGiveTurnToPlayerAIIfNoTownsAndActiveHeroes(PL AYER_3,true)



function Mystery_of_mount()
Trigger(OBJECT_TOUCH_TRIGGER, 'Thanes', nil)
MessageBox(dir..'dialog_1.txt')
sleep(5)
SetObjectEnabled('Thanes', true)
sleep(5)
MakeHeroInteractWithObject('Giovanni', 'Thanes')
sleep(3)
if IsObjectExists('Thanes') == not nil then
RemoveObject('Thanes')
sleep(3)
startThread(Thanes_2)
else startThread(Thanes_2)
end;
end;
Trigger(OBJECT_TOUCH_TRIGGER, 'Thanes', 'Mystery_of_mount')

function Thanes_2()
if IsObjectExists('Thanes') == nil then
MessageBox(dir..'dialog_2.txt')
sleep(5)
SetObjectiveState('Thun', OBJECTIVE_COMPLETED)
if GetTownHero('Shagarakti') == 'OrnellaNecro' then
flag = 1;
else TeachHeroSpell('OrnellaNecro',SPELL_TOWN_PORTAL)
SetObjectPosition('OrnellaNecro',28,34,0)
flag = 1;
flag3 = GetDate(DAY)
flag4 = flag3 + 3;
print('flag3')
print('flag4')
flag5 = flag3 + 7;
print('flag3')
print('flag5')
flag6 = flag3 + 14;
print('flag3')
print('flag6')
end;
end;
end;


function Attack_1()
if GetDate(DAY) == flag3 + 3 then
SetObjectPosition('Bersy',28,36,0,4)
SetAIHeroAttractor('Shagarakti','Bersy',2)
AddObjectCreatures('Garrison',40,18 +(flag2*5),7)
AddObjectCreatures('Garrison',42,5 +(flag2*5),6)
EnableHeroAI('Bersy',true)
end;
end;
Trigger(NEW_DAY_TRIGGER,'Attack_1')

function Attack_2()
if GetDate(DAY) == flag3 + 7 then
SetObjectPosition('Vegeyr',28,34,0,4)
SetAIHeroAttractor('Shagarakti','Vegeyr',2)
AddObjectCreatures('Shagarakti',40, 16 + (3*flag2))
AddObjectCreatures('Shagarakti',36, 50 +(10*flag2))
EnableHeroAI('Vegeyr',true)
end;
end;
Trigger(NEW_DAY_TRIGGER,'Attack_2')

function Attack_3()
if GetDate(DAY) == flag3 + 14 then
SetObjectPoistion('Ingvar',28,34,0,4)
SetAIHeroAttractor('Shagarakti','Ingvar',2)
TeachHeroSpell('OrnellaNecro',SPELL_SUMMON_HIVE)
AddObjectCreatures('Shagarakti',36, 30 + (flag2*10))
EnableHeroAI('Ingvar',true)
end;
sleep(1)
end;
Trigger(NEW_DAY_TRIGGER,'Attack_3')

function Attack_finished()
while 1 do
if IsHeroAlive('Ingvar') == nil then
MessageBox(dir..'fu.txt')
end;
sleep(1)
end;
end;
startThread(Attack_finished)

Суть его в чём. Даётся квест на уничтожение группы танов. После его выполнения через определённое количество времени герои, ранее дезактивированные, должны появиться в определённой точке и атаковать город игрока. Этого, однако, не происходит - карта либо зависает, либо продолжает работу в штатном режиме, но герои как не появились, так и не появляются. Версия игры 3.1, что на чистой ничего не работает, что с модами. Вопрос, уважаемые знатоки: где косяк?
__________________
Мои карты:

SinglePlayer: Выбор Зехира

Падение Стедвика(pre-release)

Готовится: Зима Титанов, Столетняя война
Мои карты:

SinglePlayer: Выбор Зехира

Падение Стедвика(pre-release)

Готовится: Зима Титанов, Столетняя война
djulian13 вне форума
Ответить с цитированием
#1854
Старый 11.01.2015, 12:01
  #1854
^
RedHeavenHero
 
Аватар для RedHeavenHero
📖
Регистрация: 10.02.2012
Сообщения: 2364
Выставка наград
Регистрация: 10.02.2012
Сообщения: 2364
Выставка наград
По умолчанию
Re: Скрипты

Сразу вижу 2 ошибки:
1. Несколько установлений триггеров и, как следствие, он будет работать только на последнюю функцию. Attack_1(2,3) нужно объединить в одну функцию.
2. Пропущен break в функции Attack_finished, поэтому сообщения о смерти Ингвара будут показываться бесконечно, что может привести к зависанию.
__________________
Карты для Героев Меча и Магии 5

Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты

Кампания: Империя Единорога



Существа NCF

Орден Порядка: 1

Нейтралы: 1 2 3 4
Карты для Героев Меча и Магии 5

Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты

Кампания: Империя Единорога



Существа NCF

Орден Порядка: 1

Нейтралы: 1 2 3 4
RedHeavenHero вне форума
Ответить с цитированием
#1855
Старый 11.01.2015, 13:16
  #1855
^
djulian13
📖
Регистрация: 18.09.2011
Адрес: Сары-Тау, Ранаар.
Сообщения: 161
Регистрация: 18.09.2011
Адрес: Сары-Тау, Ранаар.
Сообщения: 161
По умолчанию
Re: Скрипты

Благодарю. Исправил, карта ушла обратно в тест, а я - глядеть, смог ли что исправить
__________________
Мои карты:

SinglePlayer: Выбор Зехира

Падение Стедвика(pre-release)

Готовится: Зима Титанов, Столетняя война
Мои карты:

SinglePlayer: Выбор Зехира

Падение Стедвика(pre-release)

Готовится: Зима Титанов, Столетняя война
djulian13 вне форума
Ответить с цитированием
#1856
Старый 11.01.2015, 21:01
  #1856
^
Dyrman
 
Аватар для Dyrman
📖
Регистрация: 24.06.2008
Адрес: Там, где неба кончается край
Сообщения: 3479
Отправить сообщение для  Dyrman с помощью ICQ
Регистрация: 24.06.2008
Адрес: Там, где неба кончается край
Сообщения: 3479
Отправить сообщение для  Dyrman с помощью ICQ
По умолчанию
Re: Скрипты

Есть функция StartCombat, которая запускает функцию в конце боя. Эта функция передаёт героя и результат сражения этого героя. Как в передаваемые параметры добавить ещё несколько значений?
Dyrman вне форума
Ответить с цитированием
#1857
Старый 11.01.2015, 21:41
  #1857
^
RedHeavenHero
 
Аватар для RedHeavenHero
📖
Регистрация: 10.02.2012
Сообщения: 2364
Выставка наград
Регистрация: 10.02.2012
Сообщения: 2364
Выставка наград
По умолчанию
Re: Скрипты

DyrmanЕсть функция StartCombat, которая запускает функцию в конце боя. Эта функция передаёт героя и результат сражения этого героя. Как в передаваемые параметры добавить ещё несколько значений?
Можно переопределить саму функцию так, чтобы она сама возвращала результат сражения:
	local wrapStartCombat = StartCombat
function StartCombat(hero, enemy, stacks, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18)
	%wrapStartCombat(hero, enemy, stacks, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18)
	local combat_index = GetLastSavedCombatIndex()
	while GetLastSavedCombatIndex() == combat_index do
		sleep()
	end
	local result = IsHeroAlive(hero)
	return result
end
Тогда можно не передавать управление в другую функцию, а продолжить выполнение текущей.
__________________
Карты для Героев Меча и Магии 5

Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты

Кампания: Империя Единорога



Существа NCF

Орден Порядка: 1

Нейтралы: 1 2 3 4
Карты для Героев Меча и Магии 5

Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты

Кампания: Империя Единорога



Существа NCF

Орден Порядка: 1

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

RedHeavenHeroМожно переопределить саму функцию так, чтобы она сама возвращала результат сражения:
	local wrapStartCombat = StartCombat
function StartCombat(hero, enemy, stacks, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18)
	%wrapStartCombat(hero, enemy, stacks, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18)
	local combat_index = GetLastSavedCombatIndex()
	while GetLastSavedCombatIndex() == combat_index do
		sleep()
	end
	local result = IsHeroAlive(hero)
	return result
end
Тогда можно не передавать управление в другую функцию, а продолжить выполнение текущей.
Хитро )) Спасибо. Напомни, плиз, какое преимущество даёт использование % перед переменной?
Dyrman вне форума
Ответить с цитированием
#1859
Старый 11.01.2015, 21:47
  #1859
^
RedHeavenHero
 
Аватар для RedHeavenHero
📖
Регистрация: 10.02.2012
Сообщения: 2364
Выставка наград
Регистрация: 10.02.2012
Сообщения: 2364
Выставка наград
По умолчанию
Re: Скрипты

% всегда нужно ставить перед внешними локальными переменными.
__________________
Карты для Героев Меча и Магии 5

Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты

Кампания: Империя Единорога



Существа NCF

Орден Порядка: 1

Нейтралы: 1 2 3 4
Карты для Героев Меча и Магии 5

Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты

Кампания: Империя Единорога



Существа NCF

Орден Порядка: 1

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

Жалко, что пользовательский редактор скриптов ругается на %.
Dyrman вне форума
Ответить с цитированием
Ответ
Страница 124 из 224


Опции темы



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


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

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