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
Возраст: 32

Рейтинг



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
Проживает: Торонто
Сообщений: 32403
Нанёс повреждений: 501 ед.
Возраст: 34

Рейтинг



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


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

__________________
"It's a friend of mine - a Cheshire Cat," said Alice: "allow me to introduce it."
"I don't like the look of it at all," said the King: "however, it may kiss my hand if it likes."
"I'd rather not," the Cat remarked.

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

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

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

Рейтинг



Цитата:
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
Проживает: Торонто
Сообщений: 32403
Нанёс повреждений: 501 ед.
Возраст: 34

Рейтинг



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


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

__________________
"It's a friend of mine - a Cheshire Cat," said Alice: "allow me to introduce it."
"I don't like the look of it at all," said the King: "however, it may kiss my hand if it likes."
"I'd rather not," the Cat remarked.

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

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

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

Рейтинг



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

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

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

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

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

Рейтинг



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


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

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

Дата регистрации: Apr 2006
Проживает: джунгли
Сообщений: 3479
Возраст: 29

Рейтинг



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


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

__________________
Vladimir Putin's paternal grandfather, Spiridon Ivanovich Putin (1879–1965), was employed at Vladimir Lenin's dacha at Gorki as a cook, and after Lenin's death in 1924, he continued to work for Lenin's wife, Nadezhda Krupskaya. He would later cook for Joseph Stalin when the Soviet leader visited one of his dachas in the Moscow region. Spiridon later was employed at a dacha belonging to the Moscow City Committee of the Communist Party of the Soviet Union, at which the young Putin would visit him.

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

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

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

Рейтинг



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

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

__________________
My Projects: download page

Блог разработчика на boosty.to
Блог разработчика в телеграме

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

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

Дата регистрации: Apr 2006
Проживает: джунгли
Сообщений: 3479
Возраст: 29

Рейтинг



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


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


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

__________________
Vladimir Putin's paternal grandfather, Spiridon Ivanovich Putin (1879–1965), was employed at Vladimir Lenin's dacha at Gorki as a cook, and after Lenin's death in 1924, he continued to work for Lenin's wife, Nadezhda Krupskaya. He would later cook for Joseph Stalin when the Soviet leader visited one of his dachas in the Moscow region. Spiridon later was employed at a dacha belonging to the Moscow City Committee of the Communist Party of the Soviet Union, at which the young Putin would visit him.

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

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

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

Рейтинг



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

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

__________________
My Projects: download page

Блог разработчика на boosty.to
Блог разработчика в телеграме

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

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

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

Рейтинг



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

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

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

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

Рейтинг



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

__________________
My Projects: download page

Блог разработчика на boosty.to
Блог разработчика в телеграме

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

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

Дата регистрации: Apr 2006
Проживает: джунгли
Сообщений: 3479
Возраст: 29

Рейтинг



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


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


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

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


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

__________________
Vladimir Putin's paternal grandfather, Spiridon Ivanovich Putin (1879–1965), was employed at Vladimir Lenin's dacha at Gorki as a cook, and after Lenin's death in 1924, he continued to work for Lenin's wife, Nadezhda Krupskaya. He would later cook for Joseph Stalin when the Soviet leader visited one of his dachas in the Moscow region. Spiridon later was employed at a dacha belonging to the Moscow City Committee of the Communist Party of the Soviet Union, at which the young Putin would visit him.

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

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

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

Рейтинг



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

Мне нет.

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

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

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

Рейтинг



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

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

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

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

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

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

__________________
My Projects: download page

Блог разработчика на boosty.to
Блог разработчика в телеграме

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

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



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


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

Временная зона GMT. Текущее время 00:42. Новая тема    Ответить
Страницы (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 - 2021