Новые сообщения Участники Правила Поиск

Страница 76 из 91«1274757677789091»
Модератор форума: SLAwww, thecre, RealCrazyMan 
Форум » Serious Sam » Серьёзное редактирование » Помощь по SDK для Serious Sam 1.05/1.07 (Вопросы по комплекту средств разработки для Serious Sam 1.)
Помощь по SDK для Serious Sam 1.05/1.07
STPROD Вторник, 24.02.2015, 21:38 | Сообщение # 2251


Сообщений: 411
Награды: 3
Замечания: 0%
 
Heming_Hitrowski, 2ой способ не вылетает, но просто делает Axis.mdl с Default текстурой (в клетку)

kill me.
SLAwww Вторник, 24.02.2015, 22:45 | Сообщение # 2252


Рряа? ^..^
Сообщений: 2366
Награды: 28
Замечания: 0%
 
Кстати, есть ещё у CModelObject метод Load_t как раз для загрузки модели из файла. Приставка "_t" означает, что метод может бросать исключения, поэтому надо вызывать через try/catch как-то так (примерно, не проверял):

try {
penMyEntity->GetModelObject()->Load_t(CTFILENAME("ModelsMP\\MyModel.mdl"));
} catch (char* strError) {
CPrintF(strError);
}
penMyEntity->ModelChangeNotify();

Желательно ещё кешировать модель перед загрузкой, для этого есть CAutoPrecacheModel. Применяется аналогично CAutoPrecacheSound (его можно найти и сделать по примеру так же для модели).


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.
STPROD Среда, 25.02.2015, 14:55 | Сообщение # 2253


Сообщений: 411
Награды: 3
Замечания: 0%
 
SLAwww, как ни странно, но мне пишет, что Load_t is not a member of 'CModelObject'

kill me.
SLAwww Среда, 25.02.2015, 20:37 | Сообщение # 2254


Рряа? ^..^
Сообщений: 2366
Награды: 28
Замечания: 0%
 
Упс, Read_t, а не Load_t. И принимает он не имя файла, а указатель на CTStream, то есть, тебе нужно будет создать CTFileStream для чтения нужного файла.

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.
STPROD Среда, 25.02.2015, 22:29 | Сообщение # 2255


Сообщений: 411
Награды: 3
Замечания: 0%
 
Похоже, я ещё слишком туп, чтобы что-то подставить Read_t(сюда). Не получается. И примеров в коде даже нет

Добавлено (25.02.2015, 22:10)
---------------------------------------------
Хреновую идею я задумал...

Добавлено (25.02.2015, 22:25)
---------------------------------------------
Экспериментировал я, значит, написал это:

Код
CTFileStream fnModel;
  fnModel.Open_t(m_fnModel);

     GetModelObject()->Read_t(&fnModel);

И оно скомпилилось без ошибок O_o

Добавлено (25.02.2015, 22:29)
---------------------------------------------
Но теперь оно падает, когда ставишь в редакторе.

kill me.
SLAwww Среда, 25.02.2015, 22:39 | Сообщение # 2256


Рряа? ^..^
Сообщений: 2366
Награды: 28
Замечания: 0%
 
Заключи вызовы Open_t и Read_t в блок try/catch и увидишь, из-за чего падает.

try {
fnModel.Open_t(m_fnModel);
GetModelObject()->Read_t(&fnModel);
} catch (char* strError) {
CPrintF(strError);
}


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.
STPROD Среда, 25.02.2015, 23:01 | Сообщение # 2257


Сообщений: 411
Награды: 3
Замечания: 0%
 
Всё сделал, сделал CAutoPrecacheModel для m_fnModel, но:
"Не удается открыть файл 'ModelsMP\\Model.mdl'. Для этого потока команд не включена потоковая обработка."
Но ставиться Axis.mdl без текстуры

Добавлено (25.02.2015, 23:01)
---------------------------------------------
Ок, сделал PrecachaModel на модель, сработало. Но, можно для каждой модели/текстуры этого не делать?

kill me.
SLAwww Четверг, 26.02.2015, 00:26 | Сообщение # 2258


Рряа? ^..^
Сообщений: 2366
Награды: 28
Замечания: 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.
STPROD Четверг, 26.02.2015, 13:49 | Сообщение # 2259


Сообщений: 411
Награды: 3
Замечания: 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"


kill me.
SLAwww Четверг, 26.02.2015, 21:55 | Сообщение # 2260


Рряа? ^..^
Сообщений: 2366
Награды: 28
Замечания: 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.
STPROD Четверг, 26.02.2015, 22:12 | Сообщение # 2261


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

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


kill me.
SLAwww Четверг, 26.02.2015, 22:42 | Сообщение # 2262


Рряа? ^..^
Сообщений: 2366
Награды: 28
Замечания: 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.
STPROD Четверг, 26.02.2015, 22:45 | Сообщение # 2263


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

kill me.
SLAwww Четверг, 26.02.2015, 23:19 | Сообщение # 2264


Рряа? ^..^
Сообщений: 2366
Награды: 28
Замечания: 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 | Сообщение # 2265


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


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


Double Jumper
Сообщений: 816
Награды: 23
Замечания: 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 | Сообщение # 2267


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


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


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

kill me.
CAHEK Пятница, 06.03.2015, 08:35 | Сообщение # 2269


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


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


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

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


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


Рряа? ^..^
Сообщений: 2366
Награды: 28
Замечания: 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.
STPROD Суббота, 14.03.2015, 15:01 | Сообщение # 2272


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

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

kill me.
Skelite Суббота, 14.03.2015, 15:13 | Сообщение # 2273


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

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


Рряа? ^..^
Сообщений: 2366
Награды: 28
Замечания: 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.
STPROD Суббота, 14.03.2015, 19:21 | Сообщение # 2275


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


kill me.
thecre Суббота, 14.03.2015, 19:25 | Сообщение # 2276


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

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


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


Сообщений: 411
Награды: 3
Замечания: 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?


kill me.
thecre Суббота, 14.03.2015, 20:48 | Сообщение # 2278


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


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


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

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


kill me.
thecre Суббота, 14.03.2015, 21:42 | Сообщение # 2280


Сообщений: 3432
Награды: 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));

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


Форум » Serious Sam » Серьёзное редактирование » Помощь по SDK для Serious Sam 1.05/1.07 (Вопросы по комплекту средств разработки для Serious Sam 1.)
Страница 76 из 91«1274757677789091»
Поиск: