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

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

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

Ответ
Страница 242 из 260
 
Опции темы
#3616
Старый 16.05.2022, 16:41
  #3616
^
Jewily
 
Аватар для Jewily
📖
Регистрация: 25.09.2016
Сообщения: 140
Jewily#4267
Регистрация: 25.09.2016
Сообщения: 140
Jewily#4267
По умолчанию
Re: Скрипты

МартаЕщё вопрос. Как отследить результаты боя с нейтральными монстрами?
Мне нужен скрипт для героев 1го игрока, который проверял бы, что такие-то монстры после боя сдохли или живы, и в зависимости от результата позволял бы уничтожить, скажем, REGION_ENTER_AND_STOP_TRIGGER, или оставить.
Это я стражей для телепортов пытаюсь сделать, - и, учитывая что у меня этих телепортов уже немеряно, писать на каждого нейтрала отдельный квест - это слишком игру загрузит.

Если делать внезапный бой, то как мне после 

function guard_Tilgatal_battle_F(heroname)
local player = GetObjectOwner(heroname)
if(player == 1) then
StartCombat(heroname, nil, 3, 80, 12, 158, 5, 142, 12, nil, nil, nil);

зафиксировать результаты боя?

А если эти монстры стоят на карте, я вообще не знаю, куда там скрипт цеплять.
К самим монстрам? Непонятно, что писать.

Я пыталась что-то намутить с COMBAT_RESULTS_TRIGGER, но плохо понимаю, как это работает, и совсем не понимаю, можно ли это применять к монстрам, а не к героям.

Сначала про StartCombat. Если вы напишите StartCombat(heroname, nil, 3, 80, 12, 158, 5, 142, 12, nil, "combatCallback" , nil, nil),
функция combatCallback(heroname,result) получит в себя имя героя и результат. если result  будет nil - герой проиграл, not nil - герой выиграл. Соответственно из этих данных можете состряпать условия.

Теперь по поводу рандомного боя. Вы регистрирует триггер Trigger( COMBAT_RESULTS_TRIGGER, "MyCombatResultsHandler" )
В функцию MyCombatResultsHandler(combatIndex) после любой драки прилетит уникальный индекс сражения - число, в общем-то, которое характеризует конкрентое сражение.
В ней вы проверяете if( GetSavedCombatResult(combatIndex) == COMBAT_RESULT_WIN) -- Это значит, что сражение завершилось чьей-то победой.
Затем проверяем if(GetSavedCombatArmyPlayer(combatIndex,0) == PLAYER_NONE and GetSavedCombatArmyPlayer(combatIndex,1) == 1). GetSavedCombatArmyPlayer(combatIndex,1/0) - функция которая возвращает номер игрока, либо проигравшего либо победившего. В случае когда второй параметр 0 - это проигравший, если передать 1 - будет победитель.
Если все вышеперечисленные проверки прошли - значит вы определили, что с нейтралами дрался ваш первый игрок, и победил.
Теперь о том, как же сделать проверку на конкретных убитых монстров. Для начала им нужно дать скриптовое имя в редакторе, думаю как - знаете.
Затем два пути: один сложный, рассчитаный на большие карты с большим количеством таких вот монстров на проверку, его вам понять будет трудно, хотя он является правильным с точки зрения программирования и логики. Другой - попроще.
Идём по пути "попроще", в целях экономии времени. В начале файла карты делаем переменных n штук, на каждый отряд для проверки , например :
ALIVE_GUARD_1 = not nil
ALIVE_GUARD_2 = not nil
...
ALIVE_GUARD_N = not nil

затем,банально, пишите кучу проверок следующего вида :

if(ALIVE_GUARD_N == not nil) then
  if(IsObjectExists("GUARD_N") == nil) then -- Если прошло, значит ваш страж помер.
    ALIVE_GUARD_N = nil -- Обязательно говорим, чтобы больше не проверялось условие.
    ... -- Делаем тут ваши всякие действия.
  end
end

 

