эмм.. мб я в чем-то ошибся, я без понятия, но скрипт вдруг перестал работать. он работал до того, как я удалил лишние скрипты, а этот я вообще не трогал.
может, я его все же как-то задел, но вот не пойму, где. выглядит все окей.
Скрытый текст:
он должен смотреть, сколько расстояния (0-155, 155-512, 512-768, 768-1024)
между игроком и одним из двух акторов (с тидами 577 и 578) и принтить цифру.
приоритет ближайшего.
script "hazardsound1" enter
{
while(true)
{
delay(1);
print(d:"GeigerC");
}
}
distanceXY - это копипаста с здумвики, работает и сейчас
function int distanceXY (int tid1, int tid2)
{
int x, y, z, d;
x = GetActorX(tid1) - GetActorX(tid2) >> 16; // Convert fixed point to integer
y = GetActorY(tid1) - GetActorY(tid2) >> 16;
z = GetActorZ(tid1) - GetActorZ(tid2) >> 16;
d = sqrt( x*x + y*y + z*z );
return d;
}
Уверен, что работает?
Во-первых это не XY, а XYZ. Во-вторых, в скобочки бы вычитание заключить.
В-третьих, значения бы получать один раз, а не в каждом ифе 4 раза.
Вопрос касательно производительности.
Можно ли как-нибудь полностью включать и отключать акторы на карте? К примеру, даже если разместить несколько тысяч акторов с кадром TNT1 A -1, то все равно тормоза очень сильные.
Вопрос касательно производительности.
Можно ли как-нибудь полностью включать и отключать акторы на карте? К примеру, даже если разместить несколько тысяч акторов с кадром TNT1 A -1, то все равно тормоза очень сильные.
По поводу отключения я ничего не знаю, да и вряд ли есть такая фича, сам хочу такое..
А ты пробовал писать так? (хотя может это вообще бессмысленно)
TNT1 A -1 {A_SetRenderStyle(0, STYLE_NONE);A_ChangeFlag(NOINTERACTION,TRUE);}
И да, на сколько помню TNT1A0 это прозрачная картинка, а что если использовать NULLA0? NULLA0 кажется не картинка..?
Я еще не пробовал т.к. у меня вроде ничего не тормозит, у меня всего-то актеров около 1-2к на карте, но если это поможет, будет отлично.. я и сам себе такое прописал бы.
Так еще хуже (для теста добавил 35000 пустых акторов на карту, c TNT1A0 выдает около 25fps, с NULLA0 5-10).
alekv:
TNT1 A -1 {A_SetRenderStyle(0, STYLE_NONE);A_ChangeFlag(NOINTERACTION,TRUE);}
Это тоже не помогает.
Если сделать все акторы как SwitchableDecorations и добавить флаг DORMANT, то сразу все тормоза пропадают. Но активировать обратно в этом случае не получается, я так понимаю, акторы просто удаляются.
sanek_47 Ну, в заметках описывается реакция конкретно монстров. А в активации описываются флаги BUMPSPECIAL и USESPECIAL. То есть, включить их все-же можно.
Можно ли как-нибудь полностью включать и отключать акторы на карте? К примеру, даже если разместить несколько тысяч акторов с кадром TNT1 A -1, то все равно тормоза очень сильные.
А скажи-ка ты мне, ты на основании чего акторов активируешь и деактивируешь? Я вот уверен, что лагают не акторы, а проверка видимости.
Даже если они еще не увидели плеера - они все равно считаются. В некоторых случаях и уборка трупов ведь помогает.
Чувак, актор который никуда не двигается и ничего не отображает (особенно если +INVISIBLE), потребляет ноль ресурсов. Просто ноль. А вот его проверка на видимость очень даже может лагать.
Должны. Попробуй. Но имей в виду что "на дистанции" это тоже лаг. Прикинь 32к акторов будут проверять дистанцию до игрока.
А учитывая, что обычно это совмещено с A_Look, то это опять же проверка видимости + дистанция, это ЛАГИ.
Я извиняюсь, но зачем? В нормальной карте должны быть односторонние стены, которые отсекают огромные количества акторов сходу.
Кстати, попробуй +NOINTERACTION.