Welcome to U.A.C. [O.S.A.]
login / register 
Status: Guest
Архивы форума | iddqd.ru
Wolf 3D
ПравилаПравила ПоискПоиск
18+
Тема для новичков. Вопросы по маппингу/моддингу - любые! Пред.  1, 2, 3 ... 56, 57, 58 ... 198, 199, 200  След.
   Список разделов - Флуд и устаревшие темы - Тема для новичков. Вопросы по маппингу/моддингу - любые!Ответить
АвторСообщение
ZZYZX
- UAC Commissar -
Next rank: = UAC Commissar = after 16 pointsМодератор форума
6284

Doom Rate: 1.65

Posts quality: +1631
Ссылка на пост №1121 Отправлено: 08.08.16 09:10:33
Варп работает на активаторе. А тид это тид относительно которого двигать надо. Зачем это сделано я не знаю. Вероятно разработчики дословно скопипастили функционал A_Warp из декора, где он именно так и работает.
SetActivator(Camera_TID);
Warp(0, ...);
2 2 1
alekv
- Colonel -
Next rank: = Colonel = after 272 pointsМодератор форума
4168

Doom Rate: 1.87

Posts quality: +949
Ссылка на пост №1122 Отправлено: 08.08.16 14:27:38
ZZYZX
Спасибо, да, камера стала хоть как-то реагировать, но она не следит за игроком вообще
Я написал так:
script "camF" (void) {
SetActivator(Camera_TID);
while(true)
        {
		Warp(AAPTR_PLAYER1,20.0,40.0,20.0+H_V,0,WARPF_WARPINTERPOLATION);
		Delay(1);
		}
}

Камера становится на нужные мне координаты, но не следит, постоянно стоит на месте, какие флаги я только не ставил..
Что не так сделал?

пс, скрипт camF запускается скриптом ENTER.. может в этом дело.. если сделать запуск скрипта из камеры, может решит проблему.. буду пробовать
В общем и через камеру пробовал скрипт запускать... не следит она за игроком, причем пробовал и A_Warp тоже, скопипастив код из A_Warp что бы наверняка! в вики код работает, т.е. объект следит за врагом.. у меня же нет. в чем беда хз.
1 3 1
ZZYZX
- UAC Commissar -
Next rank: = UAC Commissar = after 16 pointsМодератор форума
6284

Doom Rate: 1.65

Posts quality: +1631
Ссылка на пост №1123 Отправлено: 08.08.16 16:25:47
Координаты игрока ты откуда берёшь, за которыми следить?
2 2 1
alekv
- Colonel -
Next rank: = Colonel = after 272 pointsМодератор форума
4168

Doom Rate: 1.87

Posts quality: +949
Ссылка на пост №1124 Отправлено: 08.08.16 16:52:11
ZZYZX:
Координаты игрока ты откуда берёшь, за которыми следить?

Да как бы и так тоже не работает
Script 55 (void){ //запускает thing самеры
Int camera_TID = 1000;
Thing_ChangeTID(0,camera_TID );
SetActivator(0,AAPTR_PLAYER1);
while(true)
        {
      Warp(0,GetActorX(0)+20.0,GetActorY(0)+40.0,GetActorZ(0)+20.0+H_V,0,WARPF_WARPINTERPOLATION);
      Delay(1);
      }
}


decorate:
Actor CamF 15583
{+NOINTERACTION
States{
Spawn: TNT1 A -1 ACS_Execute(55,0)
}
}

Я уж и не знаю есть ли смысл возиться с этим варп..
Причем что сейчас что в прошлом скрипте не зависимо откуда я беру координаты, если игрока куда-то телепортировать средствами SetActorPosition, камера обновляет свое местоположение.. но все равно не следит, только обновляет.

Может WARP не рассчитан на камеру? т.е. варпом можно двигать что угодно, но кроме камеры или как?..
1 3 1
ZZYZX
- UAC Commissar -
Next rank: = UAC Commissar = after 16 pointsМодератор форума
6284

Doom Rate: 1.65

Posts quality: +1631
Ссылка на пост №1125 Отправлено: 08.08.16 17:40:17
Что такое 20, 40, 20?
Что значит следит? Тебе угол править? Так ChangeActorAngle VectorAngle.
2 2 1
alekv
- Colonel -
Next rank: = Colonel = after 272 pointsМодератор форума
4168

Doom Rate: 1.87

