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

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

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

Ответ
Страница 10 из 260
 
Опции темы
#136
Старый 20.09.2010, 11:48
  #136
^
Spectral
 
Аватар для Spectral
📖
Регистрация: 10.05.2010
Адрес: Коттедж в Игг-Шайле, есть вилла в Аль-сафире, квартирка в Империи грифона, а также дача в Ироллане
Сообщения: 156
Регистрация: 10.05.2010
Адрес: Коттедж в Игг-Шайле, есть вилла в Аль-сафире, квартирка в Империи грифона, а также дача в Ироллане
Сообщения: 156
По умолчанию
Re: Скрипты

ГильраенО Господи! Это MoveHero тоже не работает!! Я могу понять этих двух героев- на смерть идти не хочется, но со скриптами они же должны работать!!! У меня герои врага либо желают что хотят (пока я не посавил блоки) или просто стоят (как в последних трёх случаях). Я их уже и. MoveHero зову, и AiAttractorom тоже приманиваю, но нет же - упёрлись рогом!
Возможно MoveHero работает только, когда путь к объекту полностью свободен, т.е. не заблокирован монстром или вражеским героем. А проверить это можно функцией CanMoveHero(heroName,x,y,floorID)
__________________
 Создается карта про эльфов: Воссоединение - готовность 71%
 Создается карта про эльфов: Воссоединение - готовность 71%
Spectral вне форума
Ответить с цитированием
#137
Старый 20.09.2010, 12:07
  #137
^
Ment
 
Аватар для Ment
📖
Регистрация: 30.10.2009
Адрес: Национальный заповедник
Сообщения: 30680
Регистрация: 30.10.2009
Адрес: Национальный заповедник
Сообщения: 30680
По умолчанию
Re: Скрипты

MoveHero -- хитрая вообще такая вещь. Он может не работать, если точка предназначения у героя находится на "зелёной" клетке. Пример: в Гномании не получилось заставить с помощью этой функции напасть героями на гарнизон. Делал так: посылал на соседнюю клетку, а там стоит регион, и для него прописан триггер:
function Gar(hero)
if hero=="bla-bla" then
MakeHeroInteractWithObject("bla-bla","Garnison");
end;
end;
Ment вне форума
Ответить с цитированием
#138
Старый 20.09.2010, 21:05
  #138
^
Победитель
 
Аватар для Победитель
📖
Регистрация: 18.07.2008
Сообщения: 3427
Выставка наград
Регистрация: 18.07.2008
Сообщения: 3427
Выставка наград
По умолчанию
Re: Скрипты

Ну я уже разобрался. Просто герои в упор не хотели атаковать города. Просто посатвил героев из городов на соседнюю клетку (кстати в город я их запихивал телепортом; есть ли способ посавить героя "в гости" и выключить его?). И можно теперь всё же поподробнее о заданиях? Где из настроить, как добавить описания? Как сделать "пустое" задание (есть только описание, выполняется скриптом)?
Победитель вне форума
Ответить с цитированием
#139
Старый 20.09.2010, 21:15
  #139
^
Квант
 
Аватар для Квант
📖
Регистрация: 23.12.2009
Адрес: Тюмень
Сообщения: 312
Отправить сообщение для  Квант с помощью ICQ
Выставка наград
Регистрация: 23.12.2009
Адрес: Тюмень
Сообщения: 312
Отправить сообщение для  Квант с помощью ICQ
Выставка наград
По умолчанию
Re: Скрипты

Ну я уже разобрался. Просто герои в упор не хотели атаковать города. Просто посатвил героев из городов на соседнюю клетку
блин, как же у меня герои атакуют города в Астралии?
разве у меня особенные скрипты?
Квант вне форума
Ответить с цитированием
#140
Старый 21.09.2010, 11:13
  #140
^
Ment
 
Аватар для Ment
📖
Регистрация: 30.10.2009
Адрес: Национальный заповедник
Сообщения: 30680
Регистрация: 30.10.2009
Адрес: Национальный заповедник
Сообщения: 30680
По умолчанию
Re: Скрипты

