Новые сообщения Участники Правила Поиск
Модератор форума: freeknik, SLAwww, thecre, RealCrazyMan  
Форум » Serious Sam » Серьёзное редактирование » Помощь по SDK для Serious Sam 1.05/1.07 (Вопросы по комплекту средств разработки для Serious Sam 1.)
Помощь по SDK для Serious Sam 1.05/1.07
Heming_Hitrowski Понедельник, 03.10.2016, 11:22 | Сообщение # 2641


Double Jumper
Сообщений: 883
Награды: 32
Замечания: 0%
 
Jack_Stone, 1.
Код
CEntityPointer m_penLight = CreateEntity(GetPlacement(), CLASS_LIGHT);
Создавая вот таким образом энтити, ты объявляешь локальную переменную, которая нигде не запоминается (мы потом не сможем уничтожить этот лайт). Правильнее будет вот так:
Код
m_penLight = CreateEntity(GetPlacement(), CLASS_LIGHT);
Таким образом ты присвоишь значение глобальной переменной m_penLight, которую ты как раз объявил до этого. 2.
Код
m_aoLightAnimation.SetData_t(CTFILENAME("Animations\\Flashlight.ani"));
Я не уверен, что эта строчка вообще что-то даст. Если ты хочешь присвоить лайту light animation, то можно записать это так: [code((CLight*)&*m_penLight)->m_aoLightAnimation.SetData_t(CTFILENAME("Animations\\Flashlight.ani"));[/code] При этом тебе нужно будет в самом верху класса дописать #include связанный с классом Light (чтобы как раз не было ошибки undefined). 3.
Код
else if (m_penLight != NULL){
можно записать просто как
Код
else {
Сообщение отредактировал Heming_Hitrowski - Понедельник, 03.10.2016, 11:36


Heming_Hitrowski Понедельник, 03.10.2016, 11:37 | Сообщение # 2642


Double Jumper
Сообщений: 883
Награды: 32
Замечания: 0%
 
Какая-то хрень с тегами. Вот код: ((CLight*)&*m_penLight)->m_aoLightAnimation.SetData_t(CTFILENAME("Animations\\Flashlight.ani"));

Jack_Stone Понедельник, 03.10.2016, 21:32 | Сообщение # 2643


Сообщений: 140
Награды: 1
Замечания: 0%
 
спасибо за советы, но что то опять не выходит. У меня короче получилось так: прописал две кнопки - вкл. (желтый Light) и выкл. (черный Light). Heming_Hitrowski, ((CLight*)&*m_penLight)->m_aoLightAnimation.SetData_t(CTFILENAME("Animations\\Flashlight.ani")) очень даже работает. Но есть проблема - вот эти 2 Light`а каким-то образом перебивают Light при стрельбе, даже если, например, в самом начале уровня нажать кнопку либо ВКЛ., либо ВЫКЛ., то свет от оружия нейтрализуется. Вариант фонаря не идеальный, но тоже сойдет.

Добавлено (03.10.2016, 21:29)
---------------------------------------------
самое интересное то, что в этом коде только вот этого и хватает - ((CLight*)&*m_penLight)->m_aoLightAnimation.SetData_t(CTFILENAME("Animations\\Flashlight.ani")). Больше никакие переменные не нужны. Но непонятно как теперь передвинуть эту анимацию чуть дальше от Сэма.

Добавлено (03.10.2016, 21:32)
---------------------------------------------
вот такой вот код, для выключения такой же, только анимация другая

Код
  // turn on flashlight
  void Flashlight(){  
    {
        m_aoLightAnimation.SetData_t(CTFILENAME("Animations\\Flashlight.ani"));
       }
  };


Heming_Hitrowski Понедельник, 03.10.2016, 23:38 | Сообщение # 2644


Double Jumper
Сообщений: 883
Награды: 32
Замечания: 0%
 
Jack_Stone, ух, я понял, в чем дело.

Ты тут очень сильно нагородил)) Дело в том, что переменная m_aoLightAnimation используется как раз для вспышки при стрельбе, и ее ВООБЩЕ НЕ НАДО ТРОГАТЬ ЧТОБЫ СДЕЛАТЬ ФОНАРЬ, иначе произойдет такой ужас, который ты описал. Прочитай еще раз что мы тебе предлагали и старайся делать все по шагам.

Для начала давай попробуем все же заспавнить лайт, раз уж ты решил работать именно с ним, а не с Projectile.

По нажатии кнопки фонаря давай попробуем добавить вот такой код.
Код

CPlacement3D pl = GetPlacement(); // получили позицию игрока
pl.pl_PositionVector(2) += 1.0f; // сдвинули ее чуть повыше, чтобы лайт не был в "земле"
m_penLight = CreateEntity(pl, CLASS_LIGHT); // объяви CLASS_LIGHT заранее, в блоке components
m_penLight->Initialize(); // инициализируем лайт на обработанных координатах


Что-нибудь происходит при выполнении?
Сообщение отредактировал Heming_Hitrowski - Вторник, 04.10.2016, 00:00


Jack_Stone Вторник, 04.10.2016, 10:10 | Сообщение # 2645


Сообщений: 140
Награды: 1
Замечания: 0%
 
Heming_Hitrowski, нет, не происходит, но всё компилируется нормально.

Добавлено (04.10.2016, 00:26)
---------------------------------------------
Хотя неее, что то да есть уже) сам Light появляется и исчезает при нажатии кнопки, но свет не производит.

Добавлено (04.10.2016, 00:28)
---------------------------------------------
вот с этим кодом

// turn on off flashlight
void Flashlight(){

Код
     if (m_penLight == NULL){
    m_penLight = CreateEntity(GetPlacement(), CLASS_LIGHT);
    m_penLight->Initialize();
       }
    else {
      m_penLight->Destroy();
        m_penLight = NULL;

      }

  };

Добавлено (04.10.2016, 00:28)
---------------------------------------------
я вообще запутался уже))

Добавлено (04.10.2016, 00:32)
---------------------------------------------
с твоим кодом точно также работает, но света нет

Код
  // turn on off flashlight
  void Flashlight(){  
   
      if (m_penLight == NULL){
CPlacement3D pl = GetPlacement(); // получили позицию игрока
pl.pl_PositionVector(2) += 1.0f; // сдвинули ее чуть повыше, чтобы лайт не был в "земле"
m_penLight = CreateEntity(pl, CLASS_LIGHT); // объяви CLASS_LIGHT заранее, в блоке components
    m_penLight->Initialize();
       }
    else {
      m_penLight->Destroy();
        m_penLight = NULL;

      }

  };

Добавлено (04.10.2016, 10:10)
---------------------------------------------
может он просто телепортирует модель лайта, а "физические свойства" надо отдельно прописывать? но как?

Heming_Hitrowski Вторник, 04.10.2016, 11:37 | Сообщение # 2646


Double Jumper
Сообщений: 883
Награды: 32
Замечания: 0%
 
Цитата
Это самый простой способ инициализации. У нас создается стандартный Trigger на том месте, где мы стоим (GetPlacement()). Вот, например, более сложный.

m_penTrigger = CreateEntity(GetPlacement(), CLASS_TRIGGER);
(CTrigger*)&*m_penTrigger)->m_strName = "New Trigger";
m_penTrigger->Initialize();


Jack_Stone Вторник, 04.10.2016, 12:54 | Сообщение # 2647


Сообщений: 140
Награды: 1
Замечания: 0%
 
ааа, то есть то же самое и с Light можно сделать, и прописать уже имя лайта - например, LT_POINT. Я правильно понял?

Heming_Hitrowski Вторник, 04.10.2016, 12:57 | Сообщение # 2648


Double Jumper
Сообщений: 883
Награды: 32
Замечания: 0%
 
Jack_Stone, да) Только не имя, а тип.
Сообщение отредактировал Heming_Hitrowski - Вторник, 04.10.2016, 12:58


Jack_Stone Четверг, 06.10.2016, 10:30 | Сообщение # 2649


Сообщений: 140
Награды: 1
Замечания: 0%
 
Heming_Hitrowski, всё то же самое. Как будто и не менял ничего. Света нет.

Добавлено (04.10.2016, 21:21)
---------------------------------------------
(CTrigger*)&*m_penTrigger)->m_strName = "New Trigger";

эта строка вообще никак не влияет, написать можно любой набор букв на месте "New Trigger"

Добавлено (04.10.2016, 22:20)
---------------------------------------------
попробовал ту же схему с моделью, та же фигня: почему то не меняет тип проджектайла - всегда выстреливает ракету, которая убивает Сэма

Добавлено (04.10.2016, 23:00)
---------------------------------------------
тут и правда используется ракета Сэма, но это ладно. Я сделал так, чтобы она не летела, а как сделать так, чтобы она приатачилась к Сэму и двигалась вместе с ним?

Добавлено (06.10.2016, 10:30)
---------------------------------------------
ВСЕМ, кто помогал мне с созданием фонарика, СПАСИБО, особенно Heming_Hitrowski, ) наконец-то получилось :) но вот чего я не пойму, так это почему он начал светить только тогда, когда прописал эту строчку:

Код
m_penLight->SetParent( this);


а сам код вот такой получился:

Код
  // turn on off flashlight
  void Flashlight(){  
   
      if (m_penLight == NULL){

    m_soFlashlight.Set3DParameters(50.0f, 10.0f, 4.0f, 1.0f);
    PlaySound(m_soFlashlight, SOUND_FLASHLIGHT, SOF_3D|SOF_VOLUMETRIC|SOF_LOCAL);

    CPlacement3D pl = GetPlacement(); // получили позицию игрока
    pl.pl_PositionVector(2) += 2.0f; // сдвинули ее чуть повыше, чтобы лайт не был в "земле"

    m_penLight = CreateEntity(pl, CLASS_LIGHT);
        m_penLight->SetParent( this);
     m_penLight->Initialize();

       }
    else {
     m_soFlashlight.Set3DParameters(50.0f, 10.0f, 4.0f, 1.0f);
     PlaySound(m_soFlashlight, SOUND_FLASHLIGHT, SOF_3D|SOF_VOLUMETRIC|SOF_LOCAL);
       m_penLight->Destroy();
         m_penLight = NULL;

      }
  };


Heming_Hitrowski Четверг, 06.10.2016, 12:41 | Сообщение # 2650


Double Jumper
Сообщений: 883
Награды: 32
Замечания: 0%
 
Цитата
(CTrigger*)&*m_penTrigger)->m_strName = "New Trigger";

эта строка вообще никак не влияет, написать можно любой набор букв на месте "New Trigger"


Оно и логично.) Попробуй сам себе объяснить этот код и понять, что он делает. Если не получится, вот спойлер.


Код
m_penLight->SetParent( this);


Эта строчка привязывает лайт к игроку (на манер свойства Parent в Serious Editor). this - это как раз указатель на класс Player. Поэтому лайт движется за игроком) Это конечно грубый способ, но работать будет.
Сообщение отредактировал Heming_Hitrowski - Четверг, 06.10.2016, 13:52


Jack_Stone Четверг, 06.10.2016, 23:32 | Сообщение # 2651


Сообщений: 140
Награды: 1
Замечания: 0%
 
ну теперь то до меня дошло)) хотелось бы теперь узнать, как изменить свойства лайта - яркость и цвет. :)

Добавлено (06.10.2016, 23:29)
---------------------------------------------
я пытался с этим разобраться и очень долго, но никак :(

Добавлено (06.10.2016, 23:32)
---------------------------------------------
и еще у меня какая-то фигня с GameMP.dll, не компилируется, выдает 14 ошибок, может дело в Dependencies? как там галки надо расставить?

Heming_Hitrowski Суббота, 08.10.2016, 14:00 | Сообщение # 2652


Double Jumper
Сообщений: 883
Награды: 32
Замечания: 0%
 
Jack_Stone, в Light.es есть переменная
2 COLOR m_colColor "Color" 'C' =C_GRAY,

Она же отвечает за цвет лайта, и по сути, за его яркость.

COLOR - это тип переменной, он принимает значения в шестнадцатеричной системе счисления (старожилы меня поправят, вообще это тип ULONG, но значения, видимо, для удобства записывают по другому). Но что такое C_GRAY? Это уже определенная в движке константа, смотри, что можно обнаружить, если ты зайдешь в Engine/Graphics/Color.h



Соответственно, лайту можно задать, например, C_WHITE и он будет ярче.
(CLight*)&*penLight)->m_colColor = C_WHITE;

Можно и не пользоваться константами и записать значение самому. Вот как по сути расшифровывается запись цвета: 0xRRGGBBAA. Где RR - это Red, GG - это Green, BB - это Blue и AA - это альфа-канал (для лайта можно оставить 00). Осталось только подставить нужные цифры) Вот как это выглядело бы с белым цветом.

(CLight*)&*penLight)->m_colColor = 0xFFFFFF00;

Могу ошибаться, конечно, нет компилятора под рукой, но должно работать)
Сообщение отредактировал Heming_Hitrowski - Суббота, 08.10.2016, 14:05


Heming_Hitrowski Суббота, 08.10.2016, 14:06 | Сообщение # 2653


Double Jumper
Сообщений: 883
Награды: 32
Замечания: 0%
 
там опять какая-то беда с тегами, скобок в коде в начале должно быть две. ((СLight...
Сообщение отредактировал Heming_Hitrowski - Суббота, 08.10.2016, 14:07


NucaCat Воскресенье, 09.10.2016, 15:23 | Сообщение # 2654


Сообщений: 46
Награды: 2
Замечания: 0%
 
Настроил SDK, вылазит ошибка
G:\MYMOD\Sources\GameMP\stdafx.h(14) : fatal error C1083: Cannot open include file: 'EntitiesMP/Global.h': No such file or directory
Error executing cl.exe.
Поиск по сайту мне не помог, в настройках stdafx стоит create precompiled header, в других местах use precompilled header, компиляция отдельно этого файла дает такую же точно ошибку. Помогите, пожалуйста.


seriously_petr Воскресенье, 09.10.2016, 16:06 | Сообщение # 2655


Сообщений: 446
Награды: 4
Замечания: 0%
 
NucaCat, Global.h генерируется из Global.es компилятором ECC.
При сборке компилятор студии не может найти заголовочный файл и этому могут быть следующие ричины:

- У тебя не собран проект EntitiesMP. Это может быть из-за того что не правильно настроены зависимости проектов. EntitiesMP должен собираться в первую очередь.
- У тебя не правильно указаны пути к Includes в Options->Directories.


NucaCat Воскресенье, 09.10.2016, 17:18 | Сообщение # 2656


Сообщений: 46
Награды: 2
Замечания: 0%
 
seriously_petr, мда похоже что я в глаза долбился, когда настраивал зависимости. Спасибо, чувак

CAHEK Вторник, 11.10.2016, 16:53 | Сообщение # 2657


Сообщений: 794
Награды: 15
Замечания: 0%
 
Ситуация. Я делал мод. Потом был конкурс и я его заморозил. Сейчас я к нему вернулся, но вот у меня при запуске уровня вот такая ошибка выскакивает.
https://yadi.sk/i/jY_7TGSVweRre
З.Ы. Раньше работал на другом компьютере. Потом винт с него переставил в компьютер на котором работаю сейчас.


Всё очень серьёзно.
P.S. Не пишите мне на Email, пишите в Л.С.
Ar2R-devil-PiNKy Вторник, 11.10.2016, 18:38 | Сообщение # 2658


Creative virtuoso
Сообщений: 3123
Награды: 58
Замечания: 
 
А ты точно в той среде открываешь? Ты вроде как с исходниками движка что-то делал.

Мои работы
CAHEK Вторник, 11.10.2016, 19:23 | Сообщение # 2659


Сообщений: 794
Награды: 15
Замечания: 0%
 
Это вылетает при работе в СЕДе, о ошибка явно не СЕДовская.

Всё очень серьёзно.
P.S. Не пишите мне на Email, пишите в Л.С.
SLAwww Вторник, 11.10.2016, 20:19 | Сообщение # 2660


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

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 Вторник, 11.10.2016, 20:22 | Сообщение # 2661


Сообщений: 794
Награды: 15
Замечания: 0%
 
Работаю на 1.10. Вылетает только на моих т.к. кроме моих там больше нет. Это можно классифицировать, как новая игра на движке SE 1.10.

Всё очень серьёзно.
P.S. Не пишите мне на Email, пишите в Л.С.
SLAwww Вторник, 11.10.2016, 22:25 | Сообщение # 2662


Рряа? ^..^
Сообщений: 2398
Награды: 27
Замечания: 0%
 
У тебя последняя стабильная версия кода с гитхаба? Сам собирал в 2013/2015 студии?

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 Среда, 12.10.2016, 13:34 | Сообщение # 2663


Сообщений: 794
Награды: 15
Замечания: 0%
 
Моей версии 2 года. Последняя она или нет, не знаю.

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


Сообщений: 457
Награды: 6
Замечания: 0%
 
Как ей может быть два года, если 1.10 выложили полгода назад?

- My Personal Site -
CAHEK Среда, 12.10.2016, 15:08 | Сообщение # 2665


Сообщений: 794
Награды: 15
Замечания: 0%
 
Тьфу ты. 2 года моему проекту, но на новый движок я сел, действительно пол года назад.

Всё очень серьёзно.
P.S. Не пишите мне на Email, пишите в Л.С.
SLAwww Среда, 12.10.2016, 15:36 | Сообщение # 2666


Рряа? ^..^
Сообщений: 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.
Jack_Stone Четверг, 13.10.2016, 08:04 | Сообщение # 2667


Сообщений: 140
Награды: 1
Замечания: 0%
 
я хочу прописать еще одни автоматные патроны. Сделал по аналогии с Bullets - прописал в PlayerWeapons, AmmoItem, AmmpPack, HUD, но все равно выдает ошибки и пишет это тип патронов не объявлен, а где не понятно. Может я что-то пропустил, где-то еще нужно объявлять их?

seriously_petr Четверг, 13.10.2016, 10:31 | Сообщение # 2668


Сообщений: 446
Награды: 4
Замечания: 0%
 
Jack_Stone, Что не объявлено? Где не объявлено? Так на словах трудно понять что там у тебя происходит, косяк можно допустить где угодно.
Ошибку, которая вылазит при компиляции хотя бы прикладывал бы, а ещё лучше заодно и куски кода где и что ты менял.


Jack_Stone Четверг, 13.10.2016, 14:34 | Сообщение # 2669


Сообщений: 140
Награды: 1
Замечания: 0%
 
Так я не знаю, потому и спрашиваю, может где-то еще нужно прописывать, объявлять новые патроны. потому что с++ ничего не пишет кроме как UNDECLARED, хотя по сути везде где нужно я объявил новую переменную новых патронов - в PlayerWeapons, AmmoItem, AmmpPack, HUD. На счет менял-не менял: я ничего не менял, а просто добавил строки по аналогии с Bullets.

x7 Четверг, 13.10.2016, 16:57 | Сообщение # 2670

Сообщений: 18
Награды: 0
Замечания: 0%
 
Jack_Stone,
Undeclared - это как раз то что и не объявлено. Поэтому тебя и попросили дать скрин этих ошибок или написать так, что именно не объявлено и где, чтобы помочь тебе


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

Статистика