Posts quality: +949
Ссылка на пост №1126 Отправлено: 08.08.16 18:07:50
ZZYZX:
Что такое 20, 40, 20?

GetActorX(0) +20.0 //т.е. это координаты игрока + еще 20маппикселей, так же и с 40.0..
ZZYZX:
Что значит следит? Тебе угол править? Так ChangeActorAngle VectorAngle.

Следит, значит координаты игрока по X сместились к примеру на право, камера тоже смещается на право.. блин ну все просто же
вот мне надо 100% аналог:
While(!SetActorPosition(Camera_TID, GetActorX(Player_TID), GetActorY(Camera_TID), GetActorZ(Player_TID)+20.0,FALSE))

В этой строчке кода камера просто двигается вместе с игроком по X и Z, влево, или вправо или вверх.. Y не меняется.
Этого я и пытаюсь добиться только варп функцией.
1 3 1
ZZYZX
- UAC Commissar -
Next rank: = UAC Commissar = after 16 pointsМодератор форума
6284

Doom Rate: 1.65

Posts quality: +1631
Ссылка на пост №1127 Отправлено: 08.08.16 18:13:08
alekv:
GetActorX(0) +20.0 //т.е. это координаты игрока + еще 20маппикселей, так же и с 40.0..

С чего ты это взял? У тебя тэг 0 это камера. Потому что активатор.
2 2 1
alekv
- Colonel -
Next rank: = Colonel = after 272 pointsМодератор форума
4168

Doom Rate: 1.87

Posts quality: +949
Ссылка на пост №1128 Отправлено: 08.08.16 18:33:17
ZZYZX:
С чего ты это взял? У тебя тэг 0 это камера. Потому что активатор.

я и GetActorX(AAPTR_PLAYER1) +20.0 писал, результат тот же
1 3 1
ZZYZX
- UAC Commissar -
Next rank: = UAC Commissar = after 16 pointsМодератор форума
6284

Doom Rate: 1.65

Posts quality: +1631
Ссылка на пост №1129 Отправлено: 08.08.16 20:00:36
Он так не умеет. AAPTR, в смысле. Только TID.
2 2 1
alekv
- Colonel -
Next rank: = Colonel = after 272 pointsМодератор форума
4168

Doom Rate: 1.87

Posts quality: +949
Ссылка на пост №1130 Отправлено: 08.08.16 23:14:59
Ну вот же в коде написано смена активатора на плеера
Script 55 (void){ //запускает thing самеры 
Int camera_TID = 1000; //тид камеры
Thing_ChangeTID(0,camera_TID ); //меняем камере тид на 1000
SetActivator(0,AAPTR_PLAYER1); //ставим активатора игрока
while(true) 
        { 
      Warp(0,GetActorX(0)+20.0,GetActorY(0)+40.0,GetActorZ(0)+20.0+H_V,0,WARPF_WARPINTERPOLATION);
      Delay(1); 
      } 
}

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

Doom Rate: 1.65

Posts quality: +1631
Ссылка на пост №1131 Отправлено: 09.08.16 11:09:56
Блин. Ну что ты за ересь пишешь. Ты хоть пробовал остановиться и подумать, как оно будет выполняться?
Ну вот зачем ты опять игрока варпаешь? Такое ощущение, что выключив мозг правил строки. Извините. Регулярно просто встречаюсь с таким явлением.

script 55 (void) // запускать именем плеера. на всякий случай.
{
  int player_TID = ActivatorTID();
  if (player_TID == 0) player_TID = UniqueTID();
  Thing_ChangeTID(0, player_TID);
  SetActivator(1000); // camera_TID
  while (true)
  {
    Warp(0, GetActorX(player_TID)+20.0, GetActorY(player_TID)+40.0, GetActorZ(player_TID)+20.0+H_V, 0, WARPF_WARPINTERPOLATION|WARPF_ABSOLUTEPOSITION|WARPF_NOCHECKPOSITION);
    int dx = GetActorX(player_TID)-GetActorX(0);
    int dy = GetActorY(player_TID)-GetActorY(0);
    int dz = GetActorZ(player_TID)-GetActorZ(0);
    ChangeActorAngle(0, VectorAngle(dx, dy), true);
    ChangeActorPitch(0, VectorAngle(VectorLength(dx, dy), -dz), true);
    Delay(1);
  }
}


(если камера отворачивается в другую сторону от игрока, то прикрути к VectorAngle +0.5 или +0.25, в общем до полного совпадения, да)
2 2 1
alekv
- Colonel -
Next rank: = Colonel = after 272 pointsМодератор форума
4168

Doom Rate: 1.87

Posts quality: +949
Ссылка на пост №1132 Отправлено: 09.08.16 20:40:22
ZZYZX
эх, я наверное не так объяснял =)
То что ты написал, да это слежение т.е. камера всегда направлена на объект.. у меня так камера в магазине работает, но я имел ввиду именно вот это:
script 55 ENTER{
ChangeCamera(1000, 0, 0);
while(true){
        While(!SetActorPosition(1000,GetActorX(0),GetActorY(0),GetActorZ(0),FALSE))
	         {
                 delay(1);
                 }
delay(1);}
}

т.е. просто добавь этот скрипт, поставь камеру не далеко от игрока и запусти.. Камера двигается за игроком, как бы следит(это я мб не понятно написал просто..)
То что ты написал, камера стоит на месте и меняет свой угол, но местоположение не меняет, а надо что бы именно меняло местоположение к примеру по X координате, т.е. работала как аналог SetActorPosition если это возможно, у меня не получилось так сделать.
1 3 1
ZZYZX
- UAC Commissar -
Next rank: = UAC Commissar = after 16 pointsМодератор форума
6284

Doom Rate: 1.65

Posts quality: +1631
Ссылка на пост №1133 Отправлено: 09.08.16 22:06:54
Моя должна двигаться за игроком и наводиться на него.

Попробуй добавить |WARPF_ABSOLUTEPOSITION|WARPF_NOCHECKPOSITION.
Я забыл, что при варпе недостаточно просто указать координаты, нужно ещё уточнить, что это именно координаты, а не оффсет к текущим.

Рейтинг сообщения: +1, отметил(и): alekv
2 2 1
alekv
- Colonel -
Next rank: = Colonel = after 272 pointsМодератор форума
4168

Doom Rate: 1.87

Posts quality: +949
Ссылка на пост №1134 Отправлено: 10.08.16 00:25:23
ZZYZX:
Попробуй добавить |WARPF_ABSOLUTEPOSITION|WARPF_NOCHECKPOSITION.
Я забыл, что при варпе недостаточно просто указать координаты, нужно ещё уточнить, что это именно координаты, а не оффсет к текущим.

Спасибо!!! Видимо в этом и была проблема, WARPF_ABSOLUTEPOSITION этот флаг я не добавлял, а именно с ним камера начитает двигаться.. без него стоит на месте.

Только вот камера стала еще хуже работать, т.е. SetActorPosition работал лучше для камеры, с варпом камера еще сильнее отстает, я бы сказал что даже видно как дергается.. пробовал комбинировать флажки, как только не пробовал, шустрее не стало.
Но так же есть еще 1 фигня, понятия не имею почему так, примерно 1-2 мин бегания с такой варп камерой, видно что она сильно отстает, но после 1-2 мин, начинает работать просто идеально!!! Что ее заставляет лагать в начале понятия не имею..
Убил процессы связанные с нвидиа експирианс, стало работать хорошо.. что за чудеса. Почему же тогда функции SetActorPosition плевать что там в процессах.. =(
1 3 1
ZZYZX
- UAC Commissar -
Next rank: = UAC Commissar = after 16 pointsМодератор форума
6284

Doom Rate: 1.65

Posts quality: +1631
Ссылка на пост №1135 Отправлено: 10.08.16 00:47:00
От фпс зависит, полагаю. cl_capfps 1, vid_vsync 1. У варпа интерполяция в анкаппеде, проседания фпс будут заметны.

Добавлено спустя 22 часа 4 минуты 39 секунд:

Эээээ... я не знаю, куда это. Пусть здесь лежит.
http://www.mediafire.com/download/xg998xmt9n8d8u5/cyclone.pk3
Запускать под последним г/з, написать в консоли give cygun.
Код кривой, фиксить не планирую, написал чуть ли не на скорость за 20 минут увидев это видео.
Нужен кто-то, умеющий в математику и могущий объяснить, схренли у меня проекция работает через такую жопу (а именно, имеется плавно нарастающее отклонение с обеих сторон угла в 45 градусов). Она не должна.


Рейтинг сообщения: +1, отметил(и): Zeberpal_98
2 2 1
alekv
- Colonel -
Next rank: = Colonel = after 272 pointsМодератор форума
4168

Doom Rate: 1.87

Posts quality: +949
Ссылка на пост №1136 Отправлено: 11.08.16 00:48:56
ZZYZX
Прикольная задумка, поиграл и не заметил отклонений =)
Жаль не особо шарю в математике
1 3 1
ZZYZX
- UAC Commissar -
Next rank: = UAC Commissar = after 16 pointsМодератор форума
6284

