Форум HeroesWorld-а - Показать сообщение отдельно - Скрипты для начинающих
Показать сообщение отдельно
#180
Старый 11.05.2018, 06:08
  #180
^
zahar0z
 
Аватар для zahar0z
📖
Регистрация: 09.06.2017
Сообщения: 588
Регистрация: 09.06.2017
Сообщения: 588
По умолчанию
Re: Скрипты для начинающих

И снова всем доброго времени суток, и снова я с вопросами.

Написал вот такое.
function capt_alt_dw (prevowner, newowner, hero, dwell )
alt_dw_x,alt_dw_y,alt_dw_fl = GetObjectPosition(dwell);
QuestionBox("текст c вопросом бла бла бла", "add_alt_dw", nil);
end;

function add_alt_dw ()
for i, pix_dw in allpix_dw do
pix_dw_x,pix_dw_y,pix_dw_fl = GetObjectPosition(pix_dw);
if pix_dw_x == alt_dw_x and
pix_dw_y == alt_dw_y and
pix_dw_fl == alt_dw_fl then
sleep(1);
ReplaceDwelling(pix_dw, TOWN_ACADEMY, 991 );
end;
end;
end;


allpix_dw = GetObjectNamesByType("BUILDING_FAIRIE_TREE");
for i, pix_dw in allpix_dw do
Trigger(OBJECT_CAPTURE_TRIGGER, pix_dw, "capt_alt_dw" );
end;


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

Вся проблема была в том, что команда QuestionBox ссылается на новую функцию, в которой значение "dwell" из функции "capt_alt_dw" теряется, поэтому игре невозможно было задать, какой именно двеллинг перестраивать в этот момент. У меня это пока решено через сравнивание местоположения объектов, но, может это можно сделать как-то адекватнее и проще?

И самый главный вопрос, из за чего этот скрипт не работает на оригинальных мультиплеерных картах в мультиплеере? Исполнение скрипта прописано в advmap-startup.lua. На тех же оригинальных мультиплеерных картах, в сингле, скрипт работает. Так же он работает и на тестовой мультиплеерной карте сделанной мной, правда для этого его нужно прописать в саму карту. Но на оригинальных в мультиплеере ни в какую. Кто нибудь знает в чём причина этого и как это исправить?

Кроме того, есть другой маленький баг, когда герой захватывает двеллинг, сразу выскакивает окно найма, а вопрос о перестройке появляется только после того, как герой из этого окна выйдет. Таким образом, в случае с перестройкой, герой получает возможность нанять прирост и из оригинального строения и из альтернативного, ии собственно так и делает. Может у кого есть идеи как решить эту проблему? "Выключать" строения до касания игрока тоже не вариант, т.к. в таком случае ии игнорирует эти строения.


И ещё такой вопрос, (наверное ещё более нубский чем остальные, прошу понять простить) вообще все эти скрипты, сильно ли грузят
игру? И зависит ли это как то от длинны названий задаваемых значений, т.е. стоит ли задаваемые мной названия делать максимально короткими или это вообще не имеет смысла?

Как обычно, заранее благодарю за помощь.
zahar0z вне форума
Ответить с цитированием