Новые сообщения Участники Правила Поиск
Помощь по SDK для Serious Sam 1.05/1.07
Heming_Hitrowski Вторник, 03.03.2015, 21:12 | Сообщение # 2191


Double Jumper
Сообщений: 887
Награды: 32
Замечания: 0%
 
1) m_fArmor == 100

2) Player.es, комментарий // print center message в функции RenderPlayerView
вот эта строчка.
pdp->PutTextCXY( m_strCenterMessage, pixDPWidth*0.5f, pixDPHeight*0.85f, C_WHITE|0xDD);


CAHEK Среда, 04.03.2015, 07:46 | Сообщение # 2192


Сообщений: 794
Награды: 16
Замечания: 0%
 
Спасибо. Второй пункт работает.
Видоизменение первого вопроса.
Ситуация. Я планировал изменять текстуру руки в зависимости от количества здоровья. Как можно сделать, чтобы "TEXTURE_HAND" заменить на некую переменную , которую можно менять в любое время ?


Всё очень серьёзно.
P.S. Не пишите мне на Email, пишите в Л.С.
ST27 Среда, 04.03.2015, 17:01 | Сообщение # 2193


Сообщений: 460
Награды: 7
Замечания: 0%
 
CAHEK, можно завести её в propertioes: как "m_fnHandTexture = CTFILENAME("Models\\Hand.tex")", и с лёгкостью её менять в любое время

- My Personal Site -
CAHEK Пятница, 06.03.2015, 08:35 | Сообщение # 2194


Сообщений: 794
Награды: 16
Замечания: 0%
 
Не уверен, что опишу вопрос правильно.....
Ситуация. Когда игрок стоит на месте в центре комнаты и смотрит прямо, то прицел и точка попадания находятся в центре экрана. Когда игрок подходит к стене, то прицел и точка попадания смещаются.
Вопрос.
Как убрать это смещение, что бы прицел и точка попадания были всегда в одном месте ?


Всё очень серьёзно.
P.S. Не пишите мне на Email, пишите в Л.С.
Ar2R-devil-PiNKy Пятница, 06.03.2015, 10:51 | Сообщение # 2195


Creative virtuoso
Сообщений: 3740
Награды: 58
Замечания: 
 
CAHEK, эта фишка есть в Сэме изначально, консольная команда /hud_bCrosshairFixed=1

Ну или же в Scripts/PersistentSymbols.ini найти и заменить
persistent extern user INDEX hud_bCrosshairFixed=(INDEX)0;


Мои работы
SLAwww Пятница, 06.03.2015, 22:21 | Сообщение # 2196


Рряа? ^..^
Сообщений: 2398
Награды: 27
Замечания: 0%
 
Как вариант - можно не рендерить прицел привычным образом, а просто рисовать его текстурой в HUD. )

Where did all the dragons go?
We searched in the hills and we searched down the canyons,
we even scanned the depths of the caves with our armour, swords and lanterns.
Oh, if only had we seen him lurch, from his glorious skull covered perch.

CRACK went his claws and SMACK swipped the tail,
a ROAR of might, one big BITE.

and so ended our search.
ST27 Суббота, 14.03.2015, 15:01 | Сообщение # 2197


Сообщений: 460
Награды: 7
Замечания: 0%
 
Можно с помощью SDK увеличить или уменьшить скорость анимации? Просто модель переделывать не хочется, да и со стандартными анимациями не понять, как достать

Добавлено (14.03.2015, 15:01)
---------------------------------------------
Здрасте. Вопрос. Как определяется точка (FLOAT3D), куда ты стреляешь? (где происходит нацеливание)

- My Personal Site -
Skelite Суббота, 14.03.2015, 15:13 | Сообщение # 2198


Deathmatch Expert
Сообщений: 623
Награды: 9
Замечания: 0%
 
Плохо помню, но кажись можно.

SLAwww Суббота, 14.03.2015, 18:49 | Сообщение # 2199


Рряа? ^..^
Сообщений: 2398
Награды: 27
Замечания: 0%
 
Цитата STPROD ()
Можно с помощью SDK увеличить или уменьшить скорость анимации?

GetModelObject()->GetData()->SetSpeed(MODEL_ANIM_ID, fNewAnimationSpeed);
Цитата STPROD ()
Как определяется точка (FLOAT3D), куда ты стреляешь? (где происходит нацеливание)

В PlayerWeapons.es ищи применение CCastRay. Там у объекта этого класса берётся cr_vHit.


Where did all the dragons go?
We searched in the hills and we searched down the canyons,
we even scanned the depths of the caves with our armour, swords and lanterns.
Oh, if only had we seen him lurch, from his glorious skull covered perch.

CRACK went his claws and SMACK swipped the tail,
a ROAR of might, one big BITE.

and so ended our search.
ST27 Суббота, 14.03.2015, 19:21 | Сообщение # 2200


Сообщений: 460
Награды: 7
Замечания: 0%
 
SLAwww, значит, нацелился я на ентитю по пронципу Bullet, а он при старте целился только туда (на скрине), а конкретнее, мне нужна точка, куда ты стреляешь (центр экрана)
Прикрепления: 4345344.jpg (238.6 Kb)


- My Personal Site -
thecre Суббота, 14.03.2015, 19:25 | Сообщение # 2201


Сообщений: 3449
Награды: 28
Замечания: 0%
 
Код
GetPlayerWeapons()->m_vRayHit

Подразумевается, что вызывается для CPlayer


ST27 Суббота, 14.03.2015, 20:39 | Сообщение # 2202


Сообщений: 460
Награды: 7
Замечания: 0%
 
Нашёл то, где можно менять угол и куда можно стрелять
Код
if (!m_bMirrorFire) {
       plPos.RelativeToAbsoluteSmooth(CPlacement3D(vPos, ANGLE3D(0, 0, 0)));
     } else {
       plPos.RelativeToAbsoluteSmooth(CPlacement3D(vPos, ANGLE3D(0, 0, 0)));
     }

Ну, а теперь вопрос. Как можно "прицелить" прицел на, скажем, m_penTarget->GetPlacement().pl_PositionVector?


- My Personal Site -
thecre Суббота, 14.03.2015, 20:48 | Сообщение # 2203


Сообщений: 3449
Награды: 28
Замечания: 0%
 
Менять UpdateTargetingInfo в PlayerWeapons.
m_vRayHit - это точка, куда ты нацелен.
m_penRayHit - энтитя, на которую ты нацелен, не знаю, что ты будешь туда пихать.
m_fRayHitDistance - и так понятно. Думаю, сможешь вычислить, благо Croteam сделали CalcDist(CEntity*), вычисляющий расстояние от this до нужной энтити.
m_fEnemyHealth - тут ясно.

Обрати внимание:
Код

     else {
       // not targeting player
       m_tmTargetingStarted = 0;  
       // remember position ahead
       FLOAT3D vDir = crRay.cr_vTarget-crRay.cr_vOrigin;
       vDir.Normalize();
       m_vRayHit = crRay.cr_vOrigin+vDir*50.0f;
     }


Если m_penRayHit == NULL, то тебе нужно будет в этом блоке изменить m_vRayHit.


ST27 Суббота, 14.03.2015, 21:10 | Сообщение # 2204


Сообщений: 460
Награды: 7
Замечания: 0%
 
А как это повлияет? Я всё равно стреляю в центр экрана. Вот же:
Код
plPos.RelativeToAbsoluteSmooth(CPlacement3D(vPos, ANGLE3D(0, 0, 0)));

Мне просто нужно вместо ANGLE3D(0, 0, 0) написать AnglesToDirectionVector(GetPlacement().pl_OrientationAngle, ???) и какие-то координаты во второй аргумент, но он просит class Vector<float,3> &, в то время, как мне надо вписать GetPlacement().pl_PositionVector


- My Personal Site -
thecre Суббота, 14.03.2015, 21:42 | Сообщение # 2205


Сообщений: 3449
Награды: 28
Замечания: 0%
 
Уточняй, что именно тебе нужно. Я сказал тебе, как "нацелить" прицел на конкретную точку, то есть отрисовать его там.
Цитата STPROD ()
Мне просто нужно вместо ANGLE3D(0, 0, 0) написать AnglesToDirectionVector(GetPlacement().pl_OrientationAngle, ???) и какие-то координаты во второй аргумент

Нет. Для начала обрати внимание на то, что данная функция не возвращиет значение, а помещает результат в переменную, на которую ссылается второй аргумент.
И да, это не та функция, которая тебе нужна. Тебе нужно взять угол между тобой и объектом, в который ты целишься.

Есть функция DirectionVectorToAngles. Она преобразует направленный нормализованный вектор в угол. То есть, смотри, допустим у нас есть:
Некие вектора vThis(позиция игрока) и vOther(позиция цели) и углы aAngle = (0,0,0) и aThis(угол игрока). Что мы делаем? Мы делаем vNorm = (vOther-vThis).Normalize(). Затем делаем DirectionVectorToAngles(vNorm, aAngle). Так как в функцию мы будем передавать относительный угол, пишем aAngle -= aThis. А затем plPos.RelativeToAbsoluteSmooth(CPlacement3D(vPos, aAngle));

Не проверял, если честно, но должно прокатить.


SLAwww Воскресенье, 15.03.2015, 02:01 | Сообщение # 2206


Рряа? ^..^
Сообщений: 2398
Награды: 27
Замечания: 0%
 
Я тоже не понимаю, в чём смысл всей этой конструкции. Есть энтити, которая должна быть направлена туда же, куда направлен прицел игрока? Верно?

Where did all the dragons go?
We searched in the hills and we searched down the canyons,
we even scanned the depths of the caves with our armour, swords and lanterns.
Oh, if only had we seen him lurch, from his glorious skull covered perch.

CRACK went his claws and SMACK swipped the tail,
a ROAR of might, one big BITE.

and so ended our search.
ST27 Воскресенье, 15.03.2015, 08:42 | Сообщение # 2207


Сообщений: 460
Награды: 7
Замечания: 0%
 
Есть точка в центре, куда стреляет игрок. Мне надо сместить эту точку на чей-нибудь GetPlacement().pl_PositionVector(+FLOAT3D(0,1,0))
То есть, когда я стреляю, пули/projectile летел не в центр экрана, а на точку GetPlacement().pl_PositionVector(+FLOAT3D(0,1,0))
Положение отрисовки меня не интересует.
Я вообще занимаюсь методом копипаста, сам нихрена написать не могу.


- My Personal Site -
thecre Воскресенье, 15.03.2015, 12:01 | Сообщение # 2208


Сообщений: 3449
Награды: 28
Замечания: 0%
 
Цитата STPROD ()
Я вообще занимаюсь методом копипаста, сам нихрена написать не могу.

Тогда, возможно, пора переходить на Next Level.


ST27 Воскресенье, 15.03.2015, 13:07 | Сообщение # 2209


Сообщений: 460
Награды: 7
Замечания: 0%
 
То, что раньше запомнил, пишу, а так, приходиться повсюду лезть.
И кстати, метод 2280 посте не работает, прицел движется, но не туда. И да, снова не уточнил то, что я целюсь в CMovableModelObject, который всегда движется


- My Personal Site -
SLAwww Воскресенье, 15.03.2015, 14:09 | Сообщение # 2210


Рряа? ^..^
Сообщений: 2398
Награды: 27
Замечания: 0%
 
Цитата STPROD ()
Мне надо сместить эту точку на чей-нибудь GetPlacement().pl_PositionVector(+FLOAT3D(0,1,0))

Так тебе нужен autoaim на врага/игрока?


Where did all the dragons go?
We searched in the hills and we searched down the canyons,
we even scanned the depths of the caves with our armour, swords and lanterns.
Oh, if only had we seen him lurch, from his glorious skull covered perch.

CRACK went his claws and SMACK swipped the tail,
a ROAR of might, one big BITE.

and so ended our search.
ST27 Воскресенье, 15.03.2015, 14:12 | Сообщение # 2211


Сообщений: 460
Награды: 7
Замечания: 0%
 
SLAwww, точно. Из головы вылетело это слово. Но не для мультиплеера)

- My Personal Site -
SLAwww Воскресенье, 15.03.2015, 15:40 | Сообщение # 2212


Рряа? ^..^
Сообщений: 2398
Награды: 27
Замечания: 0%
 
Тогда ты не туда смотришь, вот кусок функции CalcWeaponPosition:
Код
CPlacement3D plView = ((CPlayer &)*m_penPlayer).en_plViewpoint;
      plView.pl_PositionVector(2)+= ((CPlayerAnimator&)*((CPlayer &)*m_penPlayer).m_penAnimator).
        m_fEyesYOffset;
      plPos.RelativeToAbsoluteSmooth(plView);
      plPos.RelativeToAbsoluteSmooth(m_penPlayer->GetPlacement());

Так находится позиция выстрела. Соответственно, тебе нужно повернуть эту позицию. То есть, если есть какой-то m_penTarget, то будет примерно так (вставлять после существующего куска):
Код
FLOAT3D vToTarget = m_penTarget->GetPlacement().pl_PositionVector - plPos.pl_PositionVector;
vToTarget.Normalize();
ANGLE3D aToTarget;
DirectionVectorToAnglesNoSnap(vToTarget, aToTarget);
CPlacement3D plFiringPos(plPos.pl_PositionVector, aToTarget);


Where did all the dragons go?
We searched in the hills and we searched down the canyons,
we even scanned the depths of the caves with our armour, swords and lanterns.
Oh, if only had we seen him lurch, from his glorious skull covered perch.

CRACK went his claws and SMACK swipped the tail,
a ROAR of might, one big BITE.

and so ended our search.
ST27 Воскресенье, 15.03.2015, 17:34 | Сообщение # 2213


Сообщений: 460
Награды: 7
Замечания: 0%
 
Спасибо, попробую

Добавлено (15.03.2015, 17:00)
---------------------------------------------
Добавил в конце plPos = plFiringPos и всё сработало, спасибо.

Добавлено (15.03.2015, 17:34)
---------------------------------------------
Кстати, ещё, перед plPos = plFiringPos как сделать проверку, какая дистанция от прицела до m_penTarget, например, если fDistance < 16 (пикселей, наверно) { plPos = plFiringPos; }

- My Personal Site -
SLAwww Воскресенье, 15.03.2015, 18:21 | Сообщение # 2214


Рряа? ^..^
Сообщений: 2398
Награды: 27
Замечания: 0%
 
Тебе нужно измерять не пиксели, а угол отклонения. Получи нормированный вектор от viewpoint'a к прицелу, и ещё один от viewpoint'a к цели, выполни скалярное умножение и получишь угол между ними. Если угол достаточно маленький, включай autoaim.

Where did all the dragons go?
We searched in the hills and we searched down the canyons,
we even scanned the depths of the caves with our armour, swords and lanterns.
Oh, if only had we seen him lurch, from his glorious skull covered perch.

CRACK went his claws and SMACK swipped the tail,
a ROAR of might, one big BITE.

and so ended our search.
ST27 Воскресенье, 15.03.2015, 19:05 | Сообщение # 2215


Сообщений: 460
Награды: 7
Замечания: 0%
 
Что такое скалярное умножение? Х_Х

- My Personal Site -
thecre Воскресенье, 15.03.2015, 19:35 | Сообщение # 2216


Сообщений: 3449
Награды: 28
Замечания: 0%
 
https://ru.wikipedia.org/wiki....8%D0%B5

ST27 Воскресенье, 15.03.2015, 20:08 | Сообщение # 2217


Сообщений: 460
Награды: 7
Замечания: 0%
 
Что-то я сделал не так, да?
Код
FLOAT3D vToEnemy, vToCenter;
    vToEnemy = NearestEnemy()->GetPlacement().pl_PositionVector+FLOAT3D(0,0.75f,0) - plPos.pl_PositionVector;
    vToEnemy.Normalize();
    vToCenter = m_vRayHit - plPos.pl_PositionVector;
    FLOAT3D vAngle = vToCenter(1)*vToEnemy(1)+vToCenter(2)*vToEnemy(2)+vToCenter(3)*vToEnemy(3);
    if (vAngle(1) < 30 && vAngle(2) < 30 && vAngle(3) < 30) {
   plPos = plFiringPos;
    }


- My Personal Site -
SLAwww Воскресенье, 15.03.2015, 20:19 | Сообщение # 2218


Рряа? ^..^
Сообщений: 2398
Награды: 27
Замечания: 0%
 
Скалярное произведение - это число, а не вектор. У него тип FLOAT, а не FLOAT3D. И ещё, ты забыл нормализовать vToCenter. И ещё, от скалярного произведения надо взять арккосинус, это и будет угол в радианах. А этот угол нужно ограничить, чтобы не получались отрицательные значения (если меньше 0, то прибавить 2*PI).

Where did all the dragons go?
We searched in the hills and we searched down the canyons,
we even scanned the depths of the caves with our armour, swords and lanterns.
Oh, if only had we seen him lurch, from his glorious skull covered perch.

CRACK went his claws and SMACK swipped the tail,
a ROAR of might, one big BITE.

and so ended our search.
ST27 Воскресенье, 15.03.2015, 20:33 | Сообщение # 2219


Сообщений: 460
Награды: 7
Замечания: 0%
 
Вау

Добавлено (15.03.2015, 20:33)
---------------------------------------------
И я опять тупить начинаю, потому, что википедия не помогает

Код
FLOAT3D vToEnemy, vToCenter;
    vToEnemy = NearestEnemy()->GetPlacement().pl_PositionVector+FLOAT3D(0,0.75f,0) - plPos.pl_PositionVector;
    vToEnemy.Normalize();
    vToCenter = m_vRayHit - plPos.pl_PositionVector;
    vToCenter.Normalize();
    FLOAT fAngle = vToCenter(1)*vToEnemy(1)+vToCenter(2)*vToEnemy(2)+vToCenter(3)*vToEnemy(3);
    FLOAT fNormAngle = ACos(fAngle);
    if (fNormAngle < 0) { fNormAngle += 2*PI; }
    if (fNormAngle < 30) {
   plPos = plFiringPos;
   hud_fCrosshairScale = 5.0f;
    }


- My Personal Site -
SLAwww Воскресенье, 15.03.2015, 20:53 | Сообщение # 2220


Рряа? ^..^
Сообщений: 2398
Награды: 27
Замечания: 0%
 
А в чём проблема?

Where did all the dragons go?
We searched in the hills and we searched down the canyons,
we even scanned the depths of the caves with our armour, swords and lanterns.
Oh, if only had we seen him lurch, from his glorious skull covered perch.

CRACK went his claws and SMACK swipped the tail,
a ROAR of might, one big BITE.

and so ended our search.
Поиск: