Registration - or - Enter
Blbej DenBlbej Den

Чешская модификация для Half-Life...

5/05/2009
FaceOff PaintballFaceOff Paintball

Техно-демо возможностей web-камеры и игры....

31/12/2010

Как сделать, чтоб двери не открывались, когда нет света и рядом с ними был индикатор (красн. зел.)


  • Description
  • Link and installation

Неработающие двери :)

Как сделать, чтоб двери не открывались, когда нет света и рядом с ними был индикатор (красн. зел.)


Views : 685 ( +2 )
Uploaded by : Streit
Created : 04/07/2011 6:37:19 PM
Rating :
 ( 0 ) 
Share :


Available following translations : | russian |

Привет всем, вот походу разработки мода, столкнулся с проблемой , как сделать чтоб двери не открывались когда нет света и рядом с ними был индикатор (красн. зел.) .Кто играл в АШ1 знают…

и так приступим: Открываем hl.dsp Идём в buttons.cpp После: #define SF_BUTTON_TOUCH_ONLY 256

ставим: #define SF_DOORS_CAN_OPENED 512

Находим функцию CBaseButton::ButtonUse : в ней пишем :

if ( FBitSet(pev→spawnflags, SF_DOORS_CAN_OPENED) ) { CVAR_SET_FLOAT( "cl_canopen_door", 1 ); }

ок, далее: открываем doors.h После дефанов (#define) , вставляем: Код:

class CBaseDoor : public CBaseToggle { public: void Spawn( void ); void Precache( void ); virtual void KeyValue( KeyValueData *pkvd ); virtual void Use( CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value ); virtual void Blocked( CBaseEntity *pOther );

virtual int     ObjectCaps( void )
{
        if (pev->spawnflags & SF_ITEM_USE_ONLY)
                return (CBaseToggle::ObjectCaps() & ~FCAP_ACROSS_TRANSITION) | FCAP_IMPULSE_USE;
        else
                return (CBaseToggle::ObjectCaps() & ~FCAP_ACROSS_TRANSITION);
};
virtual int     Save( CSave &save );
virtual int     Restore( CRestore &restore );
static  TYPEDESCRIPTION m_SaveData[];
bool iCanOpened;
virtual void SetToggleState( int state );
// used to selectivly override defaults
void EXPORT DoorTouch( CBaseEntity *pOther );
// local functions
int DoorActivate( );
void EXPORT DoorGoUp( void );
void EXPORT DoorGoDown( void );
void EXPORT DoorHitTop( void );
void EXPORT DoorHitBottom( void );
BYTE    m_bHealthValue;// some doors are medi-kit doors, they give players health
BYTE    m_bMoveSnd;                     // sound a door makes while moving
BYTE    m_bStopSnd;                     // sound a door makes when it stops
locksound_t m_ls;                       // door lock sounds
        BYTE    m_bLockedSound;         // ordinals from entity selection
        BYTE    m_bLockedSentence;
        BYTE    m_bUnlockedSound;
        BYTE    m_bUnlockedSentence;
};

идем в doors.cpp (не в doors.h !!! ):

удаляем от туда класс двери (похоже на то что мы ставили , точнее оно и есть).

находим функцию: void CBaseDoor::DoorTouch( CBaseEntity *pOther ) , в её тело вставляем: Код:

int i;
i = CVAR_GET_FLOAT("cl_canopen_door");
if (i == 1)
{
        iCanOpened = true;
}
if (iCanOpened == false)
{
}

так.. вроде здесь всё. Идем в game.cpp

добавляем к аналогичным строкам: Код: cvar_t cl_canopen_door = {"cl_canopen_door","0", FCVAR_SERVER | FCVAR_ARCHIVE };

с дверьми всё :) . Индикатор:

создаём файл item_drpanel

Вставляем: Код:

#include "extdll.h" #include "util.h" #include "cbase.h" #include "effects.h" #include "doors.h"

#define SF_START_LIGHT 1

class CDRPanel : public CPointEntity { public: void Spawn( void ); void Create( int color ); void Precache( void ); void EXPORT ThinkDoor( void );

private: CSprite *m_pLight; };

LINK_ENTITY_TO_CLASS( item_drpanel, CDRPanel);

void CDRPanel::Spawn() { Precache();

SetThink(ThinkDoor);
pev->nextthink = gpGlobals->time + 2;
        SET_MODEL(ENT(pev),"models/special/panel.mdl");
//      if (FBitSet(pev->spawnflags,SF_START_LIGHT))
        Create(0);
}

void CDRPanel::Precache() { PRECACHE_MODEL("models/special/panel.mdl"); PRECACHE_MODEL("sprites/special/glow03.spr"); }

void CDRPanel::Create (int color) { if (color == 1) { m_pLight = CSprite::SpriteCreate("sprites/special/glow03.spr", pev→origin + Vector(0,0,5), FALSE ); m_pLight→SetTransparency( kRenderGlow, 0, 255, 0, 100,kRenderFxNone ); m_pLight→SetScale(0.25); } else if (color == 0) { m_pLight = CSprite::SpriteCreate("sprites/special/glow03.spr", pev→origin + Vector(0,0,5), FALSE ); m_pLight→SetTransparency( kRenderGlow, 255, 0, 0, 100,kRenderFxNone ); m_pLight→SetScale(0.25); } }

void CDRPanel::ThinkDoor() { int getfl; getfl = CVAR_GET_FLOAT("cl_canopen_door"); if (getfl == 1) { m_pLight→SetTransparency( kRenderGlow, 0, 255, 0, 255,kRenderFxNone ); } else { m_pLight→SetTransparency( kRenderGlow, 255, 0, 0, 255,kRenderFxNone ); }

        pev->nextthink = gpGlobals->time + 0.5;
}

Далее в fgd: в spawnflags у энтити func_button добавим:

512:"Врубить свет!":0

получиться что-то вроде

spawnflags(flags) [

512:"Врубить свет!":0
]

и добавим в конце fgd:


@PointClass size(-16 -16 -16, 16 16 16) = item_drpanel: "Door panel"
[
]

Вот и всё :) glow03.spr можно взять в папке sprites у valve.
Модельку - свою :)


Similar1. Создание нового оружия - В этом туторе не будет объяснено КАК сделать новое оружие, ибо для каждого оружия нужен свой код. Здесь просто будет приведена информация о тех нюансах без которых ваше оружие не будет работать
2. Спрыгивающий Headcrab - Наверняка каждый, кто поиграл в Half-Life2 хотел, чтобы хедкрабы спрыгивали с зомбяков и в первом Half-Life
3. субтитры из паранойи - субтитры из паранойи.
4. Water Splash - Добавляем брызги при выстреле по воде
Ссылки на объект
Полная ссылка на текущем языке :
Короткая ссылка :
Ссылка на превью-картинку :
Ссылка на картинку в полном размере :
Ссылка для вашего форума или сайта
BB код ссылка:
BB код ссылка с картинкой :
BB код картинки :
HTML код ссылка:
HTML код ссылка с картинкой :
HTML код картинки :
Yo Den 02/02/2015, 12:00:58 PM is writing :
#1
Какой раз глаза мозолит, "Неработающие", слитно!)
You cannot comment, because you are not registered.
    Chris Redfield (RECVX Costume)
    Chris Redfield (RECVX Costume)
    Blood Stained Knife
    Blood Stained Knife
    PlayStation Button Mod
    PlayStation Button Mod
    Русификатор (звук) от Team Raccoon
    Русификатор (звук) от Team Raccoon