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

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

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

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

Вам спасибо, все получилось на ура =)

Добавлено через 6 минут
да, кстати, можно-ли сделать объект недоступным только для определенного игрока, как регион?

если привести пример, мне нужно, чтобы игрок 3 мог спокойно проходить через заставу, а игрок 1 мог только тыкаться в неё, и получить разные задания, но без битвы или захвата заставы. Или придется ставить перед ней мини-регион?
__________________
Whatever
Whatever
Heroist вне форума
Ответить с цитированием
#977
Старый 09.02.2013, 13:10
  #977
^
RedHeavenHero
 
Аватар для RedHeavenHero
📖
Регистрация: 10.02.2012
Сообщения: 2378
Выставка наград
Регистрация: 10.02.2012
Сообщения: 2378
Выставка наград
По умолчанию
Re: Скрипты

HeroistВам спасибо, все получилось на ура =)

Добавлено через 6 минут
да, кстати, можно-ли сделать объект недоступным только для определенного игрока, как регион?

если привести пример, мне нужно, чтобы игрок 3 мог спокойно проходить через заставу, а игрок 1 мог только тыкаться в неё, и получить разные задания, но без битвы или захвата заставы. Или придется ставить перед ней мини-регион?
Можно, например, временным включением/выключением триггера:
	function enabling()
	while 1 do
		SetObjectEnabled('garrison', nil);
		Trigger(4, 'garrison', 'kvest');
		while GetCurrentPlayer() == 1 do
			sleep(1);
		end;
		SetObjectEnabled('garrison', 1);
		Trigger(4, 'garrison', nil);
		while GetCurrentPlayer() ~= 1 do
			sleep(1);
		end;
	end;
end;
Тогда все игроки, кроме первого, смогут ходить через заставу. А первый сможет только получать от неё квесты.
__________________
Карты для Героев Меча и Магии 5
Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты
Кампания: Империя Единорога

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

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

да, кстати, еще интересно, я пишу такой код:

function Prepare ()
hero = GetDefenderHero ()
x1 = GetDefenderCreatures ()
end
function Start ()
if GetCreatureType (x1[0]) == 114 then
SummonCreature (DEFENDER , 122, 1, 12, 1)
SummonCreature (DEFENDER , 122, 1, 12, 10)
end
end

Но написано, что неправильный аргумент при вызове функции GetCreatureType.
Дело в том, что до этого я активирую startcombat, может быть, он не принимает монстра 114 за защищающегося?
__________________
Whatever
Whatever
Heroist вне форума
Ответить с цитированием
#979
Старый 09.02.2013, 22:41
  #979
^
RedHeavenHero
 
Аватар для RedHeavenHero
📖
Регистрация: 10.02.2012
Сообщения: 2378
Выставка наград
Регистрация: 10.02.2012
Сообщения: 2378
Выставка наград
По умолчанию
Re: Скрипты

У вас массив юнитов определяется в подготовке к бою, и функция к этому времени их не чувствует. Нужно определение х1 переместить в функцию старт самым первым.
__________________
Карты для Героев Меча и Магии 5
Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты
Кампания: Империя Единорога

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

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

хм, странно, вчера еще помню не работало, а сейчас вроде все нормально...

снова спасибо, выручаете прямо меня =)

Добавлено через 24 минуты
RedHeavenHeroМожно, например, временным включением/выключением триггера:
	function enabling()
	while 1 do
		SetObjectEnabled('garrison', nil);
		Trigger(4, 'garrison', 'kvest');
		while GetCurrentPlayer() == 1 do
			sleep(1);
		end;
		SetObjectEnabled('garrison', 1);
		Trigger(4, 'garrison', nil);
		while GetCurrentPlayer() ~= 1 do
			sleep(1);
		end;
	end;
end;
Тогда все игроки, кроме первого, смогут ходить через заставу. А первый сможет только получать от неё квесты.


Я немного не понял, а как потом снять блокировку для игрока 1, например, с добавлением новой переменной.
Т.е. где-то в другом месте я указываю "a = 1", а не 0, и тогда застава открывается и для меня.
__________________
Whatever
Whatever
Heroist вне форума
Ответить с цитированием
#981
Старый 10.02.2013, 16:02
  #981
^
RedHeavenHero
 
Аватар для RedHeavenHero
📖
Регистрация: 10.02.2012
Сообщения: 2378
Выставка наград
Регистрация: 10.02.2012
Сообщения: 2378
Выставка наград
По умолчанию
Re: Скрипты

Да, примерно так. Когда переменная stop будет равна 1, тогда цикл оборвётся в нужном месте, и все смогут пользоваться гарнизоном как обычно.
	stop = 0;
function enabling()
	while 1 do
		SetObjectEnabled('garrison', nil);
		Trigger(4, 'garrison', 'kvest');
		repeat
			sleep(1);
		until GetCurrentPlayer() ~= 1 or stop == 1;
		SetObjectEnabled('garrison', 1);
		Trigger(4, 'garrison', nil);
		repeat
			sleep(1);
		until GetCurrentPlayer() == 1 or stop == 1;
		if stop == 1 then
			break;
		end;
	end;
end;
__________________
Карты для Героев Меча и Магии 5
Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты
Кампания: Империя Единорога

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

Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
RedHeavenHero вне форума
Ответить с цитированием
#982
Старый 12.02.2013, 16:37
  #982
^
HAndOS
📖
Регистрация: 21.05.2012
Сообщения: 281
Регистрация: 21.05.2012
Сообщения: 281
По умолчанию
Re: Скрипты

	r=random(5)

function cr()

 if IsHeroAlive('Sun')
    then 
    OpenCircleFog(r,r,0,10,PLAYER_1)
     OpenCircleFog(0,0,0,9999,PLAYER_1)
end;
end;
Trigger(NEW_DAY_TRIGGER,'cr')

Этот скрипт каждый день пока жив герой Sun(ну я карту делаю это один из глвных новых персонажей созданных с нуля)должен открывать случайный кусочек карты ,но он неоткрывет !

Добавлено через 3 минуты
Скажите почему.Пожалуйста а то не смогу спать спокойно(вылечил бессонницу не хочу опять страдать )
HAndOS вне форума
Ответить с цитированием
#983
Старый 12.02.2013, 16:57
  #983
^
Ment
 
Аватар для Ment
📖
Регистрация: 30.10.2009
Адрес: Национальный заповедник
Сообщения: 30690
Регистрация: 30.10.2009
Адрес: Национальный заповедник
Сообщения: 30690
По умолчанию
Re: Скрипты

Sun -- это точно нужное имя героя? Вы его задавали в Shared?
r=random(5) -- надо засунуть в тело функции, иначе только один раз вызовется.
OpenCircleFog(0,0,0,9999,PLAYER_1) -- это для теста, я верно понял?
Ment вне форума
Ответить с цитированием
#984
Старый 12.02.2013, 17:07
  #984
^
HAndOS
📖
Регистрация: 21.05.2012
Сообщения: 281
Регистрация: 21.05.2012
Сообщения: 281
Sun -- это точно нужное имя героя? Вы его задавали в Shared?
r=random(5) -- надо засунуть в тело функции, иначе только один раз вызовется.
OpenCircleFog(0,0,0,9999,PLAYER_1) -- это для теста, я верно понял?

Да в shared задано.

Понятно в тело значит в тело.

Да для теста.

Добавлено через 2 минуты
А как сделать чтобы было рандомное число а то только пять и всё?
HAndOS вне форума
Ответить с цитированием
#985
Старый 12.02.2013, 17:11
  #985
^
Ment
 
Аватар для Ment
📖
Регистрация: 30.10.2009
Адрес: Национальный заповедник
Сообщения: 30690
Регистрация: 30.10.2009
Адрес: Национальный заповедник
Сообщения: 30690
По умолчанию
Re: Скрипты

Больше не вижу пока, почему он может не работать ( Консоль что-нибудь пишет?
Кстати, у скрипта есть несколько минусов. В частности он открывает регионы только по диагонали (чтобы такого не было, нужны две переменные: r1 и r2). Также их лучше в функции OpenCircleFog(r,r,0,10,PLAYER_1) умножать на что-то, а то разброс в пять клеток не особо велик. Но это уже тонкости.
Ment вне форума
Ответить с цитированием
#986
Старый 12.02.2013, 17:14
  #986
^
HAndOS
📖
Регистрация: 21.05.2012
Сообщения: 281
Регистрация: 21.05.2012
Сообщения: 281
По умолчанию
Re: Скрипты

Сейчас попробую.Спасибо.

Добавлено через 1 минуту
Сейчас попробую.Спасибо.

P.S разброс в 700 нормально будет?
HAndOS вне форума
Ответить с цитированием
#987
Старый 12.02.2013, 17:15
  #987
^
Ment
 
Аватар для Ment
📖
Регистрация: 30.10.2009
Адрес: Национальный заповедник
Сообщения: 30690
Регистрация: 30.10.2009
Адрес: Национальный заповедник
Сообщения: 30690
По умолчанию
Re: Скрипты

разброс в 700 нормально будет?
Думаю, много. Не помню такого большого размера карты.
Ment вне форума
Ответить с цитированием
#988
Старый 12.02.2013, 17:18
  #988
^
HAndOS
📖
Регистрация: 21.05.2012
Сообщения: 281
Регистрация: 21.05.2012
Сообщения: 281
По умолчанию
Re: Скрипты

А потом например как город захватишь можно прикратить карту открывать?

Добавлено через 2 минуты
Да 700 много размер карты 136 на 136
HAndOS вне форума
Ответить с цитированием
#989
Старый 12.02.2013, 17:30
  #989
^
Ment
 
Аватар для Ment
📖
Регистрация: 30.10.2009
Адрес: Национальный заповедник
Сообщения: 30690
Регистрация: 30.10.2009
Адрес: Национальный заповедник
Сообщения: 30690
По умолчанию
Re: Скрипты

А потом например как город захватишь можно прикратить карту открывать?
Можно. Поставьте триггер на захват объекта и переменную, которая равна 0, если объект не захвачен и 1 в противном случае. А в if IsHeroAlive('Sun') добавить тогда проверку на эту переменную, чему она равна.
Ment вне форума
Ответить с цитированием
#990
Старый 12.02.2013, 17:34
  #990
^
HAndOS
📖
Регистрация: 21.05.2012
Сообщения: 281
Регистрация: 21.05.2012
Сообщения: 281
По умолчанию
Re: Скрипты

Спасибо.А срегионом може тоже самое проделать? Тоесть: если run=1 то непроходишь.А если run=0 то проходишь.Однако это будет вешаться на палатку ключника ну тут я теперь заню,отключить обьект и повесить триггер что при столкновении run=0.
HAndOS вне форума
Ответить с цитированием
Ответ
Страница 66 из 260


Опции темы



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


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

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