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

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

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

Ответ
Страница 119 из 260
 
Опции темы
#1771
Старый 31.01.2014, 22:38
  #1771
^
RedHeavenHero
 
Аватар для RedHeavenHero
📖
Регистрация: 10.02.2012
Сообщения: 2378
Выставка наград
Регистрация: 10.02.2012
Сообщения: 2378
Выставка наград
По умолчанию
Re: Скрипты

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

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

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

хм. жаль. значит, дело в другом...
__________________
Whatever
Whatever
Heroist вне форума
Ответить с цитированием
#1773
Старый 01.02.2014, 07:33
  #1773
^
RedHeavenHero
 
Аватар для RedHeavenHero
📖
Регистрация: 10.02.2012
Сообщения: 2378
Выставка наград
Регистрация: 10.02.2012
Сообщения: 2378
Выставка наград
По умолчанию
Re: Скрипты

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

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

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

ой) не дочитал до конца сообщение) я, в принципе, так и предполагал. ну, это дело поправимое. благодарю!

[u]
__________________
Whatever
Whatever
Heroist вне форума
Ответить с цитированием
#1775
Старый 11.02.2014, 19:12
  #1775
^
metufona
 
Аватар для metufona
📖
Регистрация: 07.05.2011
Сообщения: 4
Выставка наград
Регистрация: 07.05.2011
Сообщения: 4
Выставка наград
По умолчанию
Re: Скрипты

Люди добрые, помогите советом. Очень хочется установить сильную армию в сокровищницу гномов. Сделала объект неактивным, добавила тригер на касание с вопросом "готовы ли вы сразиться со стражей". В случае, если ответ да - должно выдаваться сообщение и происходить битва. Сообщение выдаёт, а вот битва не проиходит. Хотелось бы понять, почему. Буду благодарна за любую помощь, а то шаманить уже надоело.

	dir = GetMapDataPath()
Trigger(OBJECT_TOUCH_TRIGGER, "tres1", "tres1F");
function tres1F (heroName)
		number=GetCurrentPlayer();
		QuestionBoxForPlayers(number,dir.."Capture.txt", "captureF", "nocaptureF");
end;
function captureF (heroName)
	number=GetCurrentPlayer();
	MessageBoxForPlayers(number,dir.."gettreasure.txt");
	StartCombat (heroName, nil, 2,
CREATURE_THANE, 20,
CREATURE_WARLORD, 20, nil);
end;
function alreadyCapturedF (heroName) 
	number=GetCurrentPlayer();
	MessageBoxForPlayers(number,dir.."alreadyCaptured.txt");
end;
function nocaptureF (heroName)
	number=GetCurrentPlayer();
	MessageBoxForPlayers(number,dir.."Coward.txt");
end;
SetObjectEnabled("tres1", false);
metufona вне форума
Ответить с цитированием
#1776
Старый 11.02.2014, 19:26
  #1776
^
Ment
 
Аватар для Ment
📖
Регистрация: 30.10.2009
Адрес: Национальный заповедник
Сообщения: 30680
Регистрация: 30.10.2009
Адрес: Национальный заповедник
Сообщения: 30680
По умолчанию
Re: Скрипты

Скрипт выглядит красиво, странно, что не работает. В консоль не заглядывали? И это... Сомневаюсь, что поможет, но я бы попробовал в конце StartCombat'a написать три nil'а ещё. Там просто есть такая штука, что по дефолту стоит значение переменной, которая идёт первой в функции, как бы из-за этого не было глюка, что обязательная переменная не выставлена, а дефолтная выставлена таким образом...
Ment вне форума
Ответить с цитированием
#1777
Старый 11.02.2014, 19:31
  #1777
^
MasteR
 
Аватар для MasteR
📖
Регистрация: 24.01.2013
Сообщения: 3351
Выставка наград
Регистрация: 24.01.2013
Сообщения: 3351
Выставка наград
По умолчанию
Re: Скрипты

metufonaЛюди добрые, помогите советом. Очень хочется установить сильную армию в сокровищницу гномов. Сделала объект неактивным, добавила тригер на касание с вопросом "готовы ли вы сразиться со стражей". В случае, если ответ да - должно выдаваться сообщение и происходить битва. Сообщение выдаёт, а вот битва не проиходит. Хотелось бы понять, почему. Буду благодарна за любую помощь, а то шаманить уже надоело.

	dir = GetMapDataPath()
Trigger(OBJECT_TOUCH_TRIGGER, "tres1", "tres1F");
function tres1F (heroName)
		number=GetCurrentPlayer();
		QuestionBoxForPlayers(number,dir.."Capture.txt", "captureF", "nocaptureF");
end;
function captureF (heroName)
	number=GetCurrentPlayer();
	MessageBoxForPlayers(number,dir.."gettreasure.txt");
	StartCombat (heroName, nil, 2,
CREATURE_THANE, 20,
CREATURE_WARLORD, 20, nil);
end;
function alreadyCapturedF (heroName) 
	number=GetCurrentPlayer();
	MessageBoxForPlayers(number,dir.."alreadyCaptured.txt");
end;
function nocaptureF (heroName)
	number=GetCurrentPlayer();
	MessageBoxForPlayers(number,dir.."Coward.txt");
end;
SetObjectEnabled("tres1", false);

бегло посмотрел, уже нашёл ошибку.
В функции QuestionBoxForPlayers вы задаёте функцию, которая будет вызываться при ответе "Да". Эта функция не принимает параметров, т.е.
в строке function captureF (heroName) в скобках должно быть пусто. Выход есть, например такой - до всего этого куска задать глобальную переменную, т.е. написать строчку типа hero=''.
Далее в функции, где написан QuestionBox, этой переменной присвоить имя героя таким образом: hero= heroName. И уже в функции StartCombat использовать эту переменную. Получится всё примерно так:

	dir = GetMapDataPath()
hero='';
Trigger(OBJECT_TOUCH_TRIGGER, "tres1", "tres1F");
function tres1F (heroName)
		number=GetCurrentPlayer();
                      hero=heroName;
		QuestionBoxForPlayers(number,dir.."Capture.txt", "captureF", "nocaptureF");
end;
function captureF ()
	number=GetCurrentPlayer();
	MessageBoxForPlayers(number,dir.."gettreasure.txt");
	StartCombat (hero, nil, 2,
CREATURE_THANE, 20,
CREATURE_WARLORD, 20, nil);
end;
function alreadyCapturedF (heroName) 
	number=GetCurrentPlayer();
	MessageBoxForPlayers(number,dir.."alreadyCaptured.txt");
end;
function nocaptureF ()
	number=GetCurrentPlayer();
           hero='';
	MessageBoxForPlayers(number,dir.."Coward.txt");
end;
SetObjectEnabled("tres1", nil);

позволю ещё себе заметить, что не прлохо было бы в функцию StartCombat добавить функцию, которая вызовится после сражения. Благодаря ей можно будет наградить героя, снять триггер со строения и т.п.
MasteR вне форума
Ответить с цитированием
#1778
Старый 11.02.2014, 20:17
  #1778
^
RedHeavenHero
 
Аватар для RedHeavenHero
📖
Регистрация: 10.02.2012
Сообщения: 2378
Выставка наград
Регистрация: 10.02.2012
Сообщения: 2378
Выставка наград
По умолчанию
Re: Скрипты

В эти функции можно передать параметры не совсем традиционным способом, если написать не "captureF", а "captureF('"..heroName.."')"
Да, и MessageBoxForPlayers принимает первым параметром не игрока, а его фильтр GetPlayerFilter(number). Разницы не будет видно, если игроков 1-2, но для >2 будут возникать ошибки. Желательно ещё сделать проверку, является ли игрок компом или нет.
__________________
Карты для Героев Меча и Магии 5
Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты
Кампания: Империя Единорога

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

Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
RedHeavenHero вне форума
Ответить с цитированием
#1779
Старый 11.02.2014, 20:40
  #1779
^
metufona
 
Аватар для metufona
📖
Регистрация: 07.05.2011
Сообщения: 4
Выставка наград
Регистрация: 07.05.2011
Сообщения: 4
Выставка наград
По умолчанию
Re: Скрипты

Juss456бегло посмотрел, уже нашёл ошибку.
В функции QuestionBoxForPlayers вы задаёте функцию, которая будет вызываться при ответе "Да". Эта функция не принимает параметров, т.е.
в строке function captureF (heroName) в скобках должно быть пусто. Выход есть, например такой - до всего этого куска задать глобальную переменную, т.е. написать строчку типа hero=''.
Далее в функции, где написан QuestionBox, этой переменной присвоить имя героя таким образом: hero= heroName. И уже в функции StartCombat использовать эту переменную. Получится всё примерно так:

	dir = GetMapDataPath()
hero='';
Trigger(OBJECT_TOUCH_TRIGGER, "tres1", "tres1F");
function tres1F (heroName)
		number=GetCurrentPlayer();
                      hero=heroName;
		QuestionBoxForPlayers(number,dir.."Capture.txt", "captureF", "nocaptureF");
end;
function captureF ()
	number=GetCurrentPlayer();
	MessageBoxForPlayers(number,dir.."gettreasure.txt");
	StartCombat (hero, nil, 2,
CREATURE_THANE, 20,
CREATURE_WARLORD, 20, nil);
end;
function alreadyCapturedF (heroName) 
	number=GetCurrentPlayer();
	MessageBoxForPlayers(number,dir.."alreadyCaptured.txt");
end;
function nocaptureF ()
	number=GetCurrentPlayer();
           hero='';
	MessageBoxForPlayers(number,dir.."Coward.txt");
end;
SetObjectEnabled("tres1", nil);

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

Спасибо большое, теперь всё работает! Учту на будущее, что подобные функции надо писать без параметров.
В StartCombat функцию после сражения я и планировала добавить, просто делаю всё поэтапно, чтобы не запутаться.


RedHeavenHeroДа, и MessageBoxForPlayers принимает первым параметром не игрока, а его фильтр GetPlayerFilter(number). Разницы не будет видно, если игроков 1-2, но для >2 будут возникать ошибки. Желательно ещё сделать проверку, является ли игрок компом или нет.
Доступа к этому объекту будет только у одного игрока. Поэтому я лучше оставлю, как есть. Но учту на будущее, спасибо!
metufona вне форума
Ответить с цитированием
#1780
Старый 11.02.2014, 20:44
  #1780
^
RedHeavenHero
 
Аватар для RedHeavenHero
📖
Регистрация: 10.02.2012
Сообщения: 2378
Выставка наград
Регистрация: 10.02.2012
Сообщения: 2378
Выставка наград
По умолчанию
Re: Скрипты

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

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

Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
RedHeavenHero вне форума
Ответить с цитированием
#1781
Старый 11.02.2014, 20:46
  #1781
^
metufona
 
Аватар для metufona
📖
Регистрация: 07.05.2011
Сообщения: 4
Выставка наград
Регистрация: 07.05.2011
Сообщения: 4
Выставка наград
По умолчанию
Re: Скрипты

RedHeavenHeroТогда почему бы не использовать обычный MessageBox?
Потому что карта мультиплеерная.
metufona вне форума
Ответить с цитированием
#1782
Старый 11.02.2014, 20:48
  #1782
^
RedHeavenHero
 
Аватар для RedHeavenHero
📖
Регистрация: 10.02.2012
Сообщения: 2378
Выставка наград
Регистрация: 10.02.2012
Сообщения: 2378
Выставка наград
По умолчанию
Re: Скрипты

А, ну да, логично.
__________________
Карты для Героев Меча и Магии 5
Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты
Кампания: Империя Единорога

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

Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
RedHeavenHero вне форума
Ответить с цитированием
#1783
Старый 15.02.2014, 17:32
  #1783
^
MasteR
 
Аватар для MasteR
📖
Регистрация: 24.01.2013
Сообщения: 3351
Выставка наград
Регистрация: 24.01.2013
Сообщения: 3351
Выставка наград
По умолчанию
Re: Скрипты

А функция IsHeroAlive проверяет наличие героя в гарнизоне города?
MasteR вне форума
Ответить с цитированием
#1784
Старый 15.02.2014, 17:53
  #1784
^
RedHeavenHero
 
Аватар для RedHeavenHero
📖
Регистрация: 10.02.2012
Сообщения: 2378
Выставка наград
Регистрация: 10.02.2012
Сообщения: 2378
Выставка наград
По умолчанию
Re: Скрипты

Juss456А функция IsHeroAlive проверяет наличие героя в гарнизоне города?
Не совсем понял. Функция выдает 1, если герой жив в т.ч. если он в гарнизоне города, иначе nil.
__________________
Карты для Героев Меча и Магии 5
Одиночные: Завеса срывается, Посол, Последний рывок, Эхо Пустоты
Кампания: Империя Единорога

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

Существа NCF
Орден Порядка: 1
Нейтралы: 1 2 3 4
RedHeavenHero вне форума
Ответить с цитированием
#1785
Старый 15.02.2014, 22:46
  #1785
^
MasteR
 
Аватар для MasteR
📖
Регистрация: 24.01.2013
Сообщения: 3351
Выставка наград
Регистрация: 24.01.2013
Сообщения: 3351
Выставка наград
По умолчанию
Re: Скрипты

RedHeavenHeroНе совсем понял. Функция выдает 1, если герой жив в т.ч. если он в гарнизоне города, иначе nil.

Ну да, я это и имел ввиду
MasteR вне форума
Ответить с цитированием
Ответ
Страница 119 из 260


Опции темы



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


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

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