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

Сообщений: 18
Награды: 0
Замечания: 0%
 
Она начинает подглючивать когда подходишь к брашам, когда меняется обзор. Копировал с 1.07 файлы не помогло. что-то похожее на полёт да, но при этом, всё так же пытается быть привязанной к игроку

Jack_Stone Воскресенье, 11.09.2016, 23:09 | Сообщение # 2612


Сообщений: 140
Награды: 1
Замечания: 0%
 
Как сделать в SE так, чтобы цвет патронов вообще не менялся?

Добавлено (10.09.2016, 07:13)
---------------------------------------------
а еще у здоровья и брони

Добавлено (10.09.2016, 07:45)
---------------------------------------------
подскажите, плиз, еще код цвета как, например, у списка игроков в мп. он синий, но тональность определить не могу

Добавлено (11.09.2016, 23:09)
---------------------------------------------
как изменить положение точки "вылета" огня у огнемета?

x7 Понедельник, 12.09.2016, 15:14 | Сообщение # 2613

Сообщений: 18
Награды: 0
Замечания: 0%
 
http://www.serioussite.ru/publ....1-0-212

Jack_Stone Вторник, 13.09.2016, 17:05 | Сообщение # 2614


Сообщений: 140
Награды: 1
Замечания: 0%
 
спасибо >(

x7 Понедельник, 19.09.2016, 13:14 | Сообщение # 2615

Сообщений: 18
Награды: 0
Замечания: 0%
 
Какой класс у рыбы? Когда пишу CLASS_FISH. Он пишет Error C2065 'CLASS_FISH': undeclared identifier

Jack_Stone Вторник, 27.09.2016, 21:46 | Сообщение # 2616


Сообщений: 140
Награды: 1
Замечания: 0%
 
как сделать так, чтобы при выстреле в Headman`а он не отлетал?

Heming_Hitrowski Вторник, 27.09.2016, 22:12 | Сообщение # 2617


Double Jumper
Сообщений: 883
Награды: 32
Замечания: 0%
 
Jack_Stone, у каждого врага примерно в самом начале класса есть структура, у хедмена это кажется eiHeadman. Где то там есть и вес, который можно сделать побольше.
Сообщение отредактировал Heming_Hitrowski - Вторник, 27.09.2016, 22:13


x7 Вторник, 27.09.2016, 22:17 | Сообщение # 2618

Сообщений: 18
Награды: 0
Замечания: 0%
 
Jack_Stone, Нужно увеличить его массу, отредактировав файл Headman.es
Найдя там строки
static EntityInfo eiHeadman = {
EIBT_FLESH, 100.0f,
0.0f, 1.9f, 0.0f,
0.0f, 1.0f, 0.0f,
};
И заменив 100.0f на что-то поболее, например 500.0f


Jack_Stone Среда, 28.09.2016, 23:45 | Сообщение # 2619


Сообщений: 140
Награды: 1
Замечания: 0%
 
Ребята, спасибо :)

Добавлено (28.09.2016, 23:45)
---------------------------------------------
Как добавить фонарик?) если это не секрет, конечно)

ST27 Среда, 28.09.2016, 23:54 | Сообщение # 2620


Сообщений: 457
Награды: 6
Замечания: 0%
 
Самый простой способ: телепортировать каждый тик определенный ambient-light на m_vRayHit из PlayerWeapons

- My Personal Site -
Jack_Stone Четверг, 29.09.2016, 06:53 | Сообщение # 2621


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

ST27 Четверг, 29.09.2016, 09:06 | Сообщение # 2622


Сообщений: 457
Награды: 6
Замечания: 0%
 
Есть у тебя на карте какой-нибудь Light типа Ambient с радиусом, скажем, 8. Ты каждый тик (например в функции RenderGameView в Player) телепортируешь этот специальный лайт (который нужно еще назначить в свой собственный специальный CEntityPointer) на координаты переменной m_vRayHit, которая находится уже в PlayerWeapons и которую внутри Player можно получить как: GetPlayerWeapons()->m_vRayHit.
Телепортировать, естественно, функцией Teleport(CPlacement3D, FALSE) - (На место CPlacement3D пишешь "CPlacement3D(GetPlayerWeapons()->m_vRayHit, ANGLE3D(0,0,0))", на место FALSE - так же FALSE) - второй аргумент функции отвечает за телефраг, который нам не нужен и мы естественно его отключаем


- My Personal Site -
Jack_Stone Четверг, 29.09.2016, 19:30 | Сообщение # 2623


Сообщений: 140
Награды: 1
Замечания: 0%
 
Я опять ничего не понял, но всё равно спасибо :) Какая связь между фонариком и PlayerWeapons ? и где находится CEntityPointer?

ST27 Пятница, 30.09.2016, 00:30 | Сообщение # 2624


Сообщений: 457
Награды: 6
Замечания: 0%
 
Не умеешь в базовые вещи - твои проблемы

- My Personal Site -
Kadath Пятница, 30.09.2016, 06:10 | Сообщение # 2625


Son of Anubis
Сообщений: 2517
Награды: 24
Замечания: 0%
 
Можно использовать и PlayerParenter, в крайнем случае. Фиговый, но фонарик.

Мои работы
DeadKadath's Showcase
Ar2R-devil-PiNKy Пятница, 30.09.2016, 11:01 | Сообщение # 2626


Creative virtuoso
Сообщений: 3123
Награды: 58
Замечания: 
 
Цитата Kadath ()
Можно использовать и PlayerParenter, в крайнем случае. Фиговый, но фонарик.

Его эффективнее для Фальшфейера :D


Мои работы
Jack_Stone Суббота, 01.10.2016, 22:47 | Сообщение # 2627


Сообщений: 140
Награды: 1
Замечания: 0%
 
Народ, объясните кто нибудь, как сделать фонарь, ну конечно кому не сложно. Я вижу, что несколько людей точно знают, как это делается. Это ведь форум, и форум для того и нужен, чтобы задавать вопросы и получать на них нормальные ответы, а не ответы типа "Не умеешь в базовые вещи - твои проблемы". если я не прав, то так и скажите.

Kadath Воскресенье, 02.10.2016, 08:10 | Сообщение # 2628


Son of Anubis
Сообщений: 2517
Награды: 24
Замечания: 0%
 
Мой способ совсем не касается SDK. Надо скачать новый класс PlayerParenter отсюдова и прицепить в редакторе к игроку источник света. Необходимо настроить правильное положение источника света (можно даже несколько припэрентить). Фонарик можно будет включать от триггера в любой момент, но единственный минус такого способа в том, что PlayerParenter резко реагирует на повороты игрока, да и на движение в целом. Но в качестве дешманского фонаря для поиска картохи в погребе сойдет.

Мои работы
DeadKadath's Showcase
Jack_Stone Воскресенье, 02.10.2016, 11:55 | Сообщение # 2629


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

Добавлено (02.10.2016, 11:55)
---------------------------------------------
этого, я так понимаю, PlayerParenter не предусматривает?

Kadath Воскресенье, 02.10.2016, 13:19 | Сообщение # 2630


Son of Anubis
Сообщений: 2517
Награды: 24
Замечания: 0%
 
Jack_Stone, включается триггером. Если хочешь от кнопки на клавиатуре, можно сделать с SDK такую ентитю, которая отлавливает нажатия определённых клавиш и посылает сигнал триггеру, которой в свою очередь активирует PlayerParanter. Тут я не смогу помочь, к сожалению.

Мои работы
DeadKadath's Showcase
Heming_Hitrowski Воскресенье, 02.10.2016, 13:21 | Сообщение # 2631


Double Jumper
Сообщений: 883
Награды: 32
Замечания: 0%
 
Jack_Stone, один из способов, как можно сделать фонарь.

1) CEntityPointer - это указатель на энтити. Я уверен, что ты видел поле Target у Trigger. Так вот, это тоже самое. Абстрактно будем говорить, что это объект в игре.

В Serious Sam есть объекты, которые могут освещать местность. Например, если пустить ракету в темном помещении, то можно заметить её небольшое свечение. Я предлагаю сделать тот же самый способ, нашей целью будет создать такой Projectile, который будет сам по себе невидим, но у него будет свет.

2) Почему надо лезть в PlayerWeapons. Дело в том, что в этом классе есть луч, который бьет прямо из игрока (примерно говорю, знатоки поправят меня), в место, куда направлен его прицел. Например, переменная m_vRayHit хранит в себе координаты того места, куда "ударил" этот луч. Чем это может нам помочь? Например, можно относительно этого луча телепортировать тот самый светящийся Projectilе, в итоге получаем освещение местности в зависимости от направления взгляда.

2.5) Создай какой-нибудь Projectile по аналогии со, скажем, PRT_ROCKET. Сделай так, чтобы он светился, модель была не видна и чтоб время жизни было очень-очень долгим.

3) Как заспавнить этот Projectile в коде и где это сделать?

Для начала надо объявить кнопку. Идем в Player.es. Я возьму в качестве аналогии кнопку bFireBomb, которая отвечает за запуск серьезной бомбы.

После строки 314 добавь
Код
  BOOL bFlashlight;

После строки 544 добавь
Код
  if(pctlCurrent.bFlashlight)      paAction.pa_ulButtons |= PLACT_FLASHLIGHT;

После строки 720 добавь
Код
_pShell->DeclareSymbol("user INDEX ctl_bFlashlight;",             &pctlCurrent.bFlashlight);


И самый важный шаг. На строке 257 найдешь вот такую конструкцию:
Код
#define PLACT_FIREBOMB            (1L<<13)
#define PLACT_SELECT_WEAPON_SHIFT (14)


Поменяй ее на
Код
#define PLACT_FIREBOMB            (1L<<13)
#define PLACT_FLASHLIGHT          (1L<<14)
#define PLACT_SELECT_WEAPON_SHIFT (15)


Все, практически готово.
Теперь идешь на строку 4492.
Видишь, как там реализован запуск бомбы. Делаешь примерно тоже самое:

Код
if (ulNewButtons&PLACT_FLASHLIGHT) {
// здесь будет код по нажатию кнопки связанной с фонарем
}


Далее, естественно, надо зайти в .ctl файл в папке Controls в самом Serious Sam и прописать по аналогии кнопку с Flashlight.
Данная кнопка будет работать корректно и по сети :)

Определились где заспавнить. Теперь КАК заспавнить какую-либо энтити.

Возьмем пример: нам нужно чтобы в мире появился Trigger. Прежде всего создай глобальную переменную в PlayerWeapons, пусть она объявляется, например, так:
Код
400 CEntityPointer m_penTrigger,


Вот как ее можно инициализировать:

Код
m_penTrigger = CreateEntity(GetPlacement(), CLASS_TRIGGER);
m_penTrigger->Initialize();


Это самый простой способ инициализации. У нас создается стандартный Trigger на том месте, где мы стоим (GetPlacement()). Вот, например, более сложный.

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

Таким образом, ты можешь уточнять, какой именно Trigger ты хочешь заспавнить.

Теперь, зная как спавнить определенные объекты, загляни в функцию FireRocket в PlayerWeapons.
Посмотри как там спавнится снаряд. Сделай свою функцию для включения и выключения фонарика в PlayerWeapons. Вот пример.

Код
void SetFlashlight() {
  if (!m_bFlashlight) {
     // m_penFlashlight = CreateEntity...
     m_bFlashlight = TRUE;
  } else {
     if (m_penFlashlight != NULL) {
         m_penFlashlight->Destroy(); // уничтожим Projectile
     } else {
       CPrintF("Ошибка при уничтожении фонарика\n");
     }
     m_bFlashlight = FALSE;
  }
}


Примерно так. Все описывать я задолбаюсь, это можно статью накатать уже :D
Сообщение отредактировал Heming_Hitrowski - Воскресенье, 02.10.2016, 13:25


Jack_Stone Воскресенье, 02.10.2016, 16:14 | Сообщение # 2632


Сообщений: 140
Награды: 1
Замечания: 0%
 
Heming_Hitrowski, а что именно тут прописать?
[/code]if (ulNewButtons&PLACT_FLASHLIGHT) {
// здесь будет код по нажатию кнопки связанной с фонарем
}

Добавлено (02.10.2016, 16:14)
---------------------------------------------
я попробовал что то прописать, у меня много undeclared получилось

Heming_Hitrowski Воскресенье, 02.10.2016, 18:26 | Сообщение # 2633


Double Jumper
Сообщений: 883
Награды: 32
Замечания: 0%
 
Jack_Stone, undeclared - необъявленный. Ых, вот так вот без азов я тебе вряд ли что-то объясню... Почитай про переменные в языках программирования и про их объявление.

Jack_Stone Воскресенье, 02.10.2016, 18:36 | Сообщение # 2634


Сообщений: 140
Награды: 1
Замечания: 0%
 
Heming_Hitrowski, у меня что-то получилось. вместо фонаря получилась кнопка суицида, как в Постал 2. не знаю, почему так. Но взрывчатость я вроде удалил - m_bExplode у нового проджектайла PlayerFlashlight.

SLAwww Воскресенье, 02.10.2016, 20:28 | Сообщение # 2635


Рряа? ^..^
Сообщений: 2398
Награды: 27
Замечания: 0%
 
Вот, работает без изменений в PlayerWeapons, хоть написано не лучшим образом. Включается/выключается start/stop eventами.
Прикрепления: Flashlight.es (5.9 Kb)


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 Понедельник, 03.10.2016, 09:49 | Сообщение # 2636


Сообщений: 140
Награды: 1
Замечания: 0%
 
Heming_Hitrowski, у меня получилось сделать включение фонаря, только телепортируется не модель (Projectile), как ты предлагал, а Light. Всё как надо светится. Но не получается ничего с выключением света. Есть функция Destroy, которой вроде как и можно удалить этот Light - в моём случае m_penLight - но она почему то не помогает.

Добавлено (03.10.2016, 09:49)
---------------------------------------------

Код
  // turn on off flashlight
  void Flashlight(){  
   
      if (m_penLight == NULL){
    CEntityPointer m_penLight = CreateEntity(GetPlacement(), CLASS_LIGHT);
       m_aoLightAnimation.SetData_t(CTFILENAME("Animations\\Flashlight.ani"));
    m_penLight->Initialize();
       }
    else if (m_penLight != NULL){

        m_penLight = NULL;
      m_penLight->Destroy();
      }

  };


ST27 Понедельник, 03.10.2016, 10:04 | Сообщение # 2637


Сообщений: 457
Награды: 6
Замечания: 0%
 
Цитата Jack_Stone ()
m_penLight = NULL;
m_penLight->Destroy();

Ты же сначала убираешь свой фонарик из переменной, а потом хочешь заставить его что-то сделать. Поменяй строки местами, а то выходит, что ты уничтожаешь ничто.


- My Personal Site -
Jack_Stone Понедельник, 03.10.2016, 10:26 | Сообщение # 2638


Сообщений: 140
Награды: 1
Замечания: 0%
 
не помогло.

ST27 Понедельник, 03.10.2016, 10:47 | Сообщение # 2639


Сообщений: 457
Награды: 6
Замечания: 0%
 
Цитата Jack_Stone ()
CEntityPointer m_penLight

А, ну да. Что это такое? У тебя же, я так понимаю, переменная уже в свойствах определена, зачем ее снова определять как CEntityPointer?


- My Personal Site -
Ar2R-devil-PiNKy Понедельник, 03.10.2016, 11:21 | Сообщение # 2640


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

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

Статистика