На скриншоте к сообщ. ном. 32 видно дерево свойств карты. Раскрываешь, как там. Потом заполняешь name,captionFileRef (название)и descriptionFileRef (описание). Если нужно, чтобы не было видно вначале, IsHidden и IsInitalyVisible на false. Усё.
Ment вне форума
Ответить с цитированием
#141
Старый 21.09.2010, 17:30
  #141
^
Spectral
 
Аватар для Spectral
📖
Регистрация: 10.05.2010
Адрес: Коттедж в Игг-Шайле, есть вилла в Аль-сафире, квартирка в Империи грифона, а также дача в Ироллане
Сообщения: 156
Регистрация: 10.05.2010
Адрес: Коттедж в Игг-Шайле, есть вилла в Аль-сафире, квартирка в Империи грифона, а также дача в Ироллане
Сообщения: 156
По умолчанию
Re: Скрипты

MentMoveHero -- хитрая вообще такая вещь. Он может не работать, если точка предназначения у героя находится на "зелёной" клетке. Пример: в Гномании не получилось заставить с помощью этой функции напасть героями на гарнизон. Делал так: посылал на соседнюю клетку, а там стоит регион, и для него прописан триггер:
function Gar(hero)
if hero=="bla-bla" then
MakeHeroInteractWithObject("bla-bla","Garnison");
end;
end;

А эта функция работает только если герой находится рядом с объектом?
Если нет, то можно даже не ставить регион и триггер.
__________________
 Создается карта про эльфов: Воссоединение - готовность 71%
 Создается карта про эльфов: Воссоединение - готовность 71%
Spectral вне форума
Ответить с цитированием
#142
Старый 07.07.2011, 12:41
  #142
^
Победитель
 
Аватар для Победитель
📖
Регистрация: 18.07.2008
Сообщения: 3427
Выставка наград
Регистрация: 18.07.2008
Сообщения: 3427
Выставка наград
По умолчанию
Re: Скрипты

Можно подсказать, как выглядит условие, которое срабатывает при гибели отряда или вражеского героя?
Победитель вне форума
Ответить с цитированием
#143
Старый 07.07.2011, 13:00
  #143
^
Dyrman
 
Аватар для Dyrman
📖
Регистрация: 24.06.2008
Адрес: Там, где неба кончается край
Сообщения: 3479
Отправить сообщение для  Dyrman с помощью ICQ
Регистрация: 24.06.2008
Адрес: Там, где неба кончается край
Сообщения: 3479
Отправить сообщение для  Dyrman с помощью ICQ
По умолчанию
Re: Скрипты

ПобедительМожно подсказать, как выглядит условие, которое срабатывает при гибели отряда или вражеского героя?
Пример с моей карты:
	
if GetSavedCombatArmyHero(a1,0)=="Giovanni" then
Loose();
end;
if (GetSavedCombatArmyHero(a1,1)=="Giovanni") and  (GetSavedCombatArmyHero(a1,0)=="Zehir") then
MessageBox(GetMapDataPath().."talk_of_grigorio_6.txt");
SetObjectiveState("kill_pl5", OBJECTIVE_COMPLETED, PLAYER_1 );
SetPlayerResource(PLAYER_1 ,GOLD, GetPlayerResource(PLAYER_1 , GOLD)+20000);
end;

	if  flag_bad_grig==1 then
if (GetSavedCombatArmyHero(a1,1)=="Giovanni") and  (GetSavedCombatArmyHero(a1,0)=="Duncan") then
SetObjectiveState("kill_pl6", OBJECTIVE_COMPLETED, PLAYER_1 );
MessageBox(GetMapDataPath().."talk_of_grigorio_5.txt");
SetObjectEnabled("portal1", true);
end;
else
if (GetSavedCombatArmyHero(a1,1)=="Giovanni") and (flag_britt==1) then
count_stacks = GetSavedCombatArmyCreaturesCount(a1,0);
for i=0,count_stacks-1 do
cr, numer, dead = GetSavedCombatArmyCreatureInfo(a1,0,i);
if cr==cr_ded then
Strelki_dead= Strelki_dead + dead;
end;
end;

Вот примеры кода. Если разбираешься -поймёшь, если нет - потребуй объяснения.
Пример частный, в котором один герой побеждает другого, либо валит отряд и собирает их численность.
Или надо чтобы он учитывал любое умирание врага?
Тогда вот:
	Формат вызываемой процедуры:
     void sProc( sHeroName )
Останов:
     Trigger(PLAYER_REMOVE_HERO_TRIGGER, nPlayerID, nil)
Процедура вызывается, когда игрок nPlayerID теряет героя. Имя данного героя передается в процедуру в качестве параметра
Dyrman вне форума
Ответить с цитированием
#144
Старый 08.07.2011, 10:44
  #144
^
Победитель
 
Аватар для Победитель
📖
Регистрация: 18.07.2008
Сообщения: 3427
Выставка наград
Регистрация: 18.07.2008
Сообщения: 3427
Выставка наград
По умолчанию
Re: Скрипты

Спасибо, Dyrman. Самый нижний вариант подошёл. Только у меня появилась большая проблема. Скрипты работаю через строчку. Вот, например:
OpenCircleFog(83, 14, 0, 4, PLAYER_1); -- работает,
а тремя строчками ниже:
SetPlayerResource(PLAYER_1, GOLD, 5000); -- нет. Обе строчки без функций, как они работаю, видел в чужих картах. В чём может быть проблема?

P.S.: Не работает всё, начиная со строчки
SetRegionBlocked("AntiAI", true, PLAYER_2);
Могла она "испортить" всё, что идёт после неё?
Победитель вне форума
Ответить с цитированием
#145
Старый 08.07.2011, 11:10
  #145
^
Dyrman
 
Аватар для Dyrman
📖
Регистрация: 24.06.2008
Адрес: Там, где неба кончается край
Сообщения: 3479
Отправить сообщение для  Dyrman с помощью ICQ
Регистрация: 24.06.2008
Адрес: Там, где неба кончается край
Сообщения: 3479
Отправить сообщение для  Dyrman с помощью ICQ
По умолчанию
Re: Скрипты

ПобедительP.S.: Мне показалось, что код не работает после строчки
MessageBox("/Maps/SingleMissions/***********/msg1.txt");
Если она некорректна, может ли она заблокировать всё, что идёт после неё?
Именно так. После неправильной строчки в функции все последующие не работают.
Смотрим кодировку в текстовом файле, проверяем правильность пути(смотрим и правильность написания других функций), и лучше пользуемся функцией GetMapDataPath(), т.к. если поменять название файла карты, то обозначенные пути перестанут существовать.

	GetMapDataPath() - определяет путь к основным файлам карты.
.. - строковое объединение
пример:
MessageBox(GetMapDataPath().."talk_of_grigorio_6.txt");


