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

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

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

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

Подскажите пожалуйста, как сделать скрипт, чтобы при смене дня каждый день менялось освещение, к примеру: понедельник - рассвет, вторник утро, среда день, четверг - закат, пятница полночь.
Лоли Никита вне форума
Ответить с цитированием
#3152
Старый 21.05.2020, 20:39
  #3152
^
}{0TT@6bI4
 
Аватар для }{0TT@6bI4
📖
Регистрация: 05.09.2019
Адрес: Серебряные Города, Аль-Сафир
Сообщения: 1578
Выставка наград
Регистрация: 05.09.2019
Адрес: Серебряные Города, Аль-Сафир
Сообщения: 1578
Выставка наград
По умолчанию
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, смотрите пункт "Как динамически менять освещение карты?".
Ознакомится с этим пунктом обязательно; всё, что я не упомянул тут ради экономии места и времени (в связи с кое-какой работой я таперича немного занятой), есть в его руководстве.
__________________
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
_________________
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
_________________
}{0TT@6bI4 вне форума
Ответить с цитированием
#3153
Старый 22.05.2020, 20:58
  #3153
^
Лоли Никита
 
Аватар для Лоли Никита
📖
Регистрация: 24.03.2019
Сообщения: 31
Регистрация: 24.03.2019
Сообщения: 31
По умолчанию
Re: Скрипты

Как сделать скрипт, чтобы при взаимодействии с объектом начинался бой с определенными противниками( в моем случае 3 пачки по 5 латников), но чтобы количество существ зависило от уровня сложности( например на воине 5 латников, а на герое 7), заранее спасибо тому, кто ответит.
И еще кое-что. Я хотел сделать скрипт StartCombat, для боя с орками, но не нашел идентифекаторы орков и 3 грейда всех существ кроме людей. Где найти и посмотреть эти идентифекаторы?
Лоли Никита вне форума
Ответить с цитированием
#3154
Старый 22.05.2020, 21:41
  #3154
^
}{0TT@6bI4
 
Аватар для }{0TT@6bI4
📖
Регистрация: 05.09.2019
Адрес: Серебряные Города, Аль-Сафир
Сообщения: 1578
Выставка наград
Регистрация: 05.09.2019
Адрес: Серебряные Города, Аль-Сафир
Сообщения: 1578
Выставка наград
По умолчанию
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 за уровень сложности.
__________________
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
_________________
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
_________________
}{0TT@6bI4 вне форума
Ответить с цитированием
#3155
Старый 22.05.2020, 22:53
  #3155
^
Лоли Никита
 
Аватар для Лоли Никита
📖
Регистрация: 24.03.2019
Сообщения: 31
Регистрация: 24.03.2019
Сообщения: 31
По умолчанию
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 , она открывает туман войны, и с помощью нее можно открыть часть карты, можно ли с помощью какой-нибудь функции сделать так, чтобы она не открывала, а закрывала туман войны, таким образом не позволяя просматривать герою некоторые места, в которых он уже побывал, и чтоб на миникарте в левом нижнем углу игры тоже не было видно этой части карты?
Лоли Никита вне форума
Ответить с цитированием
#3156
Старый 22.05.2020, 23:20
  #3156
^
}{0TT@6bI4
 
Аватар для }{0TT@6bI4
📖
Регистрация: 05.09.2019
Адрес: Серебряные Города, Аль-Сафир
Сообщения: 1578
Выставка наград
Регистрация: 05.09.2019
Адрес: Серебряные Города, Аль-Сафир
Сообщения: 1578
Выставка наград
По умолчанию
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
__________________
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
_________________
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
_________________
}{0TT@6bI4 вне форума
Ответить с цитированием
#3157
Старый 23.05.2020, 13:56
  #3157
^
Лоли Никита
 
Аватар для Лоли Никита
📖
Регистрация: 24.03.2019
Сообщения: 31
Регистрация: 24.03.2019
Сообщения: 31
По умолчанию
Re: Скрипты

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

Лоли НикитаСпасибо, вроде все работает. А где найти идентифекаторы орды и 3 грейда всех остальных фракций кроме людей?
.../Папка с игрой/data/data.pak => в этом архиве ищи файл types.xml, он вне других папок, прямо в data.pak лежит. Открой блокнотом, когда загпузится, нажми Ctrl + F и ищи DRUID, пока не дойдёшь до строчек с именем существа и его ID, а потом колёсиком мотай вниз.
__________________
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
_________________
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
_________________
}{0TT@6bI4 вне форума
Ответить с цитированием
#3159
Старый 24.05.2020, 01:21
  #3159
^
Grigoriy
 
Аватар для Grigoriy
📖
Регистрация: 02.11.2016
Сообщения: 102
Регистрация: 02.11.2016
Сообщения: 102
По умолчанию
Re: Скрипты

Можно как-то через скрипты манипулировать неделями? Начать выставлять определённые недели в определённый момент и чтоб пошёл обычный рандом недель после выполнения определённых условий
Grigoriy вне форума
Ответить с цитированием
#3160
Старый 24.05.2020, 10:26
  #3160
^
Лоли Никита
 
Аватар для Лоли Никита
📖
Регистрация: 24.03.2019
Сообщения: 31
Регистрация: 24.03.2019
Сообщения: 31
По умолчанию
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 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);
Лоли Никита вне форума
Ответить с цитированием
#3161
Старый 24.05.2020, 13:15
  #3161
^
Jack_of_shadows
 
Аватар для Jack_of_shadows
📖
Регистрация: 08.09.2013
Сообщения: 488
Выставка наград
Регистрация: 08.09.2013
Сообщения: 488
Выставка наград
По умолчанию
Re: Скрипты

Можно как-то через скрипты манипулировать неделями?
Нет такой возможности.
диалог появляется, я нажимаю на 1 из ответов, и ни один из них не работает
В вашем вызове TalkBoxForPlayers не указано, какая функция должна вызываться при выборе ответа. Проверьте список параметров. В своём мануале я предлагал хак, как сократить количество настраиваемых параметров для неё до минимально возможного.
__________________
РПГ-сценарий для HoMM5: Путь героя

ЧаВо по созданию карт для HoMM5: ЧаВо
РПГ-сценарий для HoMM5: Путь героя

ЧаВо по созданию карт для HoMM5: ЧаВо
Jack_of_shadows вне форума
Ответить с цитированием
#3162
Старый 30.05.2020, 19:22
  #3162
^
Ment
 
Аватар для Ment
📖
Регистрация: 30.10.2009
Адрес: Национальный заповедник
Сообщения: 25634
Регистрация: 30.10.2009
Адрес: Национальный заповедник
Сообщения: 25634
По умолчанию
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'ам и запускает новую функцию, хотя и не должен. Как так?
__________________
Времена года прошли
Не оставив часа на плач.
Вспомни их, чтоб победить,
Довольно неудач!





Стикеры GBF в Telegram
Времена года прошли
Не оставив часа на плач.
Вспомни их, чтоб победить,
Довольно неудач!





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

консоль не ругается, что значение false не определено? попробуй использовать обычный nil вместо него
__________________
MCCS v0.3.6 - мультиплеерный мод, добавляющий уникальный контент и механики в игру

Ушел в геймдев.
MCCS v0.3.6 - мультиплеерный мод, добавляющий уникальный контент и механики в игру

Ушел в геймдев.
Gerter вне форума
Ответить с цитированием
#3164
Старый 31.05.2020, 00:48
  #3164
^
Ment
 
Аватар для Ment
📖
Регистрация: 30.10.2009
Адрес: Национальный заповедник
Сообщения: 25634
Регистрация: 30.10.2009
Адрес: Национальный заповедник
Сообщения: 25634
По умолчанию
Re: Скрипты

Не ругалась, да и с конструкцией not IsObjectExists('T1') та же ерунда.
Но попробую, спасибо.
__________________
Времена года прошли
Не оставив часа на плач.
Вспомни их, чтоб победить,
Довольно неудач!





Стикеры GBF в Telegram
Времена года прошли
Не оставив часа на плач.
Вспомни их, чтоб победить,
Довольно неудач!





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

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

Ушел в геймдев.
MCCS v0.3.6 - мультиплеерный мод, добавляющий уникальный контент и механики в игру

Ушел в геймдев.
Gerter вне форума
Ответить с цитированием
Ответ
Страница 211 из 246


Опции темы



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


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

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