Welcome to U.A.C. [O.S.A.]
login / register
Status: Guest
Архивы форума | iddqd.ru
Wolf 3D
ПравилаПравила ПоискПоиск
18+
Тема для новичков. Вопросы по маппингу/моддингу - любые! Пред.  1, 2, 3 ... 104, 105, 106 ... 198, 199, 200  След.
   Список разделов - Флуд и устаревшие темы - Тема для новичков. Вопросы по маппингу/моддингу - любые!Ответить
АвторСообщение
MyNameIs
= 1st Lieutenant =
Next rank: - Captain - after 64 points
2026

Doom Rate: 2.05

Posts quality: +876
Ссылка на пост №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 1
ZZYZX
- UAC Commissar -
Next rank: = UAC Commissar = after 16 pointsМодератор форума
6284

Doom Rate: 1.65

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

Рейтинг сообщения: +2, отметил(и): alekv, MyNameIs
2 2 1
MyNameIs
= 1st Lieutenant =
Next rank: - Captain - after 64 points
2026

Doom Rate: 2.05

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


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

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

Doom Rate: 1.87

Posts quality: +948
Ссылка на пост №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
Герр Смертоносец
Chief Petty Officer
Next rank: Chief Petty Officer after 63 points
877

Doom Rate: 1.29

Posts quality: +785
Ссылка на пост №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
2
aivar242
- 2nd Lieutenant -
Next rank: = 2nd Lieutenant = after 36 points
1404

Doom Rate: 1.64

Posts quality: -18
Ссылка на пост №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 18 points
272

Doom Rate: 2.16

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

Doom Rate: 1.87

Posts quality: +948
Ссылка на пост №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 18 points
272

Doom Rate: 2.16

Posts quality: +64
Ссылка на пост №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
- Sergeant -
Next rank: = Sergeant = after 32 points
308

Doom Rate: 2

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

А так?
1 1
sanek_47
= Master Corporal =
Next rank: - Sergeant - after 18 points
272

Doom Rate: 2.16

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

Doom Rate: 2

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

Doom Rate: 1.65

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

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

Doom Rate: 2

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

Даже если они еще не увидели плеера - они все равно считаются. В некоторых случаях и уборка трупов ведь помогает.
1 1
ZZYZX
- UAC Commissar -
Next rank: = UAC Commissar = after 16 pointsМодератор форума
6284

Doom Rate: 1.65

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

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

Doom Rate: 2

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

Doom Rate: 1.65

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

Doom Rate: 2

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

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

Doom Rate: 2.16

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

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


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


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

1
ZZYZX
- UAC Commissar -
Next rank: = UAC Commissar = after 16 pointsМодератор форума
6284

Doom Rate: 1.65

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