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

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

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

Ответ
Страница 88 из 260
 
Опции темы
#1306
Старый 08.05.2013, 16:33
  #1306
^
Heroist
 
Аватар для Heroist
📖
Регистрация: 16.12.2012
Адрес: Запределье
Сообщения: 14599
Выставка наград
Регистрация: 16.12.2012
Адрес: Запределье
Сообщения: 14599
Выставка наград
По умолчанию
Re: Скрипты

хм, странно. Если прописывать такой код, то ошибки нет. Сейчас попробую с консолью еще раз поиграть и выложить всю функцию. Наверное, не к тому придрался...

Добавлено через 32 минуты
да, понятно, ошибка была скорее всего из-за того, что я удалил объект, а затем пытался к нему привязать touch триггер.

А вот такой вопрос: как быть с выдачей герою определенных навыков?
Во-первых, я битый час потратил, пытаясь найти Огненные Войны (Магия призыва на элемов). Вроде, нашел у demon perk, и то не уверен. Так теперь еще не знаю, как его правильно установить. Пишу так:

	if HasHeroSkill ('Berein' , 12) == nil then
GiveHeroSkill ('Berein' , 12)
GiveHeroSkill ('Berein' , 12)
GiveHeroSkill ('Berein' , 53)
GiveHeroSkill ('Berein' , 97)
end

Дает только усовершенствованную магию призыва...Как быть?
__________________
Whatever
Whatever
Heroist вне форума
Ответить с цитированием
#1307
Старый 08.05.2013, 16:54
  #1307
^
RedHeavenHero
 
Аватар для RedHeavenHero
📖
Регистрация: 10.02.2012
Сообщения: 2378
Выставка наград
Регистрация: 10.02.2012
Сообщения: 2378
Выставка наград
По умолчанию
Re: Скрипты

Heroistхм, странно. Если прописывать такой код, то ошибки нет. Сейчас попробую с консолью еще раз поиграть и выложить всю функцию. Наверное, не к тому придрался...

Добавлено через 32 минуты
да, понятно, ошибка была скорее всего из-за того, что я удалил объект, а затем пытался к нему привязать touch триггер.

А вот такой вопрос: как быть с выдачей герою определенных навыков?
Во-первых, я битый час потратил, пытаясь найти Огненные Войны (Магия призыва на элемов). Вроде, нашел у demon perk, и то не уверен. Так теперь еще не знаю, как его правильно установить. Пишу так:

	if HasHeroSkill ('Berein' , 12) == nil then
GiveHeroSkill ('Berein' , 12)
GiveHeroSkill ('Berein' , 12)
GiveHeroSkill ('Berein' , 53)
GiveHeroSkill ('Berein' , 97)
end

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

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

Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
RedHeavenHero вне форума
Ответить с цитированием
#1308
Старый 08.05.2013, 17:39
  #1308
^
Heroist
 
Аватар для Heroist
📖
Регистрация: 16.12.2012
Адрес: Запределье
Сообщения: 14599
Выставка наград
Регистрация: 16.12.2012
Адрес: Запределье
Сообщения: 14599
Выставка наград
По умолчанию
Re: Скрипты

спасибо, помогло.

Добавлено через 7 минут
ну, и (очень надеюсь) последний вопрос на сегодня:

Ув. RedHeavenHero - вот немного видоизмененный код вашей функции на превращение двеллингов людей.
Собственно говоря, я бы хотел, чтобы все это великолепие начинало свое работу, когда небольшая и скромная переменная, dwel её название в скрипте, приравнивалась к гордой и непокорной единице (dwel = 1). Однако, в следствии моего тугого соображения и полного не знания данных функций скрипта, никак у меня не получается совладать и подчинить своей воле непокорный цикл с for и тп и тд. Прикладываю код сейчасшней функции и надеюсь на скорую помощь. =)

	 function starthut()
if dwel == 1 then
for i,hut in GetObjectNamesByType('PEASANT_HUT') do
SetObjectEnabled(hut, nil)
Trigger(4, hut, 'replace_hut')
end
end
end
startThread(starthut)

function replace_hut(hero, hut)
if hero == 'Berein' and dwel == 1 then
Trigger(4, hut, nil)
SetObjectEnabled(hut, 1)
ReplaceDwelling(hut, 4)
sleep (1)
MakeHeroInteractWithObject (hero , hut)
end
end

----------------------------------------

function starthut2()
if dwel == 1 then
for i,hut2 in GetObjectNamesByType('ARCHERS_HOUSE') do
SetObjectEnabled(hut2, nil)
Trigger(4, hut2, 'replace_hut2')
end
end
end
startThread(starthut2)

function replace_hut2(hero, hut2)
if hero == 'Berein' and dwel == 1 then
Trigger(4, hut2, nil)
SetObjectEnabled(hut2, 1)
ReplaceDwelling(hut2, 4)
sleep (1)
MakeHeroInteractWithObject (hero , hut2)
end
end

----------------------------------------

function starthut3()
if dwel == 1 then
for i,hut3 in GetObjectNamesByType('BARRACKS') do
SetObjectEnabled(hut3, nil)
Trigger(4, hut3, 'replace_hut3')
end
end
end
startThread(starthut3)

function replace_hut3( hero , hut3)
if hero == 'Berein' and dwel == 1 then
Trigger(4, hut3, nil)
SetObjectEnabled(hut3, 1)
ReplaceDwelling(hut3, 4)
sleep (1)
MakeHeroInteractWithObject (hero , hut3)
end
end
--------------------------------------

function starthut4()
if dwel == 1 then
for i,hut4 in GetObjectNamesByType('HEAVEN_MILITARY_POST') do
SetObjectEnabled(hut4, nil)
Trigger(4, hut4, 'replace_hut4')
end
end
end
startThread(starthut4)

function replace_hut4(hero, hut4)
if hero == 'Berein' and dwel == 1 then
Trigger(4, hut4, nil)
SetObjectEnabled(hut4, 1)
ReplaceDwelling(hut4, 4)
sleep (1)
MakeHeroInteractWithObject (hero , hut4)
end
end 
__________________
Whatever
Whatever
Heroist вне форума
Ответить с цитированием
#1309
Старый 08.05.2013, 21:16
  #1309
^
Warrior777
 
Аватар для Warrior777
📖
Регистрация: 15.09.2012
Адрес: Под кроватью
Сообщения: 602
Регистрация: 15.09.2012
Адрес: Под кроватью
Сообщения: 602
По умолчанию
Re: Скрипты

1)Можно ли заблокировать регион для определённого героя?
2)Можно ли чтобы герой не мог отдать свою армию, но мог забрать к себе?
И всё для 1.6
__________________
502 Bad Gateway

__________________________________

nginx/0.8.54
502 Bad Gateway

__________________________________

nginx/0.8.54
Warrior777 вне форума
Ответить с цитированием
#1310
Старый 08.05.2013, 21:26
  #1310
^
Heroist
 
Аватар для Heroist
📖
Регистрация: 16.12.2012
Адрес: Запределье
Сообщения: 14599
Выставка наград
Регистрация: 16.12.2012
Адрес: Запределье
Сообщения: 14599
Выставка наград
По умолчанию
Re: Скрипты

для версии 1.6??????Зачем???

1) Ну, поставить проверку на этот регион, и если там нужный герой - то блокировать регион. А когда герой из него выходит - разблокировать...
2) Сложнее...Наверно, да, с помощью ВЕЧНОГО определения кол существ в армии. Хотя, нет, бред, армия еще и в боях тратится...
__________________
Whatever
Whatever
Heroist вне форума
Ответить с цитированием
#1311
Старый 09.05.2013, 21:58
  #1311
^
Nargott
 
Аватар для Nargott
📖
Регистрация: 09.05.2009
Адрес: Смоленск
Сообщения: 1583
Регистрация: 09.05.2009
Адрес: Смоленск
Сообщения: 1583
По умолчанию
Re: Скрипты

Правильно ли я понимаю, что lua в Героях 5 кастрирован до определённого перечня функций, заданных разработчиками игры, и не поддерживает встроенные функции, такие как setmetatable, package и module? Т.е. в лучшем случае можно создавать статические классы без поддержки создания типов (объектов-экземпляров класса)? А модули имитировать через функцию doFile?
__________________
Разработчик Heroes 5.5 WarGame Edition.
Сайт проекта - пока неактивен
Автор Асимметричных шахмат
Разработчик Heroes 5.5 WarGame Edition.
Сайт проекта - пока неактивен
Автор Асимметричных шахмат
Nargott вне форума
Ответить с цитированием
#1312
Старый 10.05.2013, 00:38
  #1312
^
RedHeavenHero
 
Аватар для RedHeavenHero
📖
Регистрация: 10.02.2012
Сообщения: 2378
Выставка наград
Регистрация: 10.02.2012
Сообщения: 2378
Выставка наград
По умолчанию
Re: Скрипты

Heroistспасибо, помогло.

Добавлено через 7 минут
ну, и (очень надеюсь) последний вопрос на сегодня:

Ув. RedHeavenHero - вот немного видоизмененный код вашей функции на превращение двеллингов людей.
Собственно говоря, я бы хотел, чтобы все это великолепие начинало свое работу, когда небольшая и скромная переменная, dwel её название в скрипте, приравнивалась к гордой и непокорной единице (dwel = 1). Однако, в следствии моего тугого соображения и полного не знания данных функций скрипта, никак у меня не получается совладать и подчинить своей воле непокорный цикл с for и тп и тд. Прикладываю код сейчасшней функции и надеюсь на скорую помощь. =)

	 function starthut()
if dwel == 1 then
for i,hut in GetObjectNamesByType('PEASANT_HUT') do
SetObjectEnabled(hut, nil)
Trigger(4, hut, 'replace_hut')
end
end
end
startThread(starthut)

function replace_hut(hero, hut)
if hero == 'Berein' and dwel == 1 then
Trigger(4, hut, nil)
SetObjectEnabled(hut, 1)
ReplaceDwelling(hut, 4)
sleep (1)
MakeHeroInteractWithObject (hero , hut)
end
end

----------------------------------------

function starthut2()
if dwel == 1 then
for i,hut2 in GetObjectNamesByType('ARCHERS_HOUSE') do
SetObjectEnabled(hut2, nil)
Trigger(4, hut2, 'replace_hut2')
end
end
end
startThread(starthut2)

function replace_hut2(hero, hut2)
if hero == 'Berein' and dwel == 1 then
Trigger(4, hut2, nil)
SetObjectEnabled(hut2, 1)
ReplaceDwelling(hut2, 4)
sleep (1)
MakeHeroInteractWithObject (hero , hut2)
end
end

----------------------------------------

function starthut3()
if dwel == 1 then
for i,hut3 in GetObjectNamesByType('BARRACKS') do
SetObjectEnabled(hut3, nil)
Trigger(4, hut3, 'replace_hut3')
end
end
end
startThread(starthut3)

function replace_hut3( hero , hut3)
if hero == 'Berein' and dwel == 1 then
Trigger(4, hut3, nil)
SetObjectEnabled(hut3, 1)
ReplaceDwelling(hut3, 4)
sleep (1)
MakeHeroInteractWithObject (hero , hut3)
end
end
--------------------------------------

function starthut4()
if dwel == 1 then
for i,hut4 in GetObjectNamesByType('HEAVEN_MILITARY_POST') do
SetObjectEnabled(hut4, nil)
Trigger(4, hut4, 'replace_hut4')
end
end
end
startThread(starthut4)

function replace_hut4(hero, hut4)
if hero == 'Berein' and dwel == 1 then
Trigger(4, hut4, nil)
SetObjectEnabled(hut4, 1)
ReplaceDwelling(hut4, 4)
sleep (1)
MakeHeroInteractWithObject (hero , hut4)
end
end 
Если убрать проверку этой переменной (dwel) во всех стартовых функциях (starthut), то строения будут превращаться только, если это условие выполнится. До этого героя туда не пустят.
В триггерах можно было делать ссылку на одну функцию, а не на 4 одинаковых.

Добавлено через 4 минуты
NargottПравильно ли я понимаю, что lua в Героях 5 кастрирован до определённого перечня функций, заданных разработчиками игры, и не поддерживает встроенные функции, такие как setmetatable, package и module? Т.е. в лучшем случае можно создавать статические классы без поддержки создания типов (объектов-экземпляров класса)? А модули имитировать через функцию doFile?
Ну, да, можно и так сказать.
__________________
Карты для Героев Меча и Магии 5
Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты
Кампания: Империя Единорога

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

Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
RedHeavenHero вне форума
Ответить с цитированием
#1313
Старый 10.05.2013, 13:47
  #1313
^
Heroist
 
Аватар для Heroist
📖
Регистрация: 16.12.2012
Адрес: Запределье
Сообщения: 14599
Выставка наград
Регистрация: 16.12.2012
Адрес: Запределье
Сообщения: 14599
Выставка наград
По умолчанию
Re: Скрипты

RedHeavenHero - как раз в этом и проблема, что "до этого не пустят". Там на карте несколько хижин с собственными именами, хотелось бы, чтобы функция начала давать имена, триггировать и превращать только, когда я уже выполню все задания хижин - т.е - когда dwell = 1.

Добавлено через 47 минут
кстати, (с этого я всегда начинаю вопрос, да) , в чем принципиальное различие между синглом и мультом, именно по скриптовой части? Я не хочу узнать мелкие подробности, но что-нибудь более масштабное и часто встречающееся в сингле, что точно не будет работать в мультиплеере =)
__________________
Whatever
Whatever
Heroist вне форума
Ответить с цитированием
#1314
Старый 10.05.2013, 15:22
  #1314
^
RedHeavenHero
 
Аватар для RedHeavenHero
📖
Регистрация: 10.02.2012
Сообщения: 2378
Выставка наград
Регистрация: 10.02.2012
Сообщения: 2378
Выставка наград
По умолчанию
Re: Скрипты

HeroistRedHeavenHero - как раз в этом и проблема, что "до этого не пустят". Там на карте несколько хижин с собственными именами, хотелось бы, чтобы функция начала давать имена, триггировать и превращать только, когда я уже выполню все задания хижин - т.е - когда dwell = 1.

Добавлено через 47 минут
кстати, (с этого я всегда начинаю вопрос, да) , в чем принципиальное различие между синглом и мультом, именно по скриптовой части? Я не хочу узнать мелкие подробности, но что-нибудь более масштабное и часто встречающееся в сингле, что точно не будет работать в мультиплеере =)
То есть нужно, чтобы до того, как двел станет равным единице, все строения работали как обычно. И, как только двел=1, то все захваченные до этого строения превращаются, а на остальные накладывается триггер. Я прав?
__________________
Карты для Героев Меча и Магии 5
Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты
Кампания: Империя Единорога

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

Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
RedHeavenHero вне форума
Ответить с цитированием
#1315
Старый 10.05.2013, 15:54
  #1315
^
Nargott
 
Аватар для Nargott
📖
Регистрация: 09.05.2009
Адрес: Смоленск
Сообщения: 1583
Регистрация: 09.05.2009
Адрес: Смоленск
Сообщения: 1583
По умолчанию
Re: Скрипты

в чем принципиальное различие между синглом и мультом, именно по скриптовой части? Я не хочу узнать мелкие подробности, но что-нибудь более масштабное и часто встречающееся в сингле, что точно не будет работать в мультиплеере =)
Принципиальное отличие в том, что в мультиплеере боевые скрипты (действующие в бою) не работают.
__________________
Разработчик Heroes 5.5 WarGame Edition.
Сайт проекта - пока неактивен
Автор Асимметричных шахмат
Разработчик Heroes 5.5 WarGame Edition.
Сайт проекта - пока неактивен
Автор Асимметричных шахмат
Nargott вне форума
Ответить с цитированием
#1316
Старый 10.05.2013, 17:10
  #1316
^
Heroist
 
Аватар для Heroist
📖
Регистрация: 16.12.2012
Адрес: Запределье
Сообщения: 14599
Выставка наград
Регистрация: 16.12.2012
Адрес: Запределье
Сообщения: 14599
Выставка наград
По умолчанию
Re: Скрипты

RedHeavenHero - да, совершенно верно. Именно так мне и хотелось бы =)

Nargott - спасибо, догадывался, но не был уверен, а проверять лень. А все остальное, типа добавления армии, артефактов и тп работает?
__________________
Whatever
Whatever
Heroist вне форума
Ответить с цитированием
#1317
Старый 10.05.2013, 21:57
  #1317
^
RedHeavenHero
 
Аватар для RedHeavenHero
📖
Регистрация: 10.02.2012
Сообщения: 2378
Выставка наград
Регистрация: 10.02.2012
Сообщения: 2378
Выставка наград
По умолчанию
Re: Скрипты

	function start_dwellings()
	local t, n = {}, 0
	for i, dwelling in GetObjectNamesByType('PEASANT_HUT') do
		n = n + 1
		t[n] = dwelling
	end   
	for i, dwelling in GetObjectNamesByType('ARCHERS_HOUSE') do
		n = n + 1
		t[n] = dwelling
	end
	for i, dwelling in GetObjectNamesByType('BARRACKS') do 
		n = n + 1
		t[n] = dwelling
	end
	for i, dwelling in GetObjectNamesByType('HEAVEN_MILITARY_POST') do 
		n = n + 1
		t[n] = dwelling
	end         
	for i, dwelling in t do
		if GetObjectOwner(dwelling) == 1 then
			ReplaceDwelling(dwelling, 4)
		else
			SetObjectEnabled(dwelling, nil)
			Trigger(4, dwelling, 'replace_dwelling')
		end
	end
end

function replace_dwelling(hero, dwelling)
	if hero == 'Berein' then
		ReplaceDwelling(dwelling, 4)
		SetObjectEnabled(dwelling, 1)
		Trigger(4, dwelling, nil)
		sleep()
		MakeHeroInteractWithObject(hero, dwelling)
	end
end
Вместо dwell = 1 вызываем функцию start_dwellings.
__________________
Карты для Героев Меча и Магии 5
Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты
Кампания: Империя Единорога

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

Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
RedHeavenHero вне форума
Ответить с цитированием
#1318
Старый 10.05.2013, 22:06
  #1318
^
Heroist
 
Аватар для Heroist
📖
Регистрация: 16.12.2012
Адрес: Запределье
Сообщения: 14599
Выставка наград
Регистрация: 16.12.2012
Адрес: Запределье
Сообщения: 14599
Выставка наград
По умолчанию
Re: Скрипты

startThread(start_dwellings) достаточно?

благодарю
__________________
Whatever
Whatever
Heroist вне форума
Ответить с цитированием
#1319
Старый 10.05.2013, 22:14
  #1319
^
RedHeavenHero
 
Аватар для RedHeavenHero
📖
Регистрация: 10.02.2012
Сообщения: 2378
Выставка наград
Регистрация: 10.02.2012
Сообщения: 2378
Выставка наград
По умолчанию
Re: Скрипты

HeroiststartThread(start_dwellings) достаточно?

благодарю
Да, достаточно. Или можно написать просто start_dwellings() в данном случае.
__________________
Карты для Героев Меча и Магии 5
Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты
Кампания: Империя Единорога

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

Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
RedHeavenHero вне форума
Ответить с цитированием
#1320
Старый 18.05.2013, 08:34
  #1320
^
Warrior777
 
Аватар для Warrior777
📖
Регистрация: 15.09.2012
Адрес: Под кроватью
Сообщения: 602
Регистрация: 15.09.2012
Адрес: Под кроватью
Сообщения: 602
Злость
[ПРОБЛЕМА]

Пробую ввести скрипт и карта перестаёт работать!!!!!!!!!!
Вылетели две карты. Скрипты этих несчастных карт:
	obs = 0

function a ()
	obs = obs + 1
end;

Trigger(NEW_DAY_TRIGGER,"a");

function b ()
	QuestionBox(GetMapDataPath().."mrkobsgst","yes",nil);
end;

function yes
	SetPlayerResource(1,6,-10000);
	obs = obs + 10
end;

function c (heroname)
	ShowFlyingSign({GetMapDataPath().."getobstxt",obs=obs},heroname);
end;

Trigger(OBJECT_TOUCH_TRIGGER,"mrkobs1","b");
Trigger(OBJECT_TOUCH_TRIGGER,"getobs1","c");

Второй скрипт не сохранился.

В начале этих карт какой- то странный файл "index.bin"

ЧТО ВСЁ ЭТО ЗНАЧИТ?
__________________
502 Bad Gateway

__________________________________

nginx/0.8.54
502 Bad Gateway

__________________________________

nginx/0.8.54
Warrior777 вне форума
Ответить с цитированием
Ответ
Страница 88 из 260


Опции темы



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


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

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