HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > 3d небо из Spirit of HL в SDK2.3
Нужна помощь в доделывании
Страницы (2): [1] 2 »   Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
vitoss
Моделлер

Дата регистрации: Oct 2005
Проживает: (void)
Сообщений: 88
Возраст: 34

Рейтинг



3d небо из Spirit of HL в SDK2.3

Пишу в новую тему, чтобы имелась возможность грамотно редактировать текст.
Ребят, излагаю подробно, как я вставлял 3д небо из спирита в свой мод на базе SDK 2.3. Я конечно полный ноль в программировании, но делаю все предельно аккуратно, и сосредоточенно, параллельно изучая язык C++. Не судите строго.
Наверняка для таких опытных дядек как вы будет не сложно увидеть где я промахнулся, и как довести дело до ума. И когда все заработает, с вашей помощью, из этой темы получится как раз так и хороший, работающий тутор для новичков.
Поехали!

В серверной части:
Идем в effects.cpp и в самом низу добавляем класс:

C++ Source Code:
1
[COLOR=blue]
2
class CEnvSky : public CBaseEntity
3
{
4
public:
5
  void Activate( void );
6
  void Think( void );
7
};
8
 
9
void CEnvSky :: Activate ( void )
10
{
11
  pev->effects |= EF_NODRAW;
12
  pev->nextthink = gpGlobals->time + 1.0;
13
}
14
 
15
extern int gmsgSetSky;
16
 
17
void CEnvSky :: Think ()
18
{
19
  MESSAGE_BEGIN(MSG_BROADCAST, gmsgSetSky, NULL);
20
  WRITE_BYTE(1); // mode
21
  WRITE_COORD(pev->origin.x); // view position
22
  WRITE_COORD(pev->origin.y);
23
  WRITE_COORD(pev->origin.z);
24
  MESSAGE_END();
25
}
26
 
27
LINK_ENTITY_TO_CLASS( env_sky, CEnvSky );

[/COLOR]

затем идем в player.cpp и после строки

C++ Source Code:
int gmsgTeamNames = 0;

Вставляем:

C++ Source Code:
[COLOR=blue]int gmsgSetSky = 0;	[/COLOR]


Далее в том же файле, после строки
C++ Source Code:
gmsgSelAmmo = REG_USER_MSG("SelAmmo", sizeof(SelAmmo));

вставляем:
C++ Source Code:
[color=blue]
gmsgSetSky = REG_USER_MSG( "SetSky", 7 );[/color]


На этом с серверной частью закончено (НАДЕЮСЬ) , компилируем

Идем в Клиентский длл
тут немного побольше копи-пасты

Открываем hud.cpp
находим
C++ Source Code:
//DECLARE_MESSAGE(m_Logo, Logo)
int __MsgFunc_ResetHUD(const char *pszName, int iSize, void *pbuf)
{
  return gHUD.MsgFunc_ResetHUD(pszName, iSize, pbuf );
}

и после этого кода вставляем код для нашего 3д-неба:

C++ Source Code:
[color=blue]int __MsgFunc_SetSky(const char *pszName, int iSize, void *pbuf)
{
  gHUD.MsgFunc_SetSky( pszName, iSize, pbuf );
  return 1;
}[/color]


В этом же файле находим срочку:
C++ Source Code:
HOOK_MESSAGE( Concuss );

и после нее вставляем нашу:
C++ Source Code:
[color=blue]
HOOK_MESSAGE( SetSky );[/color]


Теперь идем в файл hud.h
и перед строчкой:
C++ Source Code:
class CHud


вставляем:
C++ Source Code:
[color=blue]
#define SKY_OFF 0
#define SKY_ON  1 [/color]


в этом же файле, теперь после строки:
C++ Source Code:
int GetNumWidth(int iNumber, int iFlags);

вставляем:
C++ Source Code:
[color=blue]
Vector	m_vecSkyPos;
int		m_iSkyMode; [/color]


дальше, в этом же файле, находим:
C++ Source Code:
int  _cdecl MsgFunc_Concuss( const char *pszName, int iSize, void *pbuf );

и ниже вставляем:
C++ Source Code:
[color=blue]
void _cdecl MsgFunc_SetSky( const char *pszName, int iSize, void *pbuf );
[/color]


