Новые сообщения Участники Правила Поиск
Модератор форума: freeknik, SLAwww, thecre, RealCrazyMan  
Помощь по SDK для Serious Sam 1.05/1.07
SLAwww Четверг, 26.02.2015, 00:26 | Сообщение # 2251


Рряа? ^..^
Сообщений: 2398
Награды: 27
Замечания: 0%
 
Цитата STPROD ()
Для этого потока команд не включена потоковая обработка

Из какой функции ты пытаешься поменять модель? Вообще, покажи .es.


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 Четверг, 26.02.2015, 13:49 | Сообщение # 2252


Сообщений: 457
Награды: 7
Замечания: 0%
 
SLAwww, в MovableModel.es:
Код
  1 CTFileName m_fnModel      "Model" =CTFILENAME("Models\\Editor\\Axis.mdl"),
   2 CTFileName m_fnTexture    "Texture" =CTFILENAME("Models\\Editor\\Vector.tex"),
   {
  CTFileStream fnModel;
  CTFileStream fnTexture;
     CAutoPrecacheModel m_apm;
  CAutoPrecacheTexture m_apt;
   }

И ещё:
Код
  void Precache(void)
   {
     m_apm.Precache(m_fnModel);
  m_apt.Precache(m_fnTexture);
   }

В Player.es по нажатию кнопки "bStr1":
Код
if (pctlCurrent.bStr1) {
   CEntityPointer pen = penThis->CreateEntity(penThis->GetPlacement(), CLASS_MODEL);
   ((CMovableModel*)&*pen)->m_fnModel = CTFILENAME("ModelsMP\\SouthAmerica\\Bridge\\Bridge.mdl");
   ((CMovableModel*)&*pen)->m_fnTexture = CTFILENAME("ModelsMP\\SouthAmerica\\Bridge\\Bridge.tex");
   pen->Initialize(EVoid());
   try {  
     ((CMovableModel*)&pen)->fnModel.Open_t(((CMovableModel*)&pen)->m_fnModel);
     ((CMovableModel*)&pen)->fnTexture.Open_t(((CMovableModel*)&pen)->m_fnTexture);
     ((CMovableModel*)&pen)->GetModelObject()->Read_t(&((CMovableModel*)&pen)->fnModel);
     ((CMovableModel*)&pen)->GetModelObject()->mo_toTexture.SetData_t(((CMovableModel*)&pen)->m_fnTexture);
   } catch (char* strError) {  
     CPrintF(strError);  
   }
   pen->ModelChangeNotify();  
   pctlCurrent.bStr1 = 0;
}

И в CPlayer_Precache():
Код
pdec->PrecacheModel(MODEL_B);
   pdec->PrecacheTexture(TEXTURE_B);

MODEL_B и TEXTURE_B указаны в компонентах, и указывают на "ModelsMP\\SouthAmerica\\Bridge\\Bridge.mdl/tex"


- My Personal Site -
SLAwww Четверг, 26.02.2015, 21:55 | Сообщение # 2253


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

CTFileStream fnModel;  
CTFileStream fnTexture;  
if (pctlCurrent.bStr1) {  
    CEntityPointer pen = penThis->CreateEntity(penThis->GetPlacement(), CLASS_MODEL);  
    ((CMovableModel*)&*pen)->m_fnModel = CTFILENAME("ModelsMP\\SouthAmerica\\Bridge\\Bridge.mdl");  
    ((CMovableModel*)&*pen)->m_fnTexture = CTFILENAME("ModelsMP\\SouthAmerica\\Bridge\\Bridge.tex");  
    pen->Initialize(EVoid());  
    try {   
      fnModel.Open_t(((CMovableModel*)&pen)->m_fnModel);  
      fnTexture.Open_t(((CMovableModel*)&pen)->m_fnTexture);  
      ((CMovableModel*)&pen)->GetModelObject()->Read_t(&fnModel);  
      ((CMovableModel*)&pen)->GetModelObject()->mo_toTexture.SetData_t(((CMovableModel*)&pen)->m_fnTexture);  
    } catch (char* strError) {   
      CPrintF(strError);   
    }  
    pen->ModelChangeNotify();   
    pctlCurrent.bStr1 = 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 Четверг, 26.02.2015, 22:12 | Сообщение # 2254


Сообщений: 457
Награды: 7
Замечания: 0%
 
SLAwww,
Цитата STPROD ()
Ок, сделал PrecachaModel на модель, сработало. Но, можно для каждой модели/текстуры этого не делать?

У меня уже всё ставится, но проблема такова - не хочу делать PrecacheModel/Texture для каждой модели, которую буду ставить


- My Personal Site -
SLAwww Четверг, 26.02.2015, 22:42 | Сообщение # 2255


Рряа? ^..^
Сообщений: 2398
Награды: 27
Замечания: 0%
 
Таки в чём проблема? Вызов CAutoPrecacheModel::Precache() - это одна строка кода, если кешируешь по имени файла. Или у тебя имя файла таинственным образом генерируется во время игры, и ты его изначально (прямо перед запуском игры) не знаешь?

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 Четверг, 26.02.2015, 22:45 | Сообщение # 2256


Сообщений: 457
Награды: 7
Замечания: 0%
 
SLAwww, имя файла появляется (или инициализируется) при нажатии кнопки, поэтому игра не знает файла до нажатия

- My Personal Site -
SLAwww Четверг, 26.02.2015, 23:19 | Сообщение # 2257


Рряа? ^..^
Сообщений: 2398
Награды: 27
Замечания: 0%
 
Какая разница? Имя файла статично прописано в коде, значит, его можно кешировать. Хотя бы так:
m_apm.Precache(CTFILENAME("ModelsMP\\SouthAmerica\\Bridge\\Bridge.mdl"));
Хотя, ещё лучше вынести его константой куда-нибудь.


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.
CAHEK Вторник, 03.03.2015, 20:06 | Сообщение # 2258


Сообщений: 794
Награды: 16
Замечания: 0%
 
Вопрос 1.
Я в PlayerWeapons накодил
if
(GetHealth() == 100) (
бла бла бла
)
Как повторить с броней
GetArmor() не подходит.
Вопрос 2.
Как поменять координаты текста получаемые с помощью тригера в графе Message


Всё очень серьёзно.
P.S. Не пишите мне на Email, пишите в Л.С.
Heming_Hitrowski Вторник, 03.03.2015, 21:12 | Сообщение # 2259


Double Jumper
Сообщений: 885
Награды: 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 | Сообщение # 2260


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


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


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

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


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


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


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

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


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


Рряа? ^..^
Сообщений: 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 | Сообщение # 2265


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

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

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


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

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


Рряа? ^..^
Сообщений: 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 | Сообщение # 2268


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


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


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

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


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


Сообщений: 457
Награды: 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 | Сообщение # 2271


Сообщений: 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 | Сообщение # 2272


Сообщений: 457
Награды: 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 | Сообщение # 2273


Сообщений: 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 | Сообщение # 2274


Рряа? ^..^
Сообщений: 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 | Сообщение # 2275


Сообщений: 457
Награды: 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 | Сообщение # 2276


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

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


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


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


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


Рряа? ^..^
Сообщений: 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 | Сообщение # 2279


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

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


Рряа? ^..^
Сообщений: 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.
Поиск:

Статистика