Добавлено через 17 минут
ПобедительP.S.: Не работает всё, начиная со строчки
SetRegionBlocked("AntiAI", true, PLAYER_2);
Могла она "испортить" всё, что идёт после неё?
Что идёт после этой строки?
Выложи весь скрипт.
Что пишет консоль? Консоль - хороший помощник в выловлении багов
И ещё просьба: редактить сообщения обычно , а не как моддер, а то времени изменения не видно, а я получаются, отвечаю на несуществующие вопросы((
Dyrman вне форума
Ответить с цитированием
#146
Старый 11.07.2011, 08:54
  #146
^
Победитель
 
Аватар для Победитель
📖
Регистрация: 18.07.2008
Сообщения: 3427
Выставка наград
Регистрация: 18.07.2008
Сообщения: 3427
Выставка наград
По умолчанию
Re: Скрипты

Можно поподробнее объяснить, как оформлять функцию, которую вы выкладывали в предыдуще сообщении?

void -название функции?- ( -имя убитого героя- )
-то, что происходит при смерти героя?-
Trigger(PLAYER_REMOVE_HERO_TRIGGER, nPlayerID, nil)
end;
end;
-ещё раз триггер с именем процедуры?-

P.S.: Ошибки в предыдущем коде исправил, спасибо ещё раз за помощь.
Победитель вне форума
Ответить с цитированием
#147
Старый 11.07.2011, 09:32
  #147
^
Dyrman
 
Аватар для Dyrman
📖
Регистрация: 24.06.2008
Адрес: Там, где неба кончается край
Сообщения: 3479
Отправить сообщение для  Dyrman с помощью ICQ
Регистрация: 24.06.2008
Адрес: Там, где неба кончается край
Сообщения: 3479
Отправить сообщение для  Dyrman с помощью ICQ
По умолчанию
Re: Скрипты

ПобедительМожно поподробнее объяснить, как оформлять функцию, которую вы выкладывали в предыдуще сообщении?

void -название функции?- ( -имя убитого героя- )
-то, что происходит при смерти героя?-
Trigger(PLAYER_REMOVE_HERO_TRIGGER, nPlayerID, nil)
end;
end;
-ещё раз триггер с именем процедуры?-

P.S.: Ошибки в предыдущем коде исправил, спасибо ещё раз за помощь.
Пример:
	DedF (GGDed)
if GGded == "Zosya" then
..........тут код
end;
end;
Trigger(PLAYER_REMOVE_HERO_TRIGGER, 1, "DedF")

Как-то так вроде
Dyrman вне форума
Ответить с цитированием
#148
Старый 11.07.2011, 14:26
  #148
^
Победитель
 
Аватар для Победитель
📖
Регистрация: 18.07.2008
Сообщения: 3427
Выставка наград
Регистрация: 18.07.2008
Сообщения: 3427
Выставка наград
По умолчанию
Re: Скрипты

Консоль ругается . Говорит:
Script ERROR: attempt to call a nil value
Идёт это в самом конце - похоже, это обсуждаемая функция.
P.S.: На второй end редактор скриптов ругается, я его убрал. Может, надо какое-нибудь else прописать?
Победитель вне форума
Ответить с цитированием
#149
Старый 11.07.2011, 16:48
  #149
^
Dyrman
 
Аватар для Dyrman
📖
Регистрация: 24.06.2008
Адрес: Там, где неба кончается край
Сообщения: 3479
Отправить сообщение для  Dyrman с помощью ICQ
Регистрация: 24.06.2008
Адрес: Там, где неба кончается край
Сообщения: 3479
Отправить сообщение для  Dyrman с помощью ICQ
По умолчанию
Re: Скрипты

ПобедительКонсоль ругается . Говорит:
Script ERROR: attempt to call a nil value
Идёт это в самом конце - похоже, это обсуждаемая функция.
P.S.: На второй end редактор скриптов ругается, я его убрал. Может, надо какое-нибудь else прописать?
Тупо копирнул или переделал на свой лад? С ЭНДами всё нормально. Добавь определитель функции - слово function Ну это и так понятно, думаю. Вряд ли ты тупо копирнул.
Вызываешь nil вместо чего-то. Проверяй, существует ли герой, функция, параметры, если же, конечно, не это слово - function

"Zosya" - естесственно вымышленное имя. Там должно быть имя вражеского героя, если имя вражеского героя любое, то просто убери условие.
Dyrman вне форума
Ответить с цитированием
#150
Старый 12.07.2011, 22:51
  #150
^
Его Высокопреосвященство
📖
Регистрация: 20.06.2011
Адрес: Уфа, Республика Башкортостан
Сообщения: 156
Регистрация: 20.06.2011
Адрес: Уфа, Республика Башкортостан
Сообщения: 156
По умолчанию
Re: Скрипты

Здравствуйте, я новичок в heroesworldе. Немного покопался в самых простых скриптах, некоторые получились. Но все же это неизмеримо мало по сравнению с теми, что прописаны в некоторых картах, поэтому надеюсь на сотрудничество с Вами.
__________________
Дайте мне всего шесть строк, написанных рукой самого честного человека, и я найду, за что его можно повесить.

Весьма хороший попутчик... До первого перекрестка.
Дайте мне всего шесть строк, написанных рукой самого честного человека, и я найду, за что его можно повесить.

Весьма хороший попутчик... До первого перекрестка.
Его Высокопреосвященство вне форума
Ответить с цитированием
Ответ
Страница 10 из 260


Опции темы



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


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

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