HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Разработка игр > Наши проекты > Сингл-мод про бабу-робота
Страницы (2): [1] 2 »   Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
pRoxxx
Житель форума

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

Рейтинг



[Кодинг] Создание env_fog.

Итак это мой первый тутор.
И первые эксперементы с OpenGL.

Клиентская часть:
Создаем наш хидер файл fog.h
в него вносим:

C++ Source Code:
1
#ifndef __FOG_H__
2
#define __FOG_H__
3
 
4
 
5
 
6
struct cl_fog
7
{
8
  bool m_Fog;
9
  float density;
10
  float startfog;
11
  float endfog;
12
  float red;
13
  float green;
14
  float blue;
15
 
16
};
17
 
18
 
19
#endif


Далее идем в hud.h и под
C++ Source Code:
int  _cdecl MsgFunc_Concuss( const char *pszName, int iSize, void *pbuf );


Вставим:
C++ Source Code:
int  _cdecl MsgFunc_Fog( const char *pszName, int iSize, void *pbuf );


Далее лезем в hud.cpp
инклудим
C++ Source Code:
#include <gl/glut.h>
#include "fog.h"


спускаемся вниз и под
C++ Source Code:
1
int __MsgFunc_GameMode(const char *pszName, int iSize, void *pbuf )
2
{
3
  return gHUD.MsgFunc_GameMode( pszName, iSize, pbuf );
4
}


вставляем:

C++ Source Code:
1
int __MsgFunc_Fog(const char *pszName, int iSize, void *pbuf )
2
{
3
  return gHUD.MsgFunc_Fog( pszName, iSize, pbuf );
4
}


спускаемся до
C++ Source Code:
void CHud :: Init( void )
{


и вставляем в тело функции:
C++ Source Code:
HOOK_MESSAGE( Fog );


Дальше в спускаемся в самый низ и в конце файла вставляем:
C++ Source Code:
1
extern cl_fog Fog;
2
int CHud::MsgFunc_Fog(const char *pszName,  int iSize, void *pbuf)
3
{
4
  BEGIN_READ( pbuf, iSize );
5
 
6
  int mode = READ_BYTE();
7
  if(mode)
8
  {
9
    Fog.m_Fog = true;
10
    Fog.density = READ_COORD();
11
    Fog.startfog = READ_COORD();
12
    Fog.endfog = READ_COORD();
13
    Fog.red = (float)READ_BYTE() / 255.0;
14
    Fog.green = (float)READ_BYTE() / 255.0;
15
    Fog.blue = (float)READ_BYTE() / 255.0;
16
 
17
  }
18
  else
19
  {
20
    Fog.m_Fog = false;
21
    glDisable(GL_FOG);
22
 
23
  }
24
 
25
  return 1;
26
}


Переходим в tri.cpp
Инклудим:
C++ Source Code:
#include <gl/glut.h>
#include "fog.h"


Идем к
C++ Source Code:
void DLLEXPORT HUD_DrawTransparentTriangles( void )
{


вставляем над функцией
C++ Source Code:
extern cl_fog Fog;

и в тело функции:
C++ Source Code:
1
if(Fog.m_Fog && Fog.startfog > 0.0 && Fog.endfog > 0.0)
2
{
3
  float fogcolor[4]={Fog.red, Fog.green, Fog.blue, 1};
4
  glEnable(GL_FOG);
5
  glFogf(GL_FOG_DENSITY, Fog.density);
6
  glFogi(GL_FOG_MODE, GL_LINEAR);
7
  glFogfv(GL_FOG_COLOR, fogcolor);
8
  glFogf(GL_FOG_START, Fog.startfog);
9
  glFogf(GL_FOG_END, Fog.endfog);
10
  glHint(GL_FOG_HINT, GL_NICEST);
11
}


Далее идем в cldll_int.cpp
Иклудим:
C++ Source Code:
#include <gl/glut.h>
#include "fog.h"


Спускаемся к функции:
C++ Source Code:
int DLLEXPORT HUD_VidInit( void )
{


Над функцией вставляем
C++ Source Code:
extern cl_fog Fog;


а в тело:
C++ Source Code:
Fog.m_Fog = false;
glDisable(GL_FOG);


На этом с клиентской частью покончено.

Серверная часть:

Лезим в player.h
в
C++ Source Code:
class CBasePlayer : public CBaseMonster
{
public:


в самый конец вставляем
C++ Source Code:
1
float FogDensity;
2
float StartFog;
3
float EndFog;
4
int RedFog;
5
int GreenFog;
6
int BlueFog;
7
int FogOn;


Идем в cbase.h
и самом конце файла добавляем наш класс:
C++ Source Code:
1
class CFog : public CBaseEntity
2
{
3
public:
4
 
5
  void Spawn( void );
6
  void KeyValue( KeyValueData *pkvd );
7
 
8
  static	TYPEDESCRIPTION m_SaveData[];
9
 
10
  float m_fDensity;
11
  float m_fStartFog;
12
  float m_fEndFog;
13
  int m_iRed, m_iGreen, m_iBlue;
14
};


Идем в triggers.cpp
под функцией
C++ Source Code:
void CRenderFxManager :: Use ( CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value )
{


вставляем:
C++ Source Code:
1
LINK_ENTITY_TO_CLASS( env_fog, CFog );
2
 
3
TYPEDESCRIPTION	CFog::m_SaveData[] =
4
{
5
  DEFINE_FIELD( CFog, m_fDensity, FIELD_FLOAT ),
6
  DEFINE_FIELD( CFog, m_fStartFog, FIELD_FLOAT ),
7
  DEFINE_FIELD( CFog, m_fEndFog, FIELD_FLOAT ),
8
  DEFINE_FIELD( CFog, m_iRed, FIELD_INTEGER ),
9
  DEFINE_FIELD( CFog, m_iGreen, FIELD_INTEGER ),
10
  DEFINE_FIELD( CFog, m_iBlue, FIELD_INTEGER ),
11
};
12
 
13
void CFog :: KeyValue( KeyValueData *pkvd )
14
{
15
  if (FStrEq(pkvd->szKeyName, "density"))
16
  {
17
    m_fDensity = atof(pkvd->szValue);
18
    pkvd->fHandled = TRUE;
19
  }
20
  else if (FStrEq(pkvd->szKeyName, "startfog"))
21
  {
22
    m_fStartFog = atof(pkvd->szValue);
23
    pkvd->fHandled = TRUE;
24
 
25
  }
26
  else if (FStrEq(pkvd->szKeyName, "endfog"))
27
  {
28
    m_fEndFog = atof(pkvd->szValue);
29
    pkvd->fHandled = TRUE;
30
 
31
  }
32
  else if (FStrEq(pkvd->szKeyName, "redfog"))
33
  {
34
    m_iRed = atoi(pkvd->szValue);
35
    pkvd->fHandled = TRUE;
36
 
37
  }
38
  else if (FStrEq(pkvd->szKeyName, "greenfog"))
39
  {
40
    m_iGreen = atoi(pkvd->szValue);
41
    pkvd->fHandled = TRUE;
42
 
43
  }
44
  else if (FStrEq(pkvd->szKeyName, "bluefog"))
45
  {
46
    m_iBlue = atoi(pkvd->szValue);
47
    pkvd->fHandled = TRUE;
48
 
49
  }
50
  else
51
    CBaseEntity::KeyValue( pkvd );
52
 
53
}
54
 
55
void CFog :: Spawn ( void )
56
{
57
  pev->solid = SOLID_NOT;
58
  pev->spawnflags |= 1;
59
}


Лезим в player.cpp
и под
C++ Source Code:
int gmsgStatusValue = 0;

Вставляем:
C++ Source Code:
int gmsgFog = 0;


под
C++ Source Code:
gmsgStatusValue = REG_USER_MSG("StatusValue", 3);


вставляем:
C++ Source Code:
gmsgFog = REG_USER_MSG("Fog", 10);


Ищем :
C++ Source Code:
void CBasePlayer::Spawn( void )
{
 


В теле функции, сверху вставляем
C++ Source Code:
FogOn = 0;


и над
C++ Source Code:
g_pGameRules-&gt<img src="images/smilies/pp2.gif" border="0" alt="">layerSpawn( this );


Вставляем
C++ Source Code:
1
while ( !FNullEnt( pFind ) )
2
{
3
  if (pFind->v.spawnflags & 1)
4
  {
5
    CBaseEntity *pEnt = CBaseEntity::Instance( pFind );
6
    CFog *pFog = (CFog *)pEnt;
7
 
8
    FogDensity = pFog->m_fDensity;
9
    StartFog = pFog->m_fStartFog;
10
    EndFog = pFog->m_fEndFog;
11
    RedFog = pFog->m_iRed;
12
    GreenFog = pFog->m_iGreen;
13
    BlueFog = pFog->m_iBlue;
14
    FogOn = 1;
15
    //UTIL_ClientPrintAll(HUD_PRINTCENTER, UTIL_VarArgs( "%i ", gmsgFog));
16
  }
17
  pFind = FIND_ENTITY_BY_CLASSNAME( pFind, "env_fog" );
18
}



Далее ищем:
C++ Source Code:
void CBasePlayer :: UpdateClientData( void )
{

и под
C++ Source Code:
m_bitsDamageType &= DMG_TIMEBASED;
}

Вставляем:
C++ Source Code:
1
if(FogOn)
2
{
3
  MESSAGE_BEGIN(MSG_ONE, gmsgFog, NULL, pev);
4
  WRITE_BYTE(FogOn);
5
  WRITE_COORD(FogDensity);
6
  WRITE_COORD(StartFog);
7
  WRITE_COORD(EndFog);
8
  WRITE_BYTE(RedFog);
9
  WRITE_BYTE(GreenFog);
10
  WRITE_BYTE(BlueFog);
11
  MESSAGE_END();
12
  FogOn = 0;
13
}


Добавляем в наш *.fgd файлик
code:
@PointClass size(-16 -16 -16, 16 16 16) color(100 100 0) = env_fog : "Fog Controls" [ density(integer) : "Fog Density" : 1 startfog(integer) : "Start Fog" : 10 endfog(integer) : "End Fog" : 50 redfog(integer) : "Red" : 0 greenfog(integer) : "Green" : 0 bluefog(integer) : "Blue" : 0 ]


Вроде всё.

Скрины:



Отредактировано pRoxxx 27-05-2011 в 13:55

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

Старое сообщение 27-05-2011 13:42
- За что?
fire64
Житель форума

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

Рейтинг



pRoxxx, если не секрет, что это ты за мод такой делаешь. с этими страшными робо-руками ?

__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей

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

Старое сообщение 27-05-2011 14:10
- За что?
 Дядя Миша
racing for fish

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

Рейтинг



У нас уже есть тутор по созданию env_fog.
http://www.hlfx.ru/forum/showthread...ighlight=envfog
Принципиальных отличий не вижу.

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение 27-05-2011 14:21
-
pRoxxx
Житель форума

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

Рейтинг



Сингл мод, хотел что бы главным героем был вот этот парень:


Но человек который делает модели, сказал что он какашка и баба робот будет лутше, ибо публика любит сиськи О_о:

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

Старое сообщение 27-05-2011 14:22
- За что?
 XaeroX
Crystice Softworks

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

Рейтинг



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


Цитата:
pRoxxx писал:
и баба робот будет лутше, ибо публика любит сиськи

Он дурак и, возможно, дрочер.

__________________

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

Старое сообщение 27-05-2011 14:24
-
pRoxxx
Житель форума

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

Рейтинг



Цитата:
XaeroX писал:
Он дурак и, возможно, дрочер.

Не, просто анимешник, любит всякие извращения придумывать.

Добавлено 27-05-2011 в 18:33:

Цитата:
Дядя Миша писал:
У нас уже есть тутор по созданию env_fog.
http://www.hlfx.ru/forum/showthread...ighlight=envfog
Принципиальных отличий не вижу.

Хм, не видил. Но даже если и есть, всеравно по нему не делал бы, свое то всегда лутше, темболее когда опыта еще мало.

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

Старое сообщение 27-05-2011 14:33
- За что?
 XaeroX
Crystice Softworks

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

Рейтинг



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


Цитата:
pRoxxx писал:
Не, просто анимешник, любит всякие извращения придумывать.

Причем тут аниме? Ты на модель посмотри. Лара крофт образца 1995 года и то симпатичнее.

Добавлено 27-05-2011 в 21:35:

Цитата:
pRoxxx писал:
Но даже если и есть, всеравно по нему не делал бы, свое то всегда лутше, темболее когда опыта еще мало.

Посмотри, там в режиме д3д реализован туман через pTri->Fog, а твой только в опенгл-рендере работать будет.

__________________

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

Старое сообщение 27-05-2011 14:35
-
pRoxxx
Житель форума

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

Рейтинг



Цитата:
XaeroX писал:
Причем тут аниме? Ты на модель посмотри. Лара крофт образца 1995 года и то симпатичнее.

Добавлено 27-05-2011 в 21:35:


Посмотри, там в режиме д3д реализован туман через pTri->Fog, а твой только в опенгл-рендере работать будет.

Ну это пока тестовая модель, если что поменять никогда не поздно.
А то что работает только в OpenGL я знаю. =)
Я же код не кусками выдерал, а сам писал. Щас просто учу OpenGL, в том числе и по урокам Nehe. Хочу щас попробывать сделать рендерную воду, без подгрузки текстуры.

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

Старое сообщение 27-05-2011 14:39
- За что?
 Дядя Миша
racing for fish

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

Рейтинг



Цитата:
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: Записан
Сообщение: 78519

Старое сообщение 27-05-2011 14:39
-
pRoxxx
Житель форума

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

Рейтинг



Цитата:
Дядя Миша писал:
но от первого лица видно только руки.

Зеркала же хочу еще сделать, энтитей.

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

Старое сообщение 27-05-2011 14:46
- За что?
 XaeroX
Crystice Softworks

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

Рейтинг



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


Цитата:
pRoxxx писал:
Зеркала же хочу еще сделать, энтитей.

Если модели будут на том же уровне - лучше не надо.
Нарисуйте сексапильный концепт для главного меню и хватит.

__________________

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

Старое сообщение 27-05-2011 14:49
-
pRoxxx
Житель форума

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

Рейтинг



Цитата:
XaeroX писал:
Если модели будут на том же уровне - лучше не надо.
Нарисуйте сексапильный концепт для главного меню и хватит.

Ну дык, а что поделать, моделеры ныне только и умеют что меши на кости насаживать.

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

Старое сообщение 27-05-2011 14:50
- За что?
FiEctro
Кот Арсис

Дата регистрации: Aug 2006
Проживает: код
Сообщений: 12901
Возраст: 32

Рейтинг



pRoxxx
В Ганмене хорошая модель робобабы. А это обглоданый скелет снеговика какой то.

__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!

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

Старое сообщение 27-05-2011 16:37
- За что?
thambs
мразь конченная

Дата регистрации: Mar 2006
Проживает: -
Сообщений: 6417

Рейтинг



в гурмане модель в 100 раз лучше.

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

Старое сообщение 27-05-2011 16:55
- За что?
 Дядя Миша
racing for fish

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

Рейтинг



Цитата:
FiEctro писал:
А это обглоданый скелет снеговика какой то.

скелет снеговика, это такой же оксюморон как стрелка осциллографа.

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение 27-05-2011 17:39
-
Тема: (Опционально)
Ваш ответ:



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


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

Временная зона GMT. Текущее время 12:00. Новая тема    Ответить
Страницы (2): [1] 2 »   Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Разработка игр > Наши проекты > Сингл-мод про бабу-робота
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

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

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

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

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