теперь идем в файл hud_msg.cpp
находим:
C++ Source Code:
void CHud :: MsgFunc_InitHUD( const char *pszName, int iSize, void *pbuf )
{

и после открывающей скобки ниже добавляем:

C++ Source Code:
[color=blue]
m_iSkyMode = SKY_OFF;[/color]


ДОЛЖНО ПОЛУЧИТЬСЯ:
C++ Source Code:
1
void CHud :: MsgFunc_InitHUD( const char *pszName, int iSize, void *pbuf )
2
{
3
 
4
  m_iSkyMode = SKY_OFF;
5
 
6
  // prepare all hud data
7
  HUDLIST *pList = m_pHudList;
8
 
9
  while (pList)
10
  {
11
    if ( pList->p )
12
      pList->p->InitHUDData();
13
    pList = pList->pNext;
14
  }
15
 
16
  //Probably not a good place to put this.
17
  pBeam = pBeam2 = NULL;
18
}


и после данного кода ниже вставляем:

C++ Source Code:
1
[color=blue]
2
void CHud :: MsgFunc_SetSky( const char *pszName, int iSize, void *pbuf )
3
{
4
  //	CONPRINT("MSG:SetSky");
5
  BEGIN_READ( pbuf, iSize );
6
 
7
  m_iSkyMode = READ_BYTE();
8
  m_vecSkyPos.x = READ_COORD();
9
  m_vecSkyPos.y = READ_COORD();
10
  m_vecSkyPos.z = READ_COORD();
11
}[/color]


На этом пока всё,
уважаемые кодеры, помогите плиз доделать тутор

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

Старое сообщение 28-01-2014 09:39
- За что?
 XaeroX
Crystice Softworks

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

Рейтинг



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


Поиск m_vecSkyPos и m_iSkyMode по клиентскому проекту нашёл только вышеперечисленные строки?
Почему тебя совершенно не смущает, что в переменную m_vecSkyPos что-то записывается, но нигде не читается?

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

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

Старое сообщение 28-01-2014 09:52
-
vitoss
Моделлер

Дата регистрации: Oct 2005
Проживает: (void)
Сообщений: 88
Возраст: 34

Рейтинг



Цитата:
XaeroX писал:
Поиск m_vecSkyPos и m_iSkyMode по клиентскому проекту нашёл только вышеперечисленные строки?
Почему тебя совершенно не смущает, что в переменную m_vecSkyPos что-то записывается, но нигде не читается?

Цитата:
vitoss писал:
Не судите строго.



щас проверю

Добавлено 28-01-2014 в 18:04:

ПРОДОЛЖЕНИЕ

открываем view.cpp
находим
C++ Source Code:
void V_CalcNormalRefdef ( struct ref_params_s *pparams )

и в самый конец
вставляем:
C++ Source Code:
1
[color=blue]
2
if (gHUD.m_iSkyMode == SKY_ON && pparams->nextView == 0)
3
{
4
  pparams->vieworg[0] = gHUD.m_vecSkyPos.x;
5
  pparams->vieworg[1] = gHUD.m_vecSkyPos.y;
6
  pparams->vieworg[2] = gHUD.m_vecSkyPos.z;
7
  pparams->nextView = 1;
8
}
9
[/color]


потом в этом же файле находим
C++ Source Code:
view = gEngfuncs.GetViewModel();

и после нее вставляем:
C++ Source Code:
1
[color=blue]
2
if (gHUD.m_iSkyMode == SKY_ON)
3
{
4
  savedviewmodel = view->model;
5
  view->model = NULL;
6
}
7
[/color]


Компилируем, однако, небо все еще не отображается

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

Старое сообщение 28-01-2014 10:04
- За что?
 XaeroX
Crystice Softworks

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

Рейтинг



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


В общем, ход рассуждений я тебе показал.
Тыкать носом в каждую переменную, которую надо дополнительно "пробить", у меня желания нет. Если у кого есть - you are welcome.

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

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

Старое сообщение 28-01-2014 10:35
-
vitoss
Моделлер

Дата регистрации: Oct 2005
Проживает: (void)
Сообщений: 88
Возраст: 34

Рейтинг



Цитата:
XaeroX писал:
В общем, ход рассуждений я тебе показал.
Тыкать носом в каждую переменную, которую надо дополнительно "пробить", у меня желания нет. Если у кого есть - you are welcome.

Понятное дело
Все равно большое спасибо, Xaerox, за подсказки!

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

Старое сообщение 28-01-2014 11:01
- За что?
vitoss
Моделлер

Дата регистрации: Oct 2005
Проживает: (void)
Сообщений: 88
Возраст: 34

Рейтинг



ВСЕ!! МОЖНО СЧИТАТЬ ТУТОР ЗАКОНЧЕНЫМ И РАБОЧИМ!!!
я просто все это время компилировал cl_dll не в ту папку....


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

Старое сообщение 28-01-2014 17:47
- За что?
Government-Man
Призрак

Дата регистрации: Apr 2006
Проживает: N/A
Сообщений: 3507

Рейтинг



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


В спирите плохое небо - там прострая проекция. Какое небо в новом ксаше не знаю, а вот в "Мести тещи" небо как в HL2 - оно трехмерное и выглядит как часть основной геометрии.

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

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

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

Рейтинг



Цитата:
Government-Man писал:
Какое небо в новом ксаше не знаю

Ты и ксаш-мод то не качал, иначе бы не говорил такого.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

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

Старое сообщение 28-01-2014 19:34
-
Government-Man
Призрак

Дата регистрации: Apr 2006
Проживает: N/A
Сообщений: 3507

Рейтинг



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


Цитата:
Дядя Миша писал:
Ты и ксаш-мод то не качал, иначе бы не говорил такого.


Мод не качал, потому и говорю, что не знаю. Может там тоже хорошее небо. Но тут чувак из спирита небо переносит - оно ж там фейковое.

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

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

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

Рейтинг



Найди границу между небом и реальным уровнем

[ Вложение ]
demo_1_0000.jpg

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

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

Старое сообщение 28-01-2014 19:44
-
vitoss
Моделлер

Дата регистрации: Oct 2005
Проживает: (void)
Сообщений: 88
Возраст: 34

Рейтинг



а что за месть тещи?

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

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

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

Рейтинг



Мод Government-Man, который он пытался выдать за чужой.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

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

Старое сообщение 28-01-2014 20:23
-
Government-Man
Призрак

Дата регистрации: Apr 2006
Проживает: N/A
Сообщений: 3507

Рейтинг



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


Цитата:
Дядя Миша писал:
Мод Government-Man, который он пытался выдать за чужой.


Ну да, ну да. Знаешь, если следовать твоей логике, то мотороллер - тоже того чувака, который объяву разместил.

Цитата:
Дядя Миша писал:
Найди границу между небом и реальным уровнем


А слабо сделать так, чтобы цытадель посреди уровня прямо из земли росла, причем земля была бы уровнем, а цытадель - небом?

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

Старое сообщение 28-01-2014 21:12
- За что?
pRoxxx
Житель форума

Дата регистрации: Jan 2011
Проживает: UA DP
Сообщений: 360
Возраст: 32

Рейтинг



Цитата:
Government-Man писал:
А слабо сделать так, чтобы цытадель посреди уровня прямо из земли росла, причем земля была бы уровнем, а цытадель - небом?

Мне нет.

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

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

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

Рейтинг



Цитата:
Government-Man писал:
Знаешь, если следовать твоей логике, то мотороллер - тоже того чувака, который объяву разместил.

Следственные мероприятия с чуваком проводили? С тобой тоже нет.
Цитата:
Government-Man писал:
А слабо сделать так, чтобы цытадель посреди уровня прямо из земли росла, причем земля была бы уровнем, а цытадель - небом?

Не вижу в этом реальной необходимости, ведь коллидить с такой цитаделью не получится. Идея неба в том, чтобы реалистично рисовать удалённые объекты, до которых нельзя добраться. А если она растёт посреди уровня, то до нее можно добраться и убедиться, что она ненастоящяя. К тому же я не вполне понимаю задумку, небо ведь не пишется в Z-Buffer.

Добавлено 29-01-2014 в 19:46:

Цитата:
pRoxxx писал:
Мне нет.

Ну тебя никто за язык не тянул - делай

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

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

Старое сообщение 29-01-2014 15:46
-
Тема: (Опционально)
Ваш ответ:



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


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

Временная зона GMT. Текущее время 12:14. Новая тема    Ответить
Страницы (2): [1] 2 »   Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > 3d небо из Spirit of HL в SDK2.3
Нужна помощь в доделывании
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

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

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

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

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