Doom Rate: 1.65

Posts quality: +1631
Ссылка на пост №1137 Отправлено: 11.08.16 01:10:44
Ну я это пофиксил... но жутким костылём...
2 2 1
Zeberpal_98
Chief Petty Officer
Next rank: Chief Petty Officer after 3 points
937

Doom Rate: 2.15

Posts quality: +255
Ссылка на пост №1138 Отправлено: 13.08.16 22:46:50
ZZYZX просто обалдеть! В теории же и к зажатой altfire можно присобачить этот скрипт?

Я тут неслучайно, у меня беда. Пытаюсь сделать так, чтобы игрок, когда подходил к определенной линии(она фронтально затекстурирована, тэг 111) - она динамично бы исчезала/появлялась у него на глазах, в зависимости от того, на каком расстоянии расположен игрок от линии.
Для этого в центр линии я поставил даммиактор с тегом 22.

   Int DummyItemX, DummyItemY, DummyItemZ;
		Int DistX, DistY, DistZ, Dist;
	
Script 693 (Void) CLIENTSIDE
{
	While(True)
	{
	
		DistX = (DummyItemX - GetActorX(22));
		If(DistX < 0) DistX *= -1;
		DistY = (DummyItemY - GetActorY(22));
		If(DistY < 0) DistY *= -1;
		DistZ = (DummyItemZ - GetActorZ(22));
		If(DistZ < 0) DistZ *= -1;
		Dist = DistX + DistY + DistZ;
		
        		If(Dist < 256)
		{
     TranslucentLine(111, FixedDiv(Dist, 256), 0);
		}
		Else
		{
    TranslucentLine(111, 0, 0); //iddqd
		}
	Delay(1);
	}
}


и, признаться честно, ничерта у меня не выходит. Когда пукаю скрипт, нужная мне линия всегда выдает параметр //iddqd по прозрачности. :<
1 3
ZZYZX
- UAC Commissar -
Next rank: = UAC Commissar = after 16 pointsМодератор форума
6284

Doom Rate: 1.65

Posts quality: +1631
Ссылка на пост №1139 Отправлено: 13.08.16 23:18:54
Вот чё ты творишь?
Во-первых, VectorLength(DistZ, VectorLength(DistX, DistY)).
Во-вторых, если предыдущая формулировка не устраивает, то можно ещё sqrt().
В-третьих, DistX = -DistX, а не DistX *= -1; так быстрее. И вообще напиши функцию abs().
В-четвёртых, у тебя dist фиксед, а сравниваешь ты с интом. То есть у тебя dist всегда в 65535 раз больше.
В-пятых, если у тебя зандронум 2.х, то в вики есть distance:
function int VectorLength3d(int x, int y, int z)
{
	int len;

	int ang = vectorangle(x,y);
	if(((ang+0.125)%0.5) > 0.25) len = fixeddiv(y, sin(ang));
	else len = fixeddiv(x, cos(ang));

	ang = vectorangle(len, z);
	if(((ang+0.125)%0.5) > 0.25) len = fixeddiv(z, sin(ang));
	else len = fixeddiv(len, cos(ang));

	return len;
}


После этого
int distanceI = VectorLength3d(DistX, DistY, DistZ)>>16; // ну или любая другая вариация на тему
int alpha = 0;
if (distanceI < 255) alpha = 255-distanceI;
TranslucentLine(111, alpha, 0);
2 2 1
Zeberpal_98
Chief Petty Officer
Next rank: Chief Petty Officer after 3 points
937

Doom Rate: 2.15

Posts quality: +255
Ссылка на пост №1140 Отправлено: 13.08.16 23:42:08
Мне просто было стыдно говорить "пожалуйста, напишите за меня код", поэтому я попытался максимум сам сделать :Ш нет, джизидум
И, честно говоря, мне процентов на 20 понятно, что тут происходит. Я совсем не понимаю, что за чем писать :[[
1 3
Страница 57 из 200Перейти наверх Пред.  1, 2, 3 ... 56, 57, 58 ... 198, 199, 200  След.
   Список разделов - Флуд и устаревшие темы - Тема для новичков. Вопросы по маппингу/моддингу - любые!