HLFX.Ru Forum
Показать все 30 сообщений этой темы на одной странице

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Half-Life SDK (https://hlfx.ru/forum/forumdisplay.php?forumid=8)
-- Хочу сделать ЛЦУ (https://hlfx.ru/forum/showthread.php?threadid=5713)


Отправлено hgrunt_2020 24-08-2021 в 06:44:

Half-Life Хочу сделать ЛЦУ

хочу сделать ЛЦУ для своего мода, но незнаю как, в C++ я новичек, и могу разве что скопировать и вставить


Отправлено илья2 24-08-2021 в 08:12:

что такое ЛЦУ ?

__________________
илья


Отправлено hgrunt_2020 24-08-2021 в 08:29:

илья2 лазерный целеукозатель, лазерный прицел проще говоря

Добавлено 24-08-2021 в 11:29:

илья2 я попробовал сделать ЛЦУ на базе лазера от РПГ, по итогу Рпг ругается на то что лазер уже использован в другом месте


Отправлено илья2 24-08-2021 в 09:00:

уже использован в другом месте-> правильно потому что его надо добавлять ты его добавил ?

Добавлено 24-08-2021 в 11:59:

ладно покажу как добавить если идет редифиншон надо код CLaserSpot найти в weapons.h и как бы добавить ещё один но уже с другим именем например вот так

class CLaserSpot2 : public CBaseEntity
{
void Spawn( void );
void Precache( void );

int ObjectCaps( void ) { return FCAP_DONT_SAVE; }

public:
void Suspend( float flSuspendTime );
void EXPORT Revive( void );

static CLaserSpot2 *CreateSpot2( void );
};

но предварительно все поменять на 2 CLaserSpot2 CreateSpot2 везде в самом лазере

Добавлено 24-08-2021 в 12:00:

надеюсь я помог

__________________
илья


Отправлено hgrunt_2020 24-08-2021 в 09:10:

илья2 а, то есть можно сделать клон laserspot, просто с цифрой 2?! Че я сразу не додумался


Отправлено илья2 24-08-2021 в 09:19:

ну рад помочь

Добавлено 24-08-2021 в 12:19:

если все получилось не мог бы ты скриншот лазера выложить так чтобы убедиться что я помог

__________________
илья


Отправлено hgrunt_2020 24-08-2021 в 09:37:

илья2 хорошо


Отправлено Ku2zoff 24-08-2021 в 09:54:

Цитата:
hgrunt_2020 писал:
можно сделать клон laserspot

C++ Source Code:
LINK_ENTITY_TO_CLASS( laser_spot_2, CLaserSpot );

Вот и всё. ЕМНИП, ракета рпг ищет точку по класснейму. Это как раз для того, чтобы она не гонялась за точкой от другого оружия. Остальное можно оставить как есть, и создавать вторую точку у другого оружия так же как в коде рпг, только насильно присваивать другой класснейм.


Отправлено илья2 24-08-2021 в 10:09:

по мне лучше поменять имя всего лазера

Добавлено 24-08-2021 в 13:09:

вот кстати я сделал лазер и всеволишь 1 минуту потратил и все вот кстати мой скриншот

__________________
илья


Отправлено hgrunt_2020 24-08-2021 в 10:24:

илья2 дай код, у меня не выходит чет


Отправлено илья2 24-08-2021 в 10:28:

ладно я не жадный попробую частями выложить

Добавлено 24-08-2021 в 13:28:

первый файл

__________________
илья


Отправлено илья2 24-08-2021 в 10:38:

второй файл

Добавлено 24-08-2021 в 13:38:

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

__________________
илья


Отправлено hgrunt_2020 24-08-2021 в 10:39:

илья2 отлично! спасибо! все работает, теперь осталось прикрутить смену бодигрупа! дальше я сам


Отправлено hgrunt_2020 24-08-2021 в 10:39:

илья2


Отправлено илья2 24-08-2021 в 10:40:

ну все равно я рад помочь

__________________
илья


Отправлено Aynekko 24-08-2021 в 10:58:

Это легко. А вот кто бы сделал лазер с видимым лучем. У меня не получилось.

__________________
Мой мод на Xash


Отправлено hgrunt_2020 24-08-2021 в 11:03:

илья2 ну и еще маленький вопросик: как поменять цвет этой точки на зеленый?

Добавлено 24-08-2021 в 14:03:

Aynekko это можно уже в модели сделать


Отправлено илья2 24-08-2021 в 11:46:

как поменять цвет этой точки на зеленый?

ну тут уже придется не с кодом возиться а у же в самом спрайте найди laserdot.spr и попробуй его поменять на зеленый но нужна прога которая сами рисунки из спрайтов вытаскивает это уже та самая которую я показал ранее еще потом надо сам спрайт скомпилировать ну во общем попробуй сам разобраться с этой прогой

Добавлено 24-08-2021 в 14:34:

лучше всего для редактирования спрайтов я предлагаю paintnet удобная штука сам ей пользуюсь

Добавлено 24-08-2021 в 14:36:

там еще есть такая функция замудренная она способна как раз сами цвета спрайтов менять

Добавлено 24-08-2021 в 14:46:

ну как то так затратил на это даже меньше минуты для меня просто

__________________
илья


Отправлено hgrunt_2020 24-08-2021 в 11:59:

илья2
Ну а вот мой результат
https://youtu.be/9WrnDWexAVQ


Отправлено илья2 24-08-2021 в 12:13:

у тебя мод прям похож на стиль сталкера

__________________
илья


Отправлено hgrunt_2020 24-08-2021 в 12:14:

илья2 хотя на самом деле мод в стиле метро


Отправлено илья2 24-08-2021 в 12:26:

ну я в метро не играл люблю только в сталкер играть вот и подумал что сталкер. Сталкер и метро прям похожие игры спутать легко

__________________
илья


Отправлено Ku2zoff 27-08-2021 в 12:41:

Цитата:
Aynekko писал:
кто бы сделал лазер с видимым лучем. У меня не получилось.

Я делал его отдельной бодигруппой с texrendermode additive. Но по уму-то надо и правда делать спрайтом, темпэнтитей, чтобы луч обрезался энтитями при пересечении. Я бы взял pEfxAPI->R_BeamPoints за основу. Как раз нужно указать две точки. Начальная - аттачмент вьюмодели, конечная - к примеру, на 40-60 юнитов вперёд в направлении точки стрельбы. Только этому лучу надо ставить флаг FTENT_HIGHPRIORITY (или как он там правильно пишется), чтобы при переполнении массива темпэнтить, луч не удалялся и оставался видимым.

Добавлено 27-08-2021 в 19:41:

Сегодня попробую сделать, вывалю вам в эту тему код, скрин и модифицированную вьмодель рпг, если всё получится.


Отправлено Chyvachok 27-08-2021 в 13:17:

ЛЦУ лучиком есть в Alternative Way, такой что лучом смотрит и водится вместе с анимацией, и как я помню там точка стрельбы вроде меняется на то куда луч смотрит, автор сравнительно недавно писал что доделает кое-как и выложит вместе с кодом, интересно будет глянуть, там много всего интересного в плане кода.


Отправлено Crystallize 27-08-2021 в 13:32:

Самое поразительное здесь что люди с первого раза поняли что такое ЛЦУ


Отправлено Ku2zoff 27-08-2021 в 14:35:

Вот, смотрите, изучайте. Написал очень на скорую руку. Тут, короче, надо получать углы аттачмента по тутору Дяди Миши, чтоб красиво было. Или вообще, рисовать луч и глоу через триапи. Это я попозже сделаю, вместе с кастомными трейсерами, т.к. и там и там лучи. Включать-выключать можно через hl_weapons.cpp, там есть статус лазерной точки. А вообще, очень удобно сделать глоу бодигруппой в модели и выключать прямо на сервере. А на клиенте для включения/отключения луча отлавливать номер pev->body.

C++ Source Code:
1
#include "com_model.h"
2
 
3
TEMPENTITY* pRpgFlare;
4
BEAM* pRpgBeam;
5
 
6
void Game_AddObjects( void )
7
{
8
  if ( pBeam || pBeam2 )
9
    UpdateBeams();
10
 
11
  // новый код
12
  cl_entity_t *vmodel = gEngfuncs.GetViewModel();
13
  if (vmodel && vmodel->model)
14
  {
15
    vec3_t origin, angles, forward, end;
16
    VectorCopy(vmodel->attachment[0], origin);
17
    gEngfuncs.GetViewAngles((float*)angles);
18
    AngleVectors(angles, forward, NULL, NULL);
19
    VectorMA(origin, 256, forward, end);
20
 
21
    if (!stricmp(vmodel->model->name, "models/v_rpg.mdl"))
22
    {
23
      if (!pRpgFlare)
24
        pRpgFlare = gEngfuncs.pEfxAPI->R_TempSprite(vmodel->attachment[0], vec3_origin, 0.2, gEngfuncs.pEventAPI->EV_FindModelIndex("sprites/hotglow.spr"),
25
      kRenderGlow, kRenderFxNoDissipation, 192, gEngfuncs.GetClientTime() + 0.1, FTENT_NONE);
26
 
27
      if (!pRpgBeam)
28
        pRpgBeam = gEngfuncs.pEfxAPI->R_BeamEntPoint(vmodel->index | 0x1000, end, gEngfuncs.pEventAPI->EV_FindModelIndex("sprites/laserbeam.spr"),
29
      1.0, 1.0, 0, 0.5, 0, 0, 0, 255, 0, 0);
30
 
31
      if (pRpgFlare)
32
      {
33
        pRpgFlare->entity.curstate.rendercolor.r = 255;
34
        pRpgFlare->entity.curstate.rendercolor.g = 0;
35
        pRpgFlare->entity.curstate.rendercolor.b = 0;
36
        pRpgFlare->entity.origin = vmodel->attachment[0];
37
        pRpgFlare->die = gEngfuncs.GetClientTime() + 0.1;
38
      }
39
 
40
      if (pRpgBeam)
41
      {
42
        pRpgBeam->source = origin;
43
        pRpgBeam->target = end;
44
        pRpgBeam->die = gEngfuncs.GetClientTime() + 0.1;
45
      }
46
    }
47
    else
48
    {
49
      if (pRpgFlare)
50
      {
51
        pRpgFlare->die = 0.0;
52
        pRpgFlare = NULL;
53
      }
54
      if (pRpgBeam)
55
      {
56
        pRpgBeam->die = 0.0;
57
        pRpgBeam = NULL;
58
      }
59
    }
60
  }
61
}


https://i.imgur.com/Ybw0zHx.jpg

Модель рпг с аттачем в аттаче. Каламбур, однако!


Отправлено BALISTA 27-08-2021 в 16:49:

Я как-то давно копипастил прицел то ли с ксаша, точно не помню. Так у меня laserdot в не зависимости от расстояния был одного размера, что очень удобно.


Отправлено илья2 30-08-2021 в 15:25:

ничего сибе красивый луч получился однако

__________________
илья


Отправлено [CFR] B@N@N 31-08-2021 в 07:58:

Ku2zoff

А лучь виден только от первого лица или другие игроки тож могут ево видить?


Отправлено Ku2zoff 31-08-2021 в 09:06:

Цитата:
Ku2zoff писал:
Вложение: v_rpg.7z (85.0 кб)

Цитата:
Ku2zoff писал:
___if (!stricmp(vmodel->model->name, "models/v_rpg.mdl"))

Только от первого. Я писал чисто на пробу. Собсно, лучи нормально аттачатся. А вот темп-спрайты немного лагают. Код надо переделывать на использование триапи, так будет лучше.


Временная зона GMT. Текущее время 23:53.
Показать все 30 сообщений этой темы на одной странице

На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024