Примерно такая технология. Готовых скриптов на эту тему не имею, так что разбирайтесь
Чтобы не потеряться в именах стражей, можете сделать вместо того списка переменных какую-то удобную таблицу,
если разбираетесь. Если нет - то объяснять, опять же, достаточно долго, и это описано в руководстве.
__________________




Не уходи безропотно во тьму,
Будь яростней пред ночью всех ночей,
Не дай погаснуть свету своему!

Хоть мудрый знает – не осилишь тьму
Во мгле словами не зажжёшь лучей –
Не уходи безропотно во тьму.




                                                                                       




Не уходи безропотно во тьму,
Будь яростней пред ночью всех ночей,
Не дай погаснуть свету своему!

Хоть мудрый знает – не осилишь тьму
Во мгле словами не зажжёшь лучей –
Не уходи безропотно во тьму.




                                                                                       
Jewily вне форума
Ответить с цитированием
#3617
Старый 19.05.2022, 23:41
  #3617
^
Марта
📖
Регистрация: 31.01.2020
Сообщения: 80
Регистрация: 31.01.2020
Сообщения: 80
По умолчанию
Re: Скрипты

Господа, сорри, два дня не была на этом форуме, но я всё ещё здесь, и всё ещё нуждаюсь в помощи).
У меня такой вопрос.

Есть REGION_ENTER_AND_STOP_TRIGGER, который перемещает объекты в зависимости от того, принадлежат ли ближайшие к ним замки первому игроку.
Возможно ли в эту функцию записать несколько замков, или надо на каждый отдельный объект и замок рисовать отдельный регион?

То есть, я пишу:

function Beacon_Tilgatal_F ()
 if GetObjectOwner("Dungeon_1") == 1 then
  SetObjectPosition("Port_Tilgatal", 81, 133, 0);
  sleep(1);
  print("замок Тилгатал наш");
  sleep(1);
else
 SetObjectPosition("Port_Tilgatal", 127, 142, 1);
 sleep(1);
 print("замок Тилгатал не наш");
 sleep(1);
 end;
 end;

Trigger(REGION_ENTER_AND_STOP_TRIGGER, "Beacon_Tilgatal_trigger", "Beacon_Tilgatal_F");

И тут всё в порядке, объект перемещается куда надо.

Но возможно ли к этому же триггеру, в этой же функции, прикрутить другие замки и объекты? Как такое сделать?
То есть, к первому отрывку прикрутить вот этот,


  if GetObjectOwner("Dungeon_2") == 1 then
  SetObjectPosition("Port_Halad", 63, 104, 0);
  sleep(1);
  print("замок Халад наш");
  sleep(1);
else
 SetObjectPosition("Port_Halad", 127, 142, 1);
 sleep(1);
 print("замок Халад не наш");
 sleep(1);

И вот этот?

  if GetObjectOwner("Dungeon_3") == 1 then
  SetObjectPosition("Port_Torost", 104, 105, 0);
  sleep(1);
  print("замок Торост наш");
  sleep(1);
else
 SetObjectPosition("Port_Torost", 127, 142, 1);
 sleep(1);
 print("замок Торост не наш");                                                                                                                                                                                         sleep(1);                                                                                                                                                                                                                                                             
     ЗЫ  Jewily, насилу-то я разобралась с внезапными нападениями, спасибо вам большое. С монстрами на карте - пока не поняла, но сейчас мне хватает и регионов.
Марта вне форума
Ответить с цитированием
#3618
Старый 20.05.2022, 08:22
  #3618
^
Азгалор
 
Аватар для Азгалор
📖
Регистрация: 24.04.2016
Сообщения: 205
Регистрация: 24.04.2016
Сообщения: 205
По умолчанию
Re: Скрипты

Марта, if ( GetObjectOwner("Dungeon_1") == 1 ) and ( GetObjectOwner("Dungeon_2") == 1 ) then 

Для примера

Азгалор вне форума
Ответить с цитированием
#3619
Старый 20.05.2022, 11:55
  #3619
^
Марта
📖
Регистрация: 31.01.2020
Сообщения: 80
Регистрация: 31.01.2020
Сообщения: 80
По умолчанию
Re: Скрипты

Азгалор, нет, это не подходит, скопом замки и объекты прописывать нельзя.
Разные объекты Port связаны с разными замками.
Первый и третий замок могут принадлежать первому игроку, а второй замок - кому-то ещё. 
Мне не нужна проверка на присоединение всех замков разом, - мне, как раз, нужен такой скрипт, чтобы хозяева у замков могли бы быть разными, и при этом менялись бы позиции объектов.

Добавлено через 49 минут
Хотелось бы как-то так:

function Beacon_Tilgatal_F ()
 if (GetObjectOwner("Dungeon_1") == 1) then
  SetObjectPosition("Port_Tilgatal", 81, 133, 0);
  sleep(1);
  print("наш замок Тилгатал");
  sleep(1);

else
if (GetObjectOwner("Dungeon_1") == 2)
 or (GetObjectOwner("Dungeon_1") == 3)
 or (GetObjectOwner("Dungeon_1") == 4)
 or (GetObjectOwner("Dungeon_1") == 5)
 or (GetObjectOwner("Dungeon_1") == 6)
 or (GetObjectOwner("Dungeon_1") == 7)
 or (GetObjectOwner("Dungeon_1") == 8)
 or (GetObjectOwner("Dungeon_1") == 0) then
  SetObjectPosition("Port_Tilgatal", 125, 142, 1);
  sleep(1);
  print("не наш замок Тилгатал");
  sleep(1);

 else
  print("сюда надо как-то прицепить второй замок");
 sleep(1);
 end;
  end;
   end;

   Trigger(REGION_ENTER_AND_STOP_TRIGGER, "Beacon_Tilgatal_trigger", "Beacon_Tilgatal_F");

Только это ни хрена не работает).
Марта вне форума
Ответить с цитированием
#3620
Старый 20.05.2022, 12:07
  #3620
^
Азгалор
 
Аватар для Азгалор
📖
Регистрация: 24.04.2016
Сообщения: 205
Регистрация: 24.04.2016
Сообщения: 205
По умолчанию
Re: Скрипты

Марта, извиняюсь, не доглядел что именно Вам необходимо... Да, конечно можно. К первой функции прикручиваем дополнительные проверки, т.е:

function Beacon_Tilgatal_F ()
 if GetObjectOwner("Dungeon_1") == 1 then
  SetObjectPosition("Port_Tilgatal", 81, 133, 0);
  sleep(1);
  print("замок Тилгатал наш");
  sleep(1);
else
 SetObjectPosition("Port_Tilgatal", 127, 142, 1);
 sleep(1);
 print("замок Тилгатал не наш");
 sleep(1);
 end;
  if GetObjectOwner("Dungeon_2") == 1 then
  SetObjectPosition("Port_Halad", 63, 104, 0);
  sleep(1);
  print("замок Халад наш");
  sleep(1);
else
 SetObjectPosition("Port_Halad", 127, 142, 1);
 sleep(1);
 print("замок Халад не наш");
 sleep(1);
end;
  if GetObjectOwner("Dungeon_3") == 1 then
  SetObjectPosition("Port_Torost", 104, 105, 0);
  sleep(1);
  print("замок Торост наш");
  sleep(1);
else
 SetObjectPosition("Port_Torost", 127, 142, 1);
 sleep(1);
 print("замок Торост не наш");                                                                                                                                                                                         
sleep(1);
end;
end;

 

Мартаif (GetObjectOwner("Dungeon_1") == 2)
 or (GetObjectOwner("Dungeon_1") == 3)
 or (GetObjectOwner("Dungeon_1") == 4)
 or (GetObjectOwner("Dungeon_1") == 5)
 or (GetObjectOwner("Dungeon_1") == 6)
 or (GetObjectOwner("Dungeon_1") == 7)
 or (GetObjectOwner("Dungeon_1") == 8)
 or (GetObjectOwner("Dungeon_1") == 0) then

Эту проверку на принадлежности к игрокам можно сократить до такого(т.к. Вам нужно чтобы только один игрок владел замками):

if (GetObjectOwner("Dungeon_1") ~= 1) then --Если замок не принадлежит первому игроку то тут наши полномочия всё
Азгалор вне форума
Ответить с цитированием
#3621
Старый 20.05.2022, 15:25
  #3621
^
Марта
📖
Регистрация: 31.01.2020
Сообщения: 80
Регистрация: 31.01.2020
Сообщения: 80
По умолчанию
Re: Скрипты

Увы, опять не пашет. Перемещает только первый объект Port_Tilgatal, и в случае когда замок принадлежит первому игроку, и в случае, когда его захватывает враг.
А остальные два объекта не перемещает, и принтов не пишет.

За сокращение спасибо, я так и знала, что что-то такое должно быть вместо моего индийского кода).

Добавлено через 1 час 58 минут
Ессс, вот оно, просветление-то! Вот так - работают все три.

function Beacon_Tilgatal_F ()
 if GetObjectOwner("Dungeon_1") == 1 then
  SetObjectPosition("Port_Tilgatal", 81, 132, 0);
  sleep(1);
  print("замок Тилгатал наш");
  sleep(1);
elseif (GetObjectOwner("Dungeon_1") ~= 1) then
 SetObjectPosition("Port_Tilgatal", 125, 142, 1);
 sleep(1);
 print("замок Тилгатал не наш");
 sleep(1);
 end;

if GetObjectOwner("Dungeon_2") == 1 then
  SetObjectPosition("Port_Halad", 63, 104, 0);
  sleep(1);
  print("замок Халад наш");
  sleep(1);
elseif (GetObjectOwner("Dungeon_2") ~= 1) then
 SetObjectPosition("Port_Halad", 126, 141, 1);
 sleep(1);
 print("замок Халад не наш");
 sleep(1);
end;

if GetObjectOwner("Dungeon_3") == 1 then
  SetObjectPosition("Port_Torost", 104, 105, 0);
  sleep(1);
  print("замок Торост наш");
  sleep(1);
elseif (GetObjectOwner("Dungeon_3") ~= 1) then
 SetObjectPosition("Port_Torost", 126, 143, 1);
 sleep(1);
 print("замок Торост не наш");
sleep(1);
end;
end;

Trigger(REGION_ENTER_AND_STOP_TRIGGER, "Beacon_Tilgatal_trigger", "Beacon_Tilgatal_F");

Спасибо, Азгалор, без вас до меня бы точно не дошло.
Марта вне форума
Ответить с цитированием
#3622
Старый 20.05.2022, 16:29
  #3622
^
Азгалор
 
Аватар для Азгалор
📖
Регистрация: 24.04.2016
Сообщения: 205
Регистрация: 24.04.2016
Сообщения: 205
По умолчанию
Re: Скрипты

Марта, хорошо что у Вас получилось прийти к нужному результату) Хотя странно, ведь мной написанный код работал. Потестировал на карте на существах - телепортировались в разные точки в зависимости от принадлежности городов, и print'ы срабатывали...
Азгалор вне форума
Ответить с цитированием
#3623
Старый 23.05.2022, 21:31
  #3623
^
Марта
📖
Регистрация: 31.01.2020
Сообщения: 80
Регистрация: 31.01.2020
Сообщения: 80
По умолчанию
Re: Скрипты

Поможите, люди добрые, ещё с одним скриптом.
Задумка такая, чтобы сквозь гарнизон изначально мог проезжать только второй игрок, а при определённом условии мог и первый.
Но скрипт не ладится с самого начала.

Если пишешь в MapScript 

SetObjectEnabled("Garnizon_1", nil);
 print("гарнизон отключён");

а потом

function Garrison_1_Block_F()
   SetObjectEnabled("Garnizon_1", true);
     sleep(1);
     print("гарнизон включён");
     sleep(1);
 end;
Trigger(OBJECT_TOUCH_TRIGGER, "proba", "Garrison_1_Block_F");

- то всё нормально.

Но если пишешь:

SetObjectEnabled("Garnizon_1", nil, 1, 3, 4, 5, 6, 7, 8); ---или false, я пробовала
 print("гарнизон отключён");

function Garrison_1_Block_F()
   SetObjectEnabled("Garnizon_1", true, 1);
     sleep(1);
     print("гарнизон включён для первого игрока");
     sleep(1);
 end;
Trigger(OBJECT_TOUCH_TRIGGER, "proba", "Garrison_1_Block_F");

- то гарнизон отключается и для второго игрока тоже, и не включается и для первого.

Как всегда, что я делаю не так?
А конкретно, - как с самого начала отключить гарнизон для всех, кроме второго игрока?
Марта вне форума
Ответить с цитированием
#3624
Старый 23.05.2022, 23:05
  #3624
^
Jewily
 
Аватар для Jewily
📖
Регистрация: 25.09.2016
Сообщения: 140
Jewily#4267
Регистрация: 25.09.2016
Сообщения: 140
Jewily#4267
По умолчанию
Re: Скрипты

МартаА конкретно, - как с самого начала отключить гарнизон для всех, кроме второго игрока?
Добрый вечер. Функция SetObjectEnabled не принимает ничего третьим параметром, то есть сказать какому игроку заблокировать нельзя. Объект можно либо включить, либо выключить. Касаемо вашего скрипта, могу предложить следующее:
-- Делаем одноклеточный регион, на 1 клетку перед гарнизоном
Trigger(REGION_ENTER_WITHOUT_STOP_TRIGGER,"GARRISON_REG","GarrisonCheck")
-- Делаем массив "Запрещенных" игроков
GARRISON_BANNED_PLAYERS = {
2,
-- При необходимости дописываем сюда нужных. 
-- Если вам нужно дописать в скрипте то пишем в нужном месте GARRISON_BANNED_PLAYERS[length(GARRISON_BANNED_PLAYERS)] = "Номер игрока которого блочим"
}
-- Если потребуется убрать из массива игрока, то пишет вот такую функцию(Всё уже есть в библиотеке от RedHeavenHero, лучше велосипеды не писать)
-- Нижеописанная функция удаляет из массива крайне топорно, но вам подойдёт.
-- В месте где нужно удалить пишете GARRISON_BANNED_PLAYERS = arrayShiftByValue(GARRISON_BANNED_PLAYERS,"Номер игрока на удаление")
-- вам вернётся массив уже без указанного игрока, а точнее с nil вместо номера
function arrayShiftByValue(array,value)
  for index,element in array do
    if(element == value) then
      array[index] = nil
    end
  end
  return array
end

function GarrisonCheck(heroname)
  local player = GetObjectOwner(heroname)
  if(contains(GARRISON_BANNED_PLAYERS,player) == not nil) then
    SetObjectEnabled("GARRISON_NAME",nil)
  else
    SetObjectEnabled("GARRISON_NAME",not nil)
  end
end

В простонародье это именуется костылём, но он должен работать без нареканий. При подходе мы просто проверяем игрока и блокируем гарнизон, если это игрок, которому запрещено, а если это не игрок которому запрещено, то снимаем блокировку. 

__________________




Не уходи безропотно во тьму,
Будь яростней пред ночью всех ночей,
Не дай погаснуть свету своему!

Хоть мудрый знает – не осилишь тьму
Во мгле словами не зажжёшь лучей –
Не уходи безропотно во тьму.




                                                                                       




Не уходи безропотно во тьму,
Будь яростней пред ночью всех ночей,
Не дай погаснуть свету своему!

Хоть мудрый знает – не осилишь тьму
Во мгле словами не зажжёшь лучей –
Не уходи безропотно во тьму.




                                                                                       
Jewily вне форума
Ответить с цитированием
#3625
Старый 23.05.2022, 23:44
  #3625
^
Марта
📖
Регистрация: 31.01.2020
Сообщения: 80
Регистрация: 31.01.2020
Сообщения: 80
По умолчанию
Re: Скрипты

Jewily , спасибо большое, я уже, похоже, справилась более простым способом, но теперь у меня другая проблема, - проверить не могу.

Вот скрипт:

SetObjectEnabled("Garnizon_1", nil);
 print("гарнизон отключён");

function Garrison_1_Block_F()
if GetCurrentPlayer() == 2 then
SetObjectEnabled("Garnizon_1", true, 2);
sleep(1);
print("гарнизон включён для второго игрока");
sleep(1);

else
if GetCurrentPlayer() == 1 then
SetObjectEnabled("Garnizon_1", true, 1);
sleep(1);
print("гарнизон включён для первого игрока");
sleep(1);

else
SetObjectEnabled("Garnizon_1", nil);
print("ты не первый и не второй игрок");

end;
end;
end;
Trigger(OBJECT_TOUCH_TRIGGER, "Garnizon_1", "Garrison_1_Block_F");

Если проверить это лично, первым, вторым и третьим игроком, всё работает.
Но беда в том, что я не могу заставить компьютерных игроков попытаться проехать через этот гарнизон.
Какие только приманки я на карту не выкладываю, - они не едут в те ворота, хоть ты тресни.
Я им даже рядом поставила незащищённые города, - но не едут, и всё.

Как заставить этих баранов попытаться туда проехать?
Марта вне форума
Ответить с цитированием
#3626
Старый 23.05.2022, 23:50
  #3626
^
Jewily
 
Аватар для Jewily
📖
Регистрация: 25.09.2016
Сообщения: 140
Jewily#4267
Регистрация: 25.09.2016
Сообщения: 140
Jewily#4267
По умолчанию
Re: Скрипты

Марта
Как заставить этих баранов попытаться туда проехать?
Во-первых спасибо за забавное открытие, я бы не додумался впихнуть в функцию незадокументированный аргумент, ну да ладно.
По поводу ботов я вам вряд ли что-то подскажу конкретное, т.к ещё на практике не пробовал НО
SetAIPlayerAttractor("Имя объекта","Номер игрока-бота",1)

Это задаст компьютеру приоритет на посещение конкретного объекта, можете поэксперементировать.

 

__________________




Не уходи безропотно во тьму,
Будь яростней пред ночью всех ночей,
Не дай погаснуть свету своему!

Хоть мудрый знает – не осилишь тьму
Во мгле словами не зажжёшь лучей –
Не уходи безропотно во тьму.




                                                                                       




Не уходи безропотно во тьму,
Будь яростней пред ночью всех ночей,
Не дай погаснуть свету своему!

Хоть мудрый знает – не осилишь тьму
Во мгле словами не зажжёшь лучей –
Не уходи безропотно во тьму.




                                                                                       
Jewily вне форума
Ответить с цитированием
#3627
Старый 23.05.2022, 23:59
  #3627
^
Марта
📖
Регистрация: 31.01.2020
Сообщения: 80
Регистрация: 31.01.2020
Сообщения: 80
По умолчанию
Re: Скрипты

Jewily, спасибо, - сейчас попробую. Поставлю им что-нибудь и пропишу.

ЗЫ Ваш метод сработал, но вот зараза, - второй-то нормально проезжает, а за ним почему-то и третий, он тоже может проехать.
И только первый игрок не может, пока не выполнит условие (которое я уже успела прописать), потом тоже может.
Ладно, я обошлась тем, что нарисовала вокруг гарнизона триггер, непроходимый для всех игроков, кроме первого и второго.
Но вообще-то, загадко, почему так.

Спасибо вам за помощь.
Кстати, про незадокументированный аргумент, - я ни хрена не поняла, я просто скобочки убрала)).
ЗЫЗЫ Да ни хрена, у меня тоже что-то это всё перестало работать.
Ладно, пришлось сделать через триггер, как вы сказали, но, вроде, обошлась без списка.
Марта вне форума
Ответить с цитированием
#3628
Старый 25.05.2022, 19:26
  #3628
^
}{0TT@6bI4
 
Аватар для }{0TT@6bI4
📖
Регистрация: 05.09.2019
Адрес: Серебряные Города, Аль-Сафир
Сообщения: 1965
Выставка наград
Регистрация: 05.09.2019
Адрес: Серебряные Города, Аль-Сафир
Сообщения: 1965
Выставка наград
По умолчанию
Re: Скрипты

Создайте регион толщиной в три клетки (чтобы с обеих входов подступ к гарнизону был закрыт регионом). Потом заблокируйте регион для всех нужных игроков... Кто может пройти — будет спокойно проходить и забирать гарнизон.
__________________
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
Discord-сервер "Герои 5: S.T.A.L.K.E.R"
Сервер по модификации "Герои 5: S.T.A.L.K.E.R"
_________________
С уважением, }{0TT@6bI4
_________________
Группа картостроителей
Там ответы на вопросы, руководства, гайды и прочее
Discord-сервер "Герои 5: S.T.A.L.K.E.R"
Сервер по модификации "Герои 5: S.T.A.L.K.E.R"
_________________
}{0TT@6bI4 вне форума
Ответить с цитированием
#3629
Старый 25.05.2022, 19:31
  #3629
^
Jewily
 
Аватар для Jewily
📖
Регистрация: 25.09.2016
Сообщения: 140
Jewily#4267
Регистрация: 25.09.2016
Сообщения: 140
Jewily#4267
По умолчанию
Re: Скрипты

}{0TT@6bI4Создайте регион толщиной в три клетки (чтобы с обеих входов подступ к гарнизону был закрыт регионом). Потом заблокируйте регион для всех нужных игроков... Кто может пройти — будет спокойно проходить и забирать гарнизон.
Да, так проще. Хоттабыч и из отпуска выручает.
А то уважаемая Марта пишет ЗЫШКАМи а не новыми сообщениями, я в тред и не захожу
__________________




Не уходи безропотно во тьму,
Будь яростней пред ночью всех ночей,
Не дай погаснуть свету своему!

Хоть мудрый знает – не осилишь тьму
Во мгле словами не зажжёшь лучей –
Не уходи безропотно во тьму.




                                                                                       




Не уходи безропотно во тьму,
Будь яростней пред ночью всех ночей,
Не дай погаснуть свету своему!

Хоть мудрый знает – не осилишь тьму
Во мгле словами не зажжёшь лучей –
Не уходи безропотно во тьму.




                                                                                       
Jewily вне форума
Ответить с цитированием
#3630
Старый 26.05.2022, 17:12
  #3630
^
Марта
📖
Регистрация: 31.01.2020
Сообщения: 80
Регистрация: 31.01.2020
Сообщения: 80
По умолчанию
Re: Скрипты

Хоттабыч, я так и сделала. Но поскольку у меня уже много гарнизонов, и на каждый приходится рисовать по три триггера (а кое-где и с двух сторон), - я боюсь, у меня скоро карта рухнет нафиг от такого количества всего.

Такой вопрос ко всем присутствующим.
Можно ли как-то зацепить условие, скажем, появления текста не за регион, объект или бой, а просто за выполнение SetObjectiveProgress, или за поднятие артефакта, или и за то и за другое?
Уже часов 12 бьюсь, - ничего не выходит.
Какой триггер ни пытаюсь прицепить вот к этому - 

function Laszlo_goodbye_F(heroname)
if GetObjectiveProgress ("Quest_Zubec", 1) == 3 then
sleep(2);
MessageBox ("/Maps/SingleMissions/L1/Parol_Zubec1.txt");
end;
end;

- ну не видит игра, и всё.

Пробовала 

if GetObjectiveState("Quest_Zubec", 1) == 2 and  GetObjectiveProgress ("Quest_Zubec", 1) == 3 then
- не видит

Пробовала артефакт давать - тоже не видит.

Пробовала прописывать OBJECTIVE_STATE_CHANGE_TRIGGER - не видит, хотя, может, я как-то криво прописываю.

Что вообще делать с этой бедой? Неужто придётся очередной регион рисовать для REGION_ENTER_AND_STOP_TRIGGER и как-то загонять туда ГГ?
Марта вне форума
Ответить с цитированием
Ответ
Страница 242 из 260


Опции темы



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


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

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