HLFX.Ru Forum Страницы (2): [1] 2 »
Показать все 19 сообщений этой темы на одной странице

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- SOHL Custom Build (https://hlfx.ru/forum/forumdisplay.php?forumid=15)
-- Переключение оружия в Спирите (https://hlfx.ru/forum/showthread.php?threadid=539)


Отправлено MSteam 12-02-2007 в 13:34:

Переключение оружия в Спирите

Здравствуйте, ув. форумчане. Не знаю были, ли такие вопросы, но я ничего подобного так и не нашел.

Начиная с версии 1.4, в спирите теперь оружие выбираеться с некоторой задержкой, и в это время стрелять нельзя. Мне это нововведение несколько не по душе, но я не знаю что конкретно надо редактировать.

Как сделать так, что б всё было по-старому?


Отправлено Дядя Миша 12-02-2007 в 14:52:

MSteam все просто. У каждой пушки в функции Holster есть переменная m_flHolsterTime или что-то вроде этого. Достаточно это время поставить (для каждой пушки) равным нулю и все вернется на круги своя.


Отправлено MSteam 12-02-2007 в 19:57:

Дядя Миша, спасибо.
Называлось оно правда
m_pPlayer->m_flNextAttack = UTIL_WeaponTimeBase() + 0.0;

О, еще вопрос:

В player.cpp, есть следуйщее:

C++ Source Code:
1
void CBasePlayer::Spawn( void )
2
{
3
  //	ALERT(at_console, "PLAYER spawns at time %f\n", gpGlobals->time);
4
 
5
  pev->classname		= MAKE_STRING("player");
6
  [B]pev->health			= 100;[/B]
7
  pev->armorvalue		= 0;
8
  pev->takedamage		= DAMAGE_AIM;

Выделенное жирным - здоровье. Будет ли для меня очень сложной вещью сменить этот параметр прямо в игре, с помощью ентити?


Отправлено XaeroX 12-02-2007 в 20:19:

MSteam да вроде можно свободно менять. В спирите есть для этого trigger_changevalue

__________________

xaerox on Vivino


Отправлено MSteam 12-02-2007 в 21:03:

XaeroX, энтити, конечно есть, но параметры:

Entity to affect
Keyname to change
New value set

Ввели меня в заблуждение. Пробовал первому задавать значание player, а второму нужное здоровье, но при активации ничего не произошло... Как ею пользоваться-то?


Отправлено Дядя Миша 12-02-2007 в 21:55:

MSteam а никак. Trigger_changevalue - чистая фикция и работает на 5% всех энтить.
а чтобы менять здоровье игрока есть замечательная энтить, называется trigger_hurt


Отправлено XaeroX 13-02-2007 в 08:26:

Дядя Миша она выше 100 поднять не может.
MSteam сделай так, чтобы она активировалась от триггера игроком, и в поле "Entity to affect" напиши "*locus". Кажется, так.

__________________

xaerox on Vivino


Отправлено MSteam 13-02-2007 в 15:46:

Увы, не помогло.


Отправлено XaeroX 13-02-2007 в 17:16:

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

__________________

xaerox on Vivino


Отправлено MSteam 13-02-2007 в 21:13:

XaeroX
Спасибо, что захотел помочь=)
Ну значит так. Допустим у игрока с начала игры максимально 100 жизней.
Потом с ним чё-то просходит, он пересекает опредёленный триггер, и у него уже максимально может быть 110. Или 50 например.
Не важно, главное что б во время игры можно было изменить максимальное значение...

Хотя было б интересно как это и с бронёй делать, но это уже не так важно.


Отправлено XaeroX 14-02-2007 в 06:03:

MSteam
Сделай простенькую энтитю. Вот так, например:

C++ Source Code:
1
class CPlayerDataModifyTrigger : public CBaseDelay
2
{
3
public:
4
  void Use( CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value );
5
};
6
 
7
LINK_ENTITY_TO_CLASS( player_modify, CPlayerDataModifyTrigger );
8
 
9
void CPlayerDataModifyTrigger::Use( CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value )
10
{
11
  CBaseEntity *pPlayer;
12
 
13
  if (pActivator->IsPlayer())
14
    pPlayer = pActivator;
15
  else
16
    pPlayer = UTIL_PlayerByIndex(1);
17
 
18
  if ( pPlayer )
19
  {
20
    pPlayer->pev->health = pev->health;
21
    pPlayer->pev->armorvalue = pev->armorvalue;
22
  }
23
}

__________________

xaerox on Vivino


Отправлено MSteam 14-02-2007 в 19:18:

Спасибо работает. Правда максимальное значение всё-равно остаётся 100.
Тоесть, если поставить 80 - можно вылечить до 100.
Если 180 - лечится нельзя, пока не будет меньше 100. И выличитьтся тоже можно только до 100.

Хотя, всё-равно спасибо=)


Отправлено Дядя Миша 14-02-2007 в 19:39:

MSteam в самом игроке есть ограничитель, который не дает поставить здоровье выше ста.
Ищи дефайн MAX_HEALTH.


Отправлено MSteam 15-02-2007 в 01:23:

Дядя Миша, в player.cpp в функции Спавн, нашел строчку:

C++ Source Code:
pev->max_health		= pev->health;

Если мне правильно подсказывает логика, то изменяя одно, должно изменятся и другое...%)
Почему же этого не происходит?=(

Добавлено сегодня в 03:51:

Ага, всё, разобрался. Оно берёт начальное значение.
Буду менять той-же ентитей, с новым параметром.

Дядя Миша и XaeroX, спасибо!

Добавлено сегодня в 04:23:

Эм... Надеюсь, я не слишьком надоел, но у меня еще вопрос:

В клиенте, есть файл cl_until.h, в котором задаётся цвет худа:

C++ Source Code:
1
inline void UnpackRGB(int &r, int &g, int &b, unsigned long ulRGB)\
2
{\
3
r = (ulRGB & 0xFF0000) >>16;\
4
g = (ulRGB & 0xFF00) >> 8;\
5
b = ulRGB & 0xFF;\
6
}


На ресурсе ВЕРК, был тутор где рекомендовалось замнить эту ф-ю на:

C++ Source Code:
1
inline void UnpackRGB(int &r, int &g, int &b, unsigned long ulRGB)
2
{
3
  if ( ulRGB == RGB_YELLOWISH )
4
  {
5
    r = CVAR_GET_FLOAT( "hud_red" );
6
    g = CVAR_GET_FLOAT( "hud_green" );
7
    b = CVAR_GET_FLOAT( "hud_blue" );
8
  }
9
  else
10
  {
11
    r = (ulRGB & 0xFF0000) >>16;
12
    g = (ulRGB & 0xFF00) >> 8;
13
    b = ulRGB & 0xFF;
14
  }
15
}


Таким, образом я иогу менять цвет худа из косоли, такими коммандами как hud_red и т.д.

Но как мне сделать такую этнтити, которая бы меняла худ, по её активации, и самое главное, не заносила этого в конфиг?

Просто я уже делал такую чтуку, но она просто отправляла значения Ред, Грин, Блу в консоль, и при следуйщем старте игры, худ был такой, как в последний раз=(
Я хочу так-же иметь возможность задавать временный цвет, т.е. при след. запуске игры, он снова будет жёлтый...


Отправлено XaeroX 15-02-2007 в 04:31:

Когда регистрируешь cvar_t, не указывай FCVAR_ARCHIVE, и она не будет писаться в конфиг

__________________

xaerox on Vivino


Временная зона GMT. Текущее время 20:23. Страницы (2): [1] 2 »
Показать все 19 сообщений этой темы на одной странице

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