Новые сообщения Участники Правила Поиск
Помощь по SDK для Serious Sam 1.05/1.07
ST27 Понедельник, 09.02.2015, 14:35 | Сообщение # 2161


Сообщений: 460
Награды: 7
Замечания: 0%
 
vanya109, то есть ты хочешь, чтобы мы за тебя всё написали?

- My Personal Site -
CAHEK Понедельник, 09.02.2015, 15:18 | Сообщение # 2162


Сообщений: 794
Награды: 16
Замечания: 0%
 
Вопрос. Есть модель в СКА формате. Как сделать, чтобы при каком либо действии (атаке например) материал 1 стал невидимым, а материал 2 стал Detail с базовой текстурой 1 и детаил текстура 2?
Точнее даже будет сказать так. Как сменить тип рендера на определенном материале ?


Всё очень серьёзно.
P.S. Не пишите мне на Email, пишите в Л.С.
SLAwww Понедельник, 09.02.2015, 21:04 | Сообщение # 2163


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

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 Четверг, 19.02.2015, 17:52 | Сообщение # 2164


Сообщений: 794
Награды: 16
Замечания: 0%
 
Было такое, но вот вопрос. Как изменить именно 3 или 4 материал ?
Кстати.
GetPlayer()->vTranslation(1) *= значение;
GetPlayer()->vTranslation(3) *= значение;
Не сработало.

Добавлено (19.02.2015, 17:52)
---------------------------------------------
.

Всё очень серьёзно.
P.S. Не пишите мне на Email, пишите в Л.С.
ST27 Четверг, 19.02.2015, 18:07 | Сообщение # 2165


Сообщений: 460
Награды: 7
Замечания: 0%
 
CAHEK, попробуй тогда найти в Player.es функцию ActiveActions, и ниже, где есть:
Код
if( ((CPlayerWeapons&)*m_penWeapons).m_iCurrentWeapon==WEAPON_KNIFE &&
          !GetSP()->sp_bCooperative) {
       vTranslation *= 1.3f;
     }

Добавь ниже, что-то типа:
Код
if( ((CPlayerWeapons&)*m_penWeapons).m_iCurrentWeapon==WEAPON_MINIGUN &&
          ulNewButtons&PLACT_FIRE) {
       vTranslation /= 2.0f;
     }


- My Personal Site -
CAHEK Четверг, 19.02.2015, 18:39 | Сообщение # 2166


Сообщений: 794
Награды: 16
Замечания: 0%
 
Нет я так пробовал.
Просто ситуация какая. При выстреле из минигана скорость ГГ должна быть меньше чем обычная, и после окончания стрельбы не должна восстанавливаться. Восстановление будет происходить отдельными функциями. Идеальный вариант - из PlayerWeapon послать сигнал в Player на смену скорости, но я не знаю как.


Всё очень серьёзно.
P.S. Не пишите мне на Email, пишите в Л.С.
ST27 Понедельник, 23.02.2015, 16:30 | Сообщение # 2167


Сообщений: 460
Награды: 7
Замечания: 0%
 
И снова привет. Я хочу сделать подвижную модель (гравитация, отталкивание и т.д.)
Сделал я её как нейтральный Enemy Base. Но теперь хотелось бы узнать, как сделать так, чтобы когда атакуешь эту модель она не брызгала кровью (ну или "разлеталась" как клир). Как это можно сделать?
В прикреплении показано, что кровь мне не нужна

Прикрепления: 1914333.jpg (225.5 Kb)


- My Personal Site -
SLAwww Понедельник, 23.02.2015, 21:33 | Сообщение # 2168


Рряа? ^..^
Сообщений: 2398
Награды: 27
Замечания: 0%
 
Попробуй перегрузить метод ReceiveDamage так, чтобы он не вызывался у базового класса. А вообще, подвижную модель сделать гораздо проще. Достаточно посмотреть, какие значения можно передавать в SetPhysicalFlags/SetCollisionFlags.

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 Вторник, 24.02.2015, 08:08 | Сообщение # 2169


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


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


Сообщений: 3449
Награды: 28
Замечания: 0%
 
STPROD,
void ReceiveDamage(тут аргументы, которые берешь в любом другом классе, например, Eyeman)
{
return;
}


ST27 Вторник, 24.02.2015, 15:43 | Сообщение # 2171


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

Добавлено (24.02.2015, 15:43)
---------------------------------------------
И ещё: можно ли поставить моей модельке (или ModelHolder2) какую-нибудь модель с текстурой, когда я создаю её через игрока?
Этот способ не установил нужную модель, а просто поставил ентитю со стандартным Axis.mdl (который по дефолту стоит)

Код
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());

А этот способ вообще вылетает:
Код
CEntityPointer pen = penThis->CreateEntity(penThis->GetPlacement(), CLASS_MODEL);
     ((CMovableModel*)&pen)->SetModel(CTFILENAME("ModelsMP\\SouthAmerica\\Bridge\\Bridge.mdl"));
     ((CMovableModel*)&pen)->SetModelMainTexture(CTFILENAME("ModelsMP\\SouthAmerica\\Bridge\\Bridge.tex"));
     pen->Initialize(EVoid());


- My Personal Site -
Heming_Hitrowski Вторник, 24.02.2015, 20:21 | Сообщение # 2172


Double Jumper
Сообщений: 887
Награды: 32
Замечания: 0%
 
CAHEK, может поможет создание функции? (например, BOOL)
что-то типа

BOOL IsChtoTo() {
return m_bChtoTo && GetFlags()&ENF_ALIVE && GetSP()->sp_bUseFrags;
}

которую ты сможешь потом использовать как

if (IsChtoTo()) {
// ...
}

STPROD, попробуй вот так
CEntityPointer pen = penThis->CreateEntity(penThis->GetPlacement(), CLASS_MODEL);
pen->Initialize(EVoid());
((CMovableModel*)&pen)->SetModel(MODEL_SOMEMODEL);
((CMovableModel*)&pen)->SetModelMainTexture(TEXTURE_SOMETEXTURE);
Сообщение отредактировал Heming_Hitrowski - Вторник, 24.02.2015, 20:27


ST27 Вторник, 24.02.2015, 20:56 | Сообщение # 2173


Сообщений: 460
Награды: 7
Замечания: 0%
 
Heming_Hitrowski, к сожалению, не работает. Может это всё из-за того, что моя модель CMovableModelEntity?

- My Personal Site -
Heming_Hitrowski Вторник, 24.02.2015, 21:05 | Сообщение # 2174


Double Jumper
Сообщений: 887
Награды: 32
Замечания: 0%
 
STPROD, таки да, без приведения типов разве не работает?

попробуй вот эти два варианта
pen->SetModel(...);
((CНазваниеКласса*)&*pen)->SetModel(...);
Сообщение отредактировал Heming_Hitrowski - Вторник, 24.02.2015, 21:06


SLAwww Вторник, 24.02.2015, 21:37 | Сообщение # 2175


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

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 Вторник, 24.02.2015, 21:38 | Сообщение # 2176


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

- My Personal Site -
SLAwww Вторник, 24.02.2015, 22:45 | Сообщение # 2177


Рряа? ^..^
Сообщений: 2398
Награды: 27
Замечания: 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.
ST27 Среда, 25.02.2015, 14:55 | Сообщение # 2178


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

- My Personal Site -
SLAwww Среда, 25.02.2015, 20:37 | Сообщение # 2179


Рряа? ^..^
Сообщений: 2398
Награды: 27
Замечания: 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.
ST27 Среда, 25.02.2015, 22:29 | Сообщение # 2180


Сообщений: 460
Награды: 7
Замечания: 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)
---------------------------------------------
Но теперь оно падает, когда ставишь в редакторе.

- My Personal Site -
SLAwww Среда, 25.02.2015, 22:39 | Сообщение # 2181


Рряа? ^..^
Сообщений: 2398
Награды: 27
Замечания: 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.
ST27 Среда, 25.02.2015, 23:01 | Сообщение # 2182


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

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

- My Personal Site -
SLAwww Четверг, 26.02.2015, 00:26 | Сообщение # 2183


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


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


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


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

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


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


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


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

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


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


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


Всё очень серьёзно.
P.S. Не пишите мне на Email, пишите в Л.С.
Поиск: