Welcome to U.A.C. [O.S.A.]
login / register
Status: Guest
Архивы форума | iddqd.ru
Wolf 3D
ПравилаПравила ПоискПоиск
18+
Тема для новичков. Вопросы по маппингу/моддингу - любые! Пред.  1, 2, 3 ... 104, 105, 106 ... 126, 127, 128  След.
   Список разделов - Местечко мапперов и моддеров - Тема для новичков. Вопросы по маппингу/моддингу - любые!Ответить
АвторСообщение
MyNameIs
- Warrant Officer -
Next rank: = Warrant Officer = after 94 points
1046

Doom Rate: 2.01

Posts quality: +303
Ссылка на пост №2081 Отправлено: 17.03.17 10:49:21
эмм.. мб я в чем-то ошибся, я без понятия, но скрипт вдруг перестал работать. он работал до того, как я удалил лишние скрипты, а этот я вообще не трогал.
может, я его все же как-то задел, но вот не пойму, где. выглядит все окей.

Скрытый текст:



он должен смотреть, сколько расстояния (0-155, 155-512, 512-768, 768-1024)
между игроком и одним из двух акторов (с тидами 577 и 578) и принтить цифру.
приоритет ближайшего.

int GeigerC = 0;

script "hazardsound" enter { while(true) { delay(1); if ( ((distanceXY(0,577))>0)&((distanceXY(0,577))<155) | ((distanceXY(0,578))>0)&((distanceXY(0,578))<155) ) GeigerC = 4; else { if ( ((distanceXY(0,577))>155)&((distanceXY(0,577))<512) | ((distanceXY(0,578))>155)&((distanceXY(0,578))<512) ) GeigerC = 3; else { if ( ((distanceXY(0,577))>512)&((distanceXY(0,577))<768) | ((distanceXY(0,578))>512)&((distanceXY(0,578))<768) ) GeigerC = 2; else { if ( ((distanceXY(0,577))>768)&((distanceXY(0,577))<1024) | ((distanceXY(0,578))>768)&((distanceXY(0,578))<1024) ) GeigerC = 1; else { GeigerC = 0; } } } } } }


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; }


и букв "C" кириллицей тоже нет, чтозадела

1 1
ZZYZX
Lieutenant Colonel
Next rank: - Colonel - after 234 pointsМодератор форума
3806

Doom Rate: 1.8

Posts quality: +646
Ссылка на пост №2082 Отправлено: 17.03.17 11:25:34
Уверен, что работает?
Во-первых это не XY, а XYZ. Во-вторых, в скобочки бы вычитание заключить.
В-третьих, значения бы получать один раз, а не в каждом ифе 4 раза.

Рейтинг сообщения: +2, отметил(и): alekv, MyNameIs
2 2 1
MyNameIs
- Warrant Officer -
Next rank: = Warrant Officer = after 94 points
1046

Doom Rate: 2.01

Posts quality: +303
Ссылка на пост №2083 Отправлено: 17.03.17 11:52:17
ZZYZX
Ну, я пробовал вывести принтом расстояние от игрока до актора в отдельном скрипте, правду показывал. Должен работать.


ZZYZX :
а не в каждом ифе 4 раза

А вот такое, честно, не знаю, как сделать. Пытался, не понял, пошел тупо в лоб. :/
1 1
alekv
= Major =
Next rank: Lieutenant Colonel after 194 pointsМодератор форума
3096

Doom Rate: 1.96

Posts quality: +269
Ссылка на пост №2084 Отправлено: 17.03.17 12:31:55
MyNameIs
Если надо 3 координаты проверять, т.е. Z включительно используй ту что из вики дистанцию

Попробуй это:
Скрытый текст:

function int distance2D (int tid1, int tid2)// Проверяет только X и Y! { int x, y, d; x = ((GetActorX(tid1) - GetActorX(tid2)) >> 16); y = ((GetActorY(tid1) - GetActorY(tid2)) >> 16); d = sqrt( x*x + y*y); return d; } int GeigerC = 0; script "Test" ENTER { while (TRUE) { PrintBold(s:"GeigerC = ",d:GeigerC, s:"\nDistance2d to 557 tid = ", d:Distance2D(0, 557), s:"\nDistance2d to 558 tid = ", d:Distance2D(0, 558)); Delay(1); } } script "hazardsound" enter { while(true) { int GetDist = Distance2D(0, 557); int GetDist2 = Distance2D(0, 558); if((GetDist > 0 && GetDist < 155) | (GetDist2 > 0 && GetDist2 < 155)) GeigerC = 4; else if( ( (GetDist > 155) && (GetDist < 512) ) | ( (GetDist2 > 155) && (GetDist2 < 512) ) ) GeigerC = 3; else if( ( (GetDist > 512) && (GetDist < 768) ) | ( (GetDist2 > 512) && (GetDist2 < 768) ) ) GeigerC = 2; else if( ( (GetDist > 768) && (GetDist < 1024) ) | ( (GetDist2 > 768) && (GetDist2 < 1024) ) ) GeigerC = 1; if((GetDist > 1024) | (GetDist2 > 1024)) GeigerC = 0; Delay(1); } }

p.s. а у тебя тиды 557 и 558 как далеко друг от друга? Или они вообще вместе?


Рейтинг сообщения: +1, отметил(и): MyNameIs
1 3 1
Герр Смертоносец
- Master Corporal -
Next rank: = Master Corporal = after 3 points
237

Doom Rate: 1.5

Posts quality: +31
Ссылка на пост №2085 Отправлено: 17.03.17 12:37:36
MyNameIs :
он работал до того, как я удалил лишние скрипты, а этот я вообще не трогал.

Что удалил? Сохраняешь ли резервные копии? Что пишет отладчик?

MyNameIs :
А вот такое, честно, не знаю, как сделать. Пытался, не понял, пошел тупо в лоб. :/

Азохен вей, в начале скрипта ставишь две переменные int A1 = (distanceXY(0,577); int A2 = (distanceXY(0,578); и дальше в ифах работаешь с A1 и A2.

Алсо, эта байда устарела, лучше мерять длину через VectorLength.

Рейтинг сообщения: +2, отметил(и): alekv, MyNameIs
aivar242
= Warrant Officer =
Next rank: - 2nd Lieutenant - after 66 points
1224

Doom Rate: 1.63

Posts quality: -1
Ссылка на пост №2086 Отправлено: 17.03.17 16:51:25
cybermind :
Один из способов: DEUTEX.EXE -merge "pwad.wad"

А в простом редакторе вадов это нельзя сделать?

Попробовал запустить этот Deutex на Win 10 х64. Винда его не видит и отказывается запускать. Очень древний Dos софт.
sanek_47
= Master Corporal =
Next rank: - Sergeant - after 24 points
266

Doom Rate: 2.16

Posts quality: +58
Ссылка на пост №2087 Отправлено: 20.03.17 13:39:15
Вопрос касательно производительности.
Можно ли как-нибудь полностью включать и отключать акторы на карте? К примеру, даже если разместить несколько тысяч акторов с кадром TNT1 A -1, то все равно тормоза очень сильные.
1
alekv
= Major =
Next rank: Lieutenant Colonel after 194 pointsМодератор форума
3096

Doom Rate: 1.96

Posts quality: +269
Ссылка на пост №2088 Отправлено: 20.03.17 13:51:07
sanek_47 :
Вопрос касательно производительности.
Можно ли как-нибудь полностью включать и отключать акторы на карте? К примеру, даже если разместить несколько тысяч акторов с кадром TNT1 A -1, то все равно тормоза очень сильные.

По поводу отключения я ничего не знаю, да и вряд ли есть такая фича, сам хочу такое..
А ты пробовал писать так? (хотя может это вообще бессмысленно)
TNT1 A -1 {A_SetRenderStyle(0, STYLE_NONE);A_ChangeFlag(NOINTERACTION,TRUE);}

И да, на сколько помню TNT1A0 это прозрачная картинка, а что если использовать NULLA0? NULLA0 кажется не картинка..?

Я еще не пробовал т.к. у меня вроде ничего не тормозит, у меня всего-то актеров около 1-2к на карте, но если это поможет, будет отлично.. я и сам себе такое прописал бы.
1 3 1
sanek_47
= Master Corporal =
Next rank: - Sergeant - after 24 points
266

Doom Rate: 2.16

Posts quality: +58
Ссылка на пост №2089 Отправлено: 20.03.17 14:08:00
alekv :
а что если использовать NULLA0?

Так еще хуже (для теста добавил 35000 пустых акторов на карту, c TNT1A0 выдает около 25fps, с NULLA0 5-10).
alekv :
TNT1 A -1 {A_SetRenderStyle(0, STYLE_NONE);A_ChangeFlag(NOINTERACTION,TRUE);}

Это тоже не помогает.

Если сделать все акторы как SwitchableDecorations и добавить флаг DORMANT, то сразу все тормоза пропадают. Но активировать обратно в этом случае не получается, я так понимаю, акторы просто удаляются.
1
Infernal_KoT
= Corporal =
Next rank: - Lance Corporal - after 8 points
122

Doom Rate: 1.34

Posts quality: +29
Ссылка на пост №2090 Отправлено: 20.03.17 15:08:14
sanek_47 :
активировать обратно в этом случае не получается

А так?
sanek_47
= Master Corporal =
Next rank: - Sergeant - after 24 points
266

Doom Rate: 2.16

Posts quality: +58
Ссылка на пост №2091 Отправлено: 20.03.17 15:15:20
Infernal_KoT :
А так?
Я так и делал. Если деактивировать актор, у которого нет стейта inactive, то тормоза пропадают, но на Thing_Activate он потом не реагирует.
1
Infernal_KoT
= Corporal =
Next rank: - Lance Corporal - after 8 points
122

Doom Rate: 1.34

Posts quality: +29
Ссылка на пост №2092 Отправлено: 20.03.17 15:22:07
sanek_47
Ну, в заметках описывается реакция конкретно монстров. А в активации описываются флаги BUMPSPECIAL и USESPECIAL. То есть, включить их все-же можно.
ZZYZX
Lieutenant Colonel
Next rank: - Colonel - after 234 pointsМодератор форума
3806

Doom Rate: 1.8

Posts quality: +646
Ссылка на пост №2093 Отправлено: 20.03.17 15:27:32
sanek_47 :
Можно ли как-нибудь полностью включать и отключать акторы на карте? К примеру, даже если разместить несколько тысяч акторов с кадром TNT1 A -1, то все равно тормоза очень сильные.

А скажи-ка ты мне, ты на основании чего акторов активируешь и деактивируешь? Я вот уверен, что лагают не акторы, а проверка видимости.
2 2 1
Infernal_KoT
= Corporal =
Next rank: - Lance Corporal - after 8 points
122

Doom Rate: 1.34

Posts quality: +29
Ссылка на пост №2094 Отправлено: 20.03.17 15:37:53
ZZYZX
Так ведь
sanek_47 :
несколько тысяч акторов

Даже если они еще не увидели плеера - они все равно считаются. В некоторых случаях и уборка трупов ведь помогает.
ZZYZX
Lieutenant Colonel
Next rank: - Colonel - after 234 pointsМодератор форума
3806

Doom Rate: 1.8

Posts quality: +646
Ссылка на пост №2095 Отправлено: 20.03.17 15:39:32
Infernal_KoT :
Даже если они еще не увидели плеера - они все равно считаются. В некоторых случаях и уборка трупов ведь помогает.

Чувак, актор который никуда не двигается и ничего не отображает (особенно если +INVISIBLE), потребляет ноль ресурсов. Просто ноль. А вот его проверка на видимость очень даже может лагать.
2 2 1
Infernal_KoT
= Corporal =
Next rank: - Lance Corporal - after 8 points
122

Doom Rate: 1.34

Posts quality: +29
Ссылка на пост №2096 Отправлено: 20.03.17 15:59:02
ZZYZX
Т.е. если я в том-же брутале вместо того, чтобы удалять трупы и кровь fadeout'ом, буду прятать их в инвиз на дистанции - лаги пройдут?
ZZYZX
Lieutenant Colonel
Next rank: - Colonel - after 234 pointsМодератор форума
3806

Doom Rate: 1.8

Posts quality: +646
Ссылка на пост №2097 Отправлено: 20.03.17 16:07:28
Должны. Попробуй. Но имей в виду что "на дистанции" это тоже лаг. Прикинь 32к акторов будут проверять дистанцию до игрока.
А учитывая, что обычно это совмещено с A_Look, то это опять же проверка видимости + дистанция, это ЛАГИ.
2 2 1
Infernal_KoT
= Corporal =
Next rank: - Lance Corporal - after 8 points
122

Doom Rate: 1.34

Posts quality: +29
Ссылка на пост №2098 Отправлено: 20.03.17 16:30:45
ZZYZX :
Прикинь 32к акторов будут проверять дистанцию до игрока

Угу. Только A_look не создаёт проблем. А в брутале в спавнах проставлены чексайты. Уберу, да погоняю hr2, там оно и глючило недетски.
sanek_47
= Master Corporal =
Next rank: - Sergeant - after 24 points
266

Doom Rate: 2.16

Posts quality: +58
Ссылка на пост №2099 Отправлено: 20.03.17 16:42:05
ZZYZX :
А скажи-ка ты мне, ты на основании чего акторов активируешь и деактивируешь? Я вот уверен, что лагают не акторы, а проверка видимости.

В том то и дело, что нет.
Вот код актора:
Скрытый текст:


ACTOR TestThing 20609
{
states
{
spawn:
TNT1 A -1
stop
}}


Расположил около 35к этих акторов в пустой комнате, вот что в итоге получилось:
Скрытый текст:

1
ZZYZX
Lieutenant Colonel
Next rank: - Colonel - after 234 pointsМодератор форума
3806

Doom Rate: 1.8

Posts quality: +646
Ссылка на пост №2100 Отправлено: 20.03.17 16:54:31
Я извиняюсь, но зачем? В нормальной карте должны быть односторонние стены, которые отсекают огромные количества акторов сходу.
Кстати, попробуй +NOINTERACTION.
2 2 1
Страница 105 из 128Перейти наверх Пред.  1, 2, 3 ... 104, 105, 106 ... 126, 127, 128  След.
   Список разделов - Местечко мапперов и моддеров - Тема для новичков. Вопросы по маппингу/моддингу - любые!