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

Вернуться   Форум HeroesWorld-а > Все о игре Герои 5. All about Heroes 5 > Герои Меча и Магии 5 - Картостроительство (Редактор карт)
Имя
Пароль
Карта сайта Регистрация Справка Пользователи Календарь Все разделы прочитаны
Быстрая навигация по основным разделам форума:
Кланы HW Турниры на HW КАРТЫ и Картостроительство Heroes 6 Heroes 5 Heroes 4 Heroes 3 Heroes 2 Heroes 1 Might&Magic

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

Ответ
 
Опции темы
Старый 21.05.2020, 20:16   #3151
Лоли Никита
 
Аватар для Лоли Никита
Регистрация: 24.03.2019
Сообщения: 18
Лоли Никита - уровень боевого духа
По умолчанию Re: Скрипты

Подскажите пожалуйста, как сделать скрипт, чтобы при смене дня каждый день менялось освещение, к примеру: понедельник - рассвет, вторник утро, среда день, четверг - закат, пятница полночь.
Лоли Никита вне форума   Ответить с цитированием
Старый 21.05.2020, 20:39   #3152
}{0TT@6bI4
 
Аватар для }{0TT@6bI4
Регистрация: 05.09.2019
Адрес: Серебряные Города, Аль-Сафир
Сообщения: 123
}{0TT@6bI4 - уровень боевого духа
По умолчанию Re: Скрипты

Цитата:
Сообщение от Лоли Никита
Подскажите пожалуйста, как сделать скрипт, чтобы при смене дня каждый день менялось освещение, к примеру: понедельник - рассвет, вторник утро, среда день, четверг - закат, пятница полночь.
Здравствуйте. В MapProperties=>GroundAmbientLights=>ПКМ=>Add. Затем в появившейся строчке нажмите 3 точки и выберите светлую подсветку или нажмите New и создайте свою подсветку, хоть закат, хоть полуночь. Но главное: для каждого нового AmbientLight в параметр InternalName впишите адекватное имя на английском — например, SunRaise. Далее в скрипте
Код:
function NewDayCheck() if GetDate(DAY_OF_WEEK)==1 *(понедельник) then SetAmbientLight("SunRaise", GROUND, 5); end; if GetDate(DAY_OF_WEEK)==2 *(вторник) then SetAmbientLight("SunMiddle", GROUND, 5); end; ... end; Trigger(NEW_DAY_TRIGGER, "NewDayCheck");
Подробнее об AmbientLight прочитайте в мануале многоуважаемого Jack_of_shadows. Здесь и далее буду ссылаться на его руководство и своё.
ЧаВо от Jack of Shadows, смотрите пункт "Как динамически менять освещение карты?".
Ознакомится с этим пунктом обязательно; всё, что я не упомянул тут ради экономии места и времени (в связи с кое-какой работой я таперича немного занятой), есть в его руководстве.
__________________
Мои карты
Сценарий "Лабиринт Тайн"
Сценарий "Руны в хорошие руки"
Кампания "Великая цель" в разработке(60%)

_____________________
Мои руководстваВидео, как делать мультики:
Как делать мультики?

_____________________
Мануал по графическому оформлению карт, созданию вулканов, водопадов и многому-многому другому:
Делаем офигенно красивые карты


_____________________
Асха всё обращает на пользу!
}{0TT@6bI4 вне форума   Ответить с цитированием
Старый 22.05.2020, 20:58   #3153
Лоли Никита
 
Аватар для Лоли Никита
Регистрация: 24.03.2019
Сообщения: 18
Лоли Никита - уровень боевого духа
По умолчанию Re: Скрипты

Как сделать скрипт, чтобы при взаимодействии с объектом начинался бой с определенными противниками( в моем случае 3 пачки по 5 латников), но чтобы количество существ зависило от уровня сложности( например на воине 5 латников, а на герое 7), заранее спасибо тому, кто ответит.
И еще кое-что. Я хотел сделать скрипт StartCombat, для боя с орками, но не нашел идентифекаторы орков и 3 грейда всех существ кроме людей. Где найти и посмотреть эти идентифекаторы?
Лоли Никита вне форума   Ответить с цитированием
Старый 22.05.2020, 21:41   #3154
}{0TT@6bI4
 
Аватар для }{0TT@6bI4
Регистрация: 05.09.2019
Адрес: Серебряные Города, Аль-Сафир
Сообщения: 123
}{0TT@6bI4 - уровень боевого духа
По умолчанию Re: Скрипты

Цитата:
Сообщение от Лоли Никита
Как сделать скрипт, чтобы при взаимодействии с объектом начинался бой с определенными противниками( в моем случае 3 пачки по 5 латников), но чтобы количество существ зависило от уровня сложности( например на воине 5 латников, а на герое 7), заранее спасибо тому, кто ответит.
Для начала присвой скрипиовое имя объекту, щёлкнув по нему на карте и вписав это имя в строчку свойств объекта Name. Допустим, nObject. А MyHeroScriptName — скриптовое имя главного героя, посмотреть его можно, выделив героя и нажав пробел, во вкладке Settings.
Далек в скрипте
Код:
diff=GetDifficulty(); --diff == 1 на Рекруте, 2 на воине, 3 на Ветеране, 4 на герое function MyCombat(heroname, objectname) if heroname == "MyHeroScriptName" then--Проверка, нужный ли герой тронул объект StartCombat(heroname, nil, 3, 6, 5+2*diff, 6, 5+2*diff, 6, 5+2*diff, nil, "resultsf"--Функция, запускающаяся после боя, нужна, если после битвы должно быть что-то); Trigger(OBJECT_TOUCH_TRIGGER, "nObject", nil); --Обнуление функции end; end; Trigger(OBJECT_TOUCH_TRIGGER, "nObject", "MyCombat"); function results(hero, result) if result == not nil then --Скрипт, работающий после победы... else --Скрипт, работающий в случае поражения... end; end;
6 — это идентификатор латника, будет 3 стека по 5 плюс по 2 за уровень сложности.
__________________
Мои карты
Сценарий "Лабиринт Тайн"
Сценарий "Руны в хорошие руки"
Кампания "Великая цель" в разработке(60%)

_____________________
Мои руководстваВидео, как делать мультики:
Как делать мультики?

_____________________
Мануал по графическому оформлению карт, созданию вулканов, водопадов и многому-многому другому:
Делаем офигенно красивые карты


_____________________
Асха всё обращает на пользу!
}{0TT@6bI4 вне форума   Ответить с цитированием
Старый 22.05.2020, 22:53   #3155
Лоли Никита
 
Аватар для Лоли Никита
Регистрация: 24.03.2019
Сообщения: 18
Лоли Никита - уровень боевого духа
По умолчанию Re: Скрипты

diff=GetDifficulty();
function bitva_1(heroname, objectname)
if heroname == "Raelag" then
StartCombat(heroname, nil, 3, 6, 5+2*diff, 6, 5+2*diff, 6, 5+2*diff, nil);
sleep(5);
RemoveObject('q7');
RemoveObject('q8');
RemoveObject('q9');
end;
end;
Trigger(OBJECT_TOUCH_TRIGGER,'q7','bitva_1');
Trigger(OBJECT_TOUCH_TRIGGER,'q8','bitva_1');
Trigger(OBJECT_TOUCH_TRIGGER,'q9','bitva_1');
Сделал вроде правильно, но латников на герое становится 9, а мне надо 7, как я понял, 5+2*diff - означает 5 латников + количество умноженное на сложность. Если сложность рекрут, то diff=1, и получается на рекруте будет 7 латников, если сложность воин, то diff=2, а там уже 5+2*2=9. Можете пожалуйста объяснить в чем тут ошибка. Заранее спасибо.

Добавлено через 25 минут
Я хотел бы еще кое-что спросить, существует функция OpenCircleFog , она открывает туман войны, и с помощью нее можно открыть часть карты, можно ли с помощью какой-нибудь функции сделать так, чтобы она не открывала, а закрывала туман войны, таким образом не позволяя просматривать герою некоторые места, в которых он уже побывал, и чтоб на миникарте в левом нижнем углу игры тоже не было видно этой части карты?
Лоли Никита вне форума   Ответить с цитированием
Старый 22.05.2020, 23:20   #3156
}{0TT@6bI4
 
Аватар для }{0TT@6bI4
Регистрация: 05.09.2019
Адрес: Серебряные Города, Аль-Сафир
Сообщения: 123
}{0TT@6bI4 - уровень боевого духа
По умолчанию Re: Скрипты

Цитата:
Сообщение от Лоли Никита
diff=GetDifficulty();
function bitva_1(heroname, objectname)
if heroname == "Raelag" then
StartCombat(heroname, nil, 3, 6, 5+2*diff, 6, 5+2*diff, 6, 5+2*diff, nil);
sleep(5);
RemoveObject('q7');
RemoveObject('q8');
RemoveObject('q9');
end;
end;
Trigger(OBJECT_TOUCH_TRIGGER,'q7','bitva_1');
Trigger(OBJECT_TOUCH_TRIGGER,'q8','bitva_1');
Trigger(OBJECT_TOUCH_TRIGGER,'q9','bitva_1');
Сделал вроде правильно, но латников на герое становится 9, а мне надо 7, как я понял, 5+2*diff - означает 5 латников + количество умноженное на сложность. Если сложность рекрут, то diff=1, и получается на рекруте будет 7 латников, если сложность воин, то diff=2, а там уже 5+2*2=9. Можете пожалуйста объяснить в чем тут ошибка. Заранее спасибо.

Добавлено через 25 минут
Я хотел бы еще кое-что спросить, существует функция OpenCircleFog , она открывает туман войны, и с помощью нее можно открыть часть карты, можно ли с помощью какой-нибудь функции сделать так, чтобы она не открывала, а закрывала туман войны, таким образом не позволяя просматривать герою некоторые места, в которых он уже побывал, и чтоб на миникарте в левом нижнем углу игры тоже не было видно этой части карты?
Простите, это я на автомате ошибся. На рекруте diff будет 0, на воине 1, на ветеране 2, на герое 3, поэтому на рекруте будет в каждом стеке 5 латников, на воине — 7, на ветеране 9 и на герое 11. Но использовать простой GetDifficulty при расчётах зачастую неудобно в связи с её нулевым значением на рекруте, поэтому рекомендую поменять
Код:
diff = GetDifficulty();
на
Код:
diff = GetDifficulty()+1
. Если вам так надо на герое 7, то напишите внутрь функции перед Start Combat
Код:
diff= GetDifficulty()+1; ... ... local amount=0; local i=1; for i,4 do if diff == i then amount=i; end; end; ...
Вроде, вот так правильно, но это не точно...
А в формуле расчёта числа латников поставь 3+amount. Если не сработает (а я написанному гарантии 100% пока дать не могу — работаю с телефона и потому по памяти), тупо в лоб пропиши условия
Код:
diff=GetDifficulty()+1; ... ... local amount=0; if diff == 1 then amount=5; end; if diff == 2 then amount=5; end; if diff == 3 then amount=6; end; if diff == 4 then amount=7 end;
А в формулу расчёта числа латников напиши просто amount.
Выбирай любой способ.

Насчёт закрытия тумана, сколько ни работал, ни разу не видел такой, а потому заявляю — такой функции нет. Но я не застразован от ошибок, может, она и есть. Тогда попробуй либо
Код:
CloseCircleFog(x, y, floor, radius, PLAYER_ID);
или спроси в ЛС Jack_of_shadows
__________________
Мои карты
Сценарий "Лабиринт Тайн"
Сценарий "Руны в хорошие руки"
Кампания "Великая цель" в разработке(60%)

_____________________
Мои руководстваВидео, как делать мультики:
Как делать мультики?

_____________________
Мануал по графическому оформлению карт, созданию вулканов, водопадов и многому-многому другому:
Делаем офигенно красивые карты


_____________________
Асха всё обращает на пользу!
}{0TT@6bI4 вне форума   Ответить с цитированием
Старый 23.05.2020, 13:56   #3157
Лоли Никита
 
Аватар для Лоли Никита
Регистрация: 24.03.2019
Сообщения: 18
Лоли Никита - уровень боевого духа
По умолчанию Re: Скрипты

Спасибо, вроде все работает. А где найти идентифекаторы орды и 3 грейда всех остальных фракций кроме людей?
Лоли Никита вне форума   Ответить с цитированием
Старый 23.05.2020, 15:22   #3158
}{0TT@6bI4
 
Аватар для }{0TT@6bI4
Регистрация: 05.09.2019
Адрес: Серебряные Города, Аль-Сафир
Сообщения: 123
}{0TT@6bI4 - уровень боевого духа
По умолчанию Re: Скрипты

Цитата:
Сообщение от Лоли Никита
Спасибо, вроде все работает. А где найти идентифекаторы орды и 3 грейда всех остальных фракций кроме людей?
.../Папка с игрой/data/data.pak => в этом архиве ищи файл types.xml, он вне других папок, прямо в data.pak лежит. Открой блокнотом, когда загпузится, нажми Ctrl + F и ищи DRUID, пока не дойдёшь до строчек с именем существа и его ID, а потом колёсиком мотай вниз.
__________________
Мои карты
Сценарий "Лабиринт Тайн"
Сценарий "Руны в хорошие руки"
Кампания "Великая цель" в разработке(60%)

_____________________
Мои руководстваВидео, как делать мультики:
Как делать мультики?

_____________________
Мануал по графическому оформлению карт, созданию вулканов, водопадов и многому-многому другому:
Делаем офигенно красивые карты


_____________________
Асха всё обращает на пользу!
}{0TT@6bI4 вне форума   Ответить с цитированием
Старый 24.05.2020, 01:21   #3159
Grigoriy
Регистрация: 02.11.2016
Сообщения: 41
Grigoriy - уровень боевого духа
По умолчанию Re: Скрипты

Можно как-то через скрипты манипулировать неделями? Начать выставлять определённые недели в определённый момент и чтоб пошёл обычный рандом недель после выполнения определённых условий
Grigoriy вне форума   Ответить с цитированием
Старый 24.05.2020, 10:26   #3160
Лоли Никита
 
Аватар для Лоли Никита
Регистрация: 24.03.2019
Сообщения: 18
Лоли Никита - уровень боевого духа
По умолчанию Re: Скрипты

Подскажите пожалуйста, что не так в скрипте. Если входишь в определенный регион, то он обнуляется, выходит сообщение.После нажатия кнопки 'ОК', начинаетя битва против гномов, 6 объектов исчезают с карты, выходит 1 сообщение, мне дают лазутчиков в количестве 15, диалог появляется, я нажимаю на 1 из ответов, и ни один из них не работает, квест также не появляется в активных. С функцией сообщения с несколькими ответами работаю впервые.


----Битва с гномами(Начальная локация)-----
function MessageBox3()
Trigger(REGION_ENTER_AND_STOP_TRIGGER, 'reg8',nil)
MessageBox("/Maps/SingleMissions/richman2/message_3.txt","OK_1");
end;
Trigger(REGION_ENTER_AND_STOP_TRIGGER, 'reg8','MessageBox3')

function OK_1()
sleep (1);
StartCombat("Raelag", nil, 4, 100, 3, 167, 15, 167, 15, 167, 15, nil);
sleep(5);
RemoveObject('q1');
RemoveObject('q2');
RemoveObject('q3');
RemoveObject('q4');
RemoveObject('q5');
RemoveObject('q6');
AddHeroCreatures("Raelag", 71, 15);
MessageBox("/Maps/SingleMissions/richman2/message_4.txt");
TalkBoxForPlayers(PLAYER_1,nil, nil,'/Maps/SingleMissions/richman2/dialog_1.txt',nil, 0,1,'/Maps/SingleMissions/richman2/zag1.txt', nil,0,'/Maps/SingleMissions/richman2/otvet1.txt','/Maps/SingleMissions/richman2/otvet2.txt','/Maps/SingleMissions/richman2/otvet3.txt','/Maps/SingleMissions/richman2/otvet4.txt')
end;

function MyTalkBoxCallback(player, answer)
if (answer < 1) then
return
end
if (answer == 1) then
MessageBox("/Maps/SingleMissions/richman2/message_5.txt");
elseif (answer == 2) then
MessageBox("/Maps/SingleMissions/richman2/message_5.txt");
elseif (answer == 3) then
MessageBox("/Maps/SingleMissions/richman2/message_6.txt");
elseif (answer == 4) then
MessageBox("/Maps/SingleMissions/richman2/message_7.txt");
StartCombat("Raelag", nil, 2, 121, 5, 121, 5, nil);
end
end;
GetObjectiveState('kv_1',OBJECTIVE_ACTIVE);
Лоли Никита вне форума   Ответить с цитированием
Старый 24.05.2020, 13:15   #3161
Jack_of_shadows
 
Аватар для Jack_of_shadows
Регистрация: 08.09.2013
Сообщения: 480
Jack_of_shadows - уровень боевого духа
Выставка наград
По умолчанию Re: Скрипты

Цитата:
Можно как-то через скрипты манипулировать неделями?
Нет такой возможности.
Цитата:
диалог появляется, я нажимаю на 1 из ответов, и ни один из них не работает
В вашем вызове TalkBoxForPlayers не указано, какая функция должна вызываться при выборе ответа. Проверьте список параметров. В своём мануале я предлагал хак, как сократить количество настраиваемых параметров для неё до минимально возможного.
__________________
РПГ-сценарий для HoMM5: Путь героя
ЧаВо по созданию карт для HoMM5: ЧаВо
Jack_of_shadows вне форума   Ответить с цитированием
Старый Вчера, 19:22   #3162
Ment
 
Аватар для Ment
Регистрация: 30.10.2009
Адрес: Национальный заповедник
Сообщения: 22099
Ment - уровень боевого духа Ment - уровень боевого духа Ment - уровень боевого духа
По умолчанию Re: Скрипты

Я понял, что чего-то не понимаю в работе IsObjectExists.
Код:
function P0_check() while 1 do if IsObjectExists('T1')==false then if IsObjectExists('T2')==false then if IsObjectExists('T3')==false then if IsObjectExists('T4')==false then sleep(5) if (not GetObjectiveState('P0')==OBJECTIVE_COMPLETED) then startThread( P0_change_state ); break; end; end; end; end; end; sleep(1); end; end;
Все четыре города (T1, T2, T3, T4) на карте присутствуют.
Тред радостно проходится по всем if'ам и запускает новую функцию, хотя и не должен. Как так?
__________________
"Which would you choose: a world with pyramids or a world without?"




Ment вне форума   Ответить с цитированием
Старый Вчера, 23:44   #3163
Gerter
 
Аватар для Gerter
Регистрация: 16.07.2012
Адрес: Санкт-Петербург
Сообщения: 638
Gerter - уровень боевого духа Gerter - уровень боевого духа
pegn0ly#9113
По умолчанию Re: Скрипты

консоль не ругается, что значение false не определено? попробуй использовать обычный nil вместо него
__________________
Сценарий для HoMM V:
Сердце ночи v 1.4

Кампания за Академию/ТЭ - в активной разработке

I heard your voice through a photograph
I thought it up it brought up the past
Once you know you can never go back
I’ve got to take it on the otherside
Gerter вне форума   Ответить с цитированием
Старый Сегодня, 00:48   #3164
Ment
 
Аватар для Ment
Регистрация: 30.10.2009
Адрес: Национальный заповедник
Сообщения: 22099
Ment - уровень боевого духа Ment - уровень боевого духа Ment - уровень боевого духа
По умолчанию Re: Скрипты

Не ругалась, да и с конструкцией not IsObjectExists('T1') та же ерунда.
Но попробую, спасибо.
__________________
"Which would you choose: a world with pyramids or a world without?"




Ment вне форума   Ответить с цитированием
Старый Сегодня, 01:05   #3165
Gerter
 
Аватар для Gerter
Регистрация: 16.07.2012
Адрес: Санкт-Петербург
Сообщения: 638
Gerter - уровень боевого духа Gerter - уровень боевого духа
pegn0ly#9113
По умолчанию Re: Скрипты

вообще, запись, которая по дефолту есть в advmap-startup(false = nil), как раз вызывает предупреждение, что значение false неопределено. Логично предположить, что у тебя где-то есть переопределение false. Хотя если с not IsObjectExists('T1') тот же результат, то дело явно не в этом(при попытке воспроизвести подобную ситуацию у себя я получаю адекватный результат, т.е. существование корректно определяется)
__________________
Сценарий для HoMM V:
Сердце ночи v 1.4

Кампания за Академию/ТЭ - в активной разработке

I heard your voice through a photograph
I thought it up it brought up the past
Once you know you can never go back
I’ve got to take it on the otherside
Gerter вне форума   Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Вкл.
Быстрый переход


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


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

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

Авторские права - Copyright © 2002-2020 www.HeroesWorld.ru All rights reserved (new server)


На правах рекламы:123123