HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > Хочу func_playerclip!
Страницы (2): [1] 2 »   Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
Genesis
Частый гость
Девойс

Дата регистрации: Dec 2007
Проживает: (void)
Сообщений: 46

Рейтинг



Question Хочу func_playerclip!

Мне очень нужно сделать так, чтобы игрок не мог проходить через определенную область, но могли проходить монстры!! Как?

Сообщить модератору | | IP: Записан
Сообщение: 25058

Старое сообщение 15-01-2008 12:42
- За что?
Ku2zoff
Мастер Ёда из Деревни Дуракоф

Дата регистрации: Apr 2007
Проживает: В Деревне дураков
Сообщений: 6749
Возраст: 33

Рейтинг



А монстры не могут проходить через браши с clip-текстурой?

Сообщить модератору | | IP: Записан
Сообщение: 25062

Старое сообщение 15-01-2008 13:42
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32189
Нанёс повреждений: 392 ед.

Рейтинг



Ku2zoff по идее могут, если трасинг правильно настроить.

Сообщить модератору | | IP: Записан
Сообщение: 25064

Старое сообщение 15-01-2008 14:06
-
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34498
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


По-моему не могут, потому что они юзают тоже клиппинг халлс...
Но можно в принципе помудрить и сделать func_playerclip, прописав его действие в pm_shared.c... Это в теории. На практике я не пробовал

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!

Сообщить модератору | | IP: Записан
Сообщение: 25079

Старое сообщение 16-01-2008 03:38
-
Scrama
СССР с интернетом и олигархами!

Дата регистрации: May 2006
Проживает: Прииртышье
Сообщений: 3737

Рейтинг



Награды
 
[1 награда]


Простейший вариант (как маппер говорю): сделать функ_воллтогл NULL-текстурой и включать его от триггера, на который монстры не действуют. Это в том случае, если игрок не идет рядом с монстром. А вообще - плохой тон не пускать игрока куда-то клипом. Дверь придумай, или лифт, куда игрок просто пролезть не сможет вместе с монстром.

__________________
"Злобным гениям не нужна харизма." © Shooter__Andy
"Making stuff for an "old ugly game" can be ten times more fun than grinding on a map for a dull, next-gen title." © Lunaran

Сообщить модератору | | IP: Записан
Сообщение: 25080

Старое сообщение 16-01-2008 08:20
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32189
Нанёс повреждений: 392 ед.

Рейтинг



если уж действительно так хочется - рекомендую изучить pmove.c из второй кваки - там есть подобная фишка.

Сообщить модератору | | IP: Записан
Сообщение: 25083

Старое сообщение 16-01-2008 13:33
-
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34498
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


Вот малость корявое решение, но его можно впоследствии доработать.

Открываем pm_shared.c и после функции PM_AddGravity добавляем функцию:

C++ Source Code:
1
int PM_CheckForPlayerClip( void )
2
{
3
  int			i;
4
  physent_t	*pe;
5
  hull_t		*hull;
6
  int			num;
7
  vec3_t		wishorigin, wishvel, test;
8
 
9
  // Copy movement amounts
10
  float fmove = pmove->cmd.forwardmove;
11
  float smove = pmove->cmd.sidemove;
12
 
13
  VectorNormalize ( pmove->forward );
14
  VectorNormalize ( pmove->right );
15
 
16
  for (i=0 ; i<3 ; i++)       // Determine x and y parts of velocity
17
  {
18
    wishvel[i] = pmove->forward[i]*fmove + pmove->right[i]*smove;
19
  }
20
  wishvel[2] += pmove->cmd.upmove;
21
 
22
  VectorMA (pmove->origin, pmove->frametime, wishvel, wishorigin);
23
 
24
  for ( i = 0; i < pmove->numvisent; i++ )
25
  {
26
    pe = &pmove->visents[i];
27
 
28
    if ( pe->model && (modtype_t)pmove->PM_GetModelType( pe->model ) == mod_brush && pe->sequence == 666 )
29
    {
30
      hull = (hull_t *)pmove->PM_HullForBsp( pe, test );
31
 
32
      if (!hull)
33
        continue;
34
      num = hull->firstclipnode;
35
 
36
      // Offset the test point appropriately for this hull.
37
      VectorSubtract ( wishorigin, test, test);
38
 
39
      // Test the player's hull for intersection with this model
40
      if ( pmove->PM_HullPointContents (hull, num, test) == CONTENTS_EMPTY)
41
        continue;
42
 
43
      //Вот здесь по-хорошему надо бы рассчитать скольжение вдоль модели
44
      //Но мне влом :)
45
      //Поэтому просто зануляем скорость
46
      VectorClear(pmove->velocity);
47
 
48
      return 1;
49
 
50
    }
51
  }
52
 
53
  return 0;
54
}


Находим PM_PlayerMove и после строк
C++ Source Code:
1
g_onladder = 0;
2
// Don't run ladder code if dead or on a train
3
if ( !pmove->dead && !(pmove->flags & FL_ONTRAIN) )
4
{
5
  pLadder = PM_Ladder();
6
  if ( pLadder )
7
  {
8
    g_onladder = 1;
9
  }
10
}

Добавляем
C++ Source Code:
if ( pmove->movetype != MOVETYPE_NOCLIP && PM_CheckForPlayerClip())
  return;  // Can't move


Теперь код собсна энтити, в bmodels.cpp после кода func_monsterclip добавляем:
C++ Source Code:
1
// -------------------------------------------------------------------------------
2
//
3
// Player only clip brush
4
//
5
// -------------------------------------------------------------------------------
6
class CFuncPlayerClip : public CFuncWall
7
{
8
public:
9
  void	Spawn( void );
10
  void	Use( CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value ) {}		// Clear out func_wall's use function
11
};
12
 
13
LINK_ENTITY_TO_CLASS( func_playerclip, CFuncPlayerClip );
14
 
15
void CFuncPlayerClip::Spawn( void )
16
{
17
  CFuncWall::Spawn();
18
  if ( CVAR_GET_FLOAT("showtriggers") == 0 )
19
    pev->effects = EF_NODRAW;
20
  pev->sequence = 666;
21
  pev->solid = SOLID_NOT;
22
}


Компилим и сервер, и клиент.
Коряво тут то, что игрок не скользит вдоль браша, а тупо останавливается. Но мне влом делать это скольжение, слишком сложно и думать надо :)

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!

Сообщить модератору | | IP: Записан
Сообщение: 25093

Старое сообщение 16-01-2008 17:50
-
Scrama
СССР с интернетом и олигархами!

Дата регистрации: May 2006
Проживает: Прииртышье
Сообщений: 3737

Рейтинг



Награды
 
[1 награда]


С другой стороны, Offighost на своей конкурсной карте просто поставил trigger_push в дверном проеме и было вполне сносно. Опять же, плохой это тон - невидимые стены.

__________________
"Злобным гениям не нужна харизма." © Shooter__Andy
"Making stuff for an "old ugly game" can be ten times more fun than grinding on a map for a dull, next-gen title." © Lunaran

Сообщить модератору | | IP: Записан
Сообщение: 25100

Старое сообщение 17-01-2008 02:19
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32189
Нанёс повреждений: 392 ед.

Рейтинг



Scrama триггер_пушами и valve не брезговала.
Обидно это все - зачем не пускать игрока туда, куда очень хочется? все равно ведь врубит ноклип и залетит.

Сообщить модератору | | IP: Записан
Сообщение: 25114

Старое сообщение 17-01-2008 08:31
-
Scrama
СССР с интернетом и олигархами!

Дата регистрации: May 2006
Проживает: Прииртышье
Сообщений: 3737

Рейтинг



Награды
 
[1 награда]


Дядя Миша Вот и я о том же. Над сценарием надо думать заранее, а не решать проблемы по мере их поступления. Что тоже хорошо, но несколько в других обстоятельствах. да разве ж докажешь кому...

__________________
"Злобным гениям не нужна харизма." © Shooter__Andy
"Making stuff for an "old ugly game" can be ten times more fun than grinding on a map for a dull, next-gen title." © Lunaran

Сообщить модератору | | IP: Записан
Сообщение: 25118

Старое сообщение 17-01-2008 10:14
- За что?
Genesis
Частый гость
Девойс

Дата регистрации: Dec 2007
Проживает: (void)
Сообщений: 46

Рейтинг



Вы не знаете зачем мне это надо, а объяснять вам бестолку.

Сообщить модератору | | IP: Записан
Сообщение: 25127

Старое сообщение 17-01-2008 12:10
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32189
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
Вы не знаете зачем мне это надо, а объяснять вам бестолку.

Ну значит и не жди внятных ответов.

Сообщить модератору | | IP: Записан
Сообщение: 25134

Старое сообщение 17-01-2008 12:49
-
Genesis
Частый гость
Девойс

Дата регистрации: Dec 2007
Проживает: (void)
Сообщений: 46

Рейтинг



Я внятно задал вопрос, как сделать чтобы игрок не мог пройти через определенную зону, а монстр мог? Ты совсем тупой да???

Сообщить модератору | | IP: Записан
Сообщение: 25136

Старое сообщение 17-01-2008 13:16
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34498
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


Genesis я тебе написал вариант, что не устраивает? не нравится, что игрок не скользит - бери и сам дорабатывай, не умеешь - пользуйся тем, что другие сделали. А хватит хамить, как последнее быдло!

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!

Сообщить модератору | | IP: Записан
Сообщение: 25137

Старое сообщение 17-01-2008 14:33
-
Genesis
Частый гость
Девойс

Дата регистрации: Dec 2007
Проживает: (void)
Сообщений: 46

Рейтинг



Я не умею кодить. ВСЁ!!

Сообщить модератору | | IP: Записан
Сообщение: 25141

Старое сообщение 17-01-2008 14:40
- За что?
Тема: (Опционально)
Ваш ответ:



Переводчик транслита


[проверить длину сообщения]
Опции: Автоматическое формирование ссылок: автоматически добавлять [url] и [/url] вокруг интернет адресов.
Уведомление по E-Mail: отправить вам уведомление, если кто-то ответил в тему (только для зарегистрированных пользователей).
Отключить смайлики в сообщении: не преобразовывать текстовые смайлики в картинки.
Показать подпись: добавить вашу подпись в конец сообщения (только зарегистрированные пользователи могут иметь подписи).

Временная зона GMT. Текущее время 08:53. Новая тема    Ответить
Страницы (2): [1] 2 »   Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > Хочу func_playerclip!
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

Быстрый переход:
Оцените эту тему:

Правила Форума:
Вы not можете создавать новые темы
Вы not можете отвечать в темы
Вы not можете прикреплять вложения
Вы not можете редактировать ваши сообщения
HTML Код ВЫКЛ
vB Код ВКЛ
Смайлики ВКЛ
[IMG] Код ВКЛ
 

< Обратная связь - HLFX.ru >

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