Hlavn strnka    Vyhadvanie       Homepage    Registrcia   Prihlsenie
Rubriky
Tutorily
Recenzie
Rzne
Vyhadvanie
Odkazy
lenovia
Download
FRUM
IRC kanl
IRC web klient
GALRIA
Tutorily na XSI
RSS
Registrcia
Diskusn boardy
  • The lambda
  • Mapping
  • Modeling
  • Coding
  • Half-Life

  • Najnovie lnky
    Automatická textová správa
    Vocko Tutoril
    07.06.2009 : 11:02:12
    V tomto tutoriále si spravíme automatickú textovú správu, ktorá sa prehraje vždy s nejakým zvukom.
    Kompilovanie SDK aj na VC++ .Net 2003
    Vocko Tutoril
    10.05.2009 : 10:46:16
    Kto by si chcel pod¾a tutoriálov tu na lambde nieèo prida do kódu, stretne sa s problémom, neskompiluje to.
    Env_mirror alebo zrkadlenie modelov
    Vocko Tutoril
    24.04.2009 : 18:49:30
    Tutoriál na zrkadlenie tu už je, ale èo ak chceme odráža i modely? Na tom nám poslúži entita env_mirror, ktorá sa nachádza iba v Spirite 1.4 alebo novšej verzii.
    HL2 : Obloukový prùchod
    R4z0r Tutoril
    01.05.2008 : 05:48:46
    Dnes si ukážeme zpùsob, jak vytvoøit elegantní obloukový prùchod, bez nutnosti používat øezání geometrie brushem...
    Pridanie zoomu do mp5
    NICKSss Tutoril
    03.03.2008 : 18:55:16

    No,dnes si povieme ako prida zoom na mp5-ku namiesto granátu.
    Pridanie mp3 do spiritu
    NICKSss Tutoril
    02.03.2008 : 20:55:09

    Návod na pridanie mp3 do Half-Life 1 alebo Spirt 1.2,otestované na verzii 1.2.

    Asi už mate zbrane add-ons vo Spirite 1.2 a nechcete prejst na ver.1.4 lebo všetko stratite

    pre Mp3... Na internete som našiel návody pre HL1 a po anglicky ktoré po skompilovani

    fungovali asi takto : Aplikácia HL.EXE Neodpovedá...
    *locus
    Deli Tutoril
    22.02.2008 : 20:13:47
    Pre niektorých mapperov neznámy pojem, ale pre niektorých ve¾mi úèinná pomôcka.
    Vïaka tomuto príspevku sa vám posnažím priblíži tajomstvá jednej z najväèších zbraní spiritu.
    Spirit of Half-Life - Predstavenie
    Wizz Tutoril
    27.10.2007 : 08:52:04
    Predtým než sa pustíte do èítania, chcel by som Vás upozorni že èlánok už nemusí by 100% aktualny. Èlánok som totiž napísal ešte za svojich mladých èias - 13. júna 2004, èo je viac ako tri roky. Zverejni som sa ho rozhodol po nátlaku a výhražkach ostatných redaktorov
    Laser na AK
    Majacik
    [15.02.2004 : 15:18:49] 88 Tutoril
    tan : 2883
    Priemern znmka : 0.67
    Laser na vlastnú zbraň.

    Mi si teraz spravíme laser na už robene ak47. Je to celkom jednoduché. Takže si otvoríme hl.dsp a otvoríme si ak47.cpp. Celí jeho obsah nahradíme týmto:

    #include "extdll.h"
    #include "util.h"
    #include "cbase.h"
    #include "monsters.h"
    #include "weapons.h"
    #include "nodes.h"
    #include "player.h"
    #include "soundent.h"
    #include "gamerules.h"

    enum AK47_e
    {
    AK47_IDLE1 = 0,
    AK47_RELOAD,
    AK47_DEPLOY,
    AK47_FIRE1,
    AK47_FIRE2,
    AK47_FIRE3
    };

    class CLaserSpotAK47 : public CBaseEntity/*prip tu sa nam zecina definovanie funkcii lasera*/
    {
    void Spawn( void );
    void Precache( void );

    int ObjectCaps( void ) { return FCAP_DONT_SAVE; }

    public:
    void Suspend( float flSuspendTime );
    void EXPORT Revive( void );

    static CLaserSpotAK47 *CreateSpotAK47( void );
    };
    LINK_ENTITY_TO_CLASS( laser_spot_AK47, CLaserSpotAK47 );

    class CAK47 : public CBasePlayerWeapon
    {
    public:
    int Save( CSave &save );
    int Restore( CRestore &restore );
    static TYPEDESCRIPTION m_SaveData[];

    void Spawn( void );
    void Precache( void );
    int iItemSlot( void ) { return 3; }
    int GetItemInfo(ItemInfo *p);
    int AddToPlayer( CBasePlayer *pPlayer );

    void PrimaryAttack( void );
    void SecondaryAttack( void );/*prip na zapinanie a vypinanie lasera*/
    int SecondaryAmmoIndex( void );
    BOOL Deploy( void );
    void Reload( void );
    void WeaponIdle( void );
    void Holster ( int skiplocal );
    float m_flNextAnimTime;
    int m_iShell;

    CLaserSpotAK47 *m_pSpot;/*prip patri k laseru a hlavne k aktivacii a vypnutiu aj dalsie dva riadky*/
    int m_fSpotActive;
    void UpdateSpot ( void );

    private:
    };
    LINK_ENTITY_TO_CLASS( weapon_AK47, CAK47 );

    TYPEDESCRIPTION CAK47::m_SaveData[] = /*prip patri k laseru*/
    {
    DEFINE_FIELD( CAK47, m_fSpotActive, FIELD_INTEGER ),
    };
    IMPLEMENT_SAVERESTORE( CAK47, CBasePlayerWeapon );
    //=========================================================
    //=========================================================
    int CAK47::SecondaryAmmoIndex( void )/*prip pre definovanie sekundarnej municie*/
    {
    return m_iSecondaryAmmoType;
    }

    void CAK47::Spawn( )
    {
    pev->classname = MAKE_STRING("weapon_AK47"); // hack to allow for old names
    Precache( );
    SET_MODEL(ENT(pev), "models/w_AK47.mdl");
    m_iId = WEAPON_AK47;
    m_fSpotActive = 1;/*prip ak tu je 1 tak laser je hned zapaty a ak tam je 0 tak po vytiahnuti zbrane je laser vypnuty*/

    m_iDefaultAmmo = 30;

    FallInit();// get ready to fall down.
    }


    void CAK47::Precache( void )
    {
    PRECACHE_MODEL("models/v_AK47.mdl");
    PRECACHE_MODEL("models/w_AK47.mdl");
    PRECACHE_MODEL("models/p_AK47.mdl");
    PRECACHE_MODEL("sprites/laserdot.spr");

    m_iShell = PRECACHE_MODEL ("models/shell.mdl");// brass shellTE_MODEL

    PRECACHE_SOUND("items/9mmclip1.wav");

    PRECACHE_SOUND("items/clipinsert1.wav");
    PRECACHE_SOUND("items/cliprelease1.wav");

    PRECACHE_SOUND ("weapons/hks1.wav");// H to the K

    PRECACHE_SOUND ("weapons/357_cock1.wav");

    }

    int CAK47::GetItemInfo(ItemInfo *p)
    {
    p->pszName = STRING(pev->classname);
    p->pszAmmo1 = "9mm";
    p->iMaxAmmo1 = _9MM_MAX_CARRY;
    p->pszAmmo2 = NULL;
    p->iMaxAmmo2 = -1;
    p->iMaxClip = 30;
    p->iSlot = 0;
    p->iPosition = 4;
    p->iFlags = 0;
    p->iId = m_iId = WEAPON_AK47;
    p->iWeight = 20;

    return 1;
    }

    int CAK47::AddToPlayer( CBasePlayer *pPlayer )
    {
    if ( CBasePlayerWeapon::AddToPlayer( pPlayer ) )
    {
    MESSAGE_BEGIN( MSG_ONE, gmsgWeapPickup, NULL, pPlayer->pev );
    WRITE_BYTE( m_iId );
    MESSAGE_END();
    return TRUE;
    }
    return FALSE;
    }

    BOOL CAK47::Deploy( )
    {
    return DefaultDeploy( "models/v_AK47.mdl", "models/p_AK47.mdl", AK47_DEPLOY, "AK47" );
    }


    void CAK47::PrimaryAttack()
    {
    // don''t fire underwater
    if (m_pPlayer->pev->waterlevel == 3)
    {
    PlayEmptySound( );
    m_flNextPrimaryAttack = gpGlobals->time + 0.08;
    return;
    }

    if (m_iClip <= 0)
    {
    PlayEmptySound();
    m_flNextPrimaryAttack = gpGlobals->time + 0.08;
    return;
    }

    //PLAYBACK_EVENT( 0, m_pPlayer->edict(), m_usAK47 );

    m_pPlayer->m_iWeaponVolume = NORMAL_GUN_VOLUME;
    m_pPlayer->m_iWeaponFlash = NORMAL_GUN_FLASH;

    m_iClip--;

    // player "shoot" animation
    m_pPlayer->SetAnimation( PLAYER_ATTACK1 );
    EMIT_SOUND(ENT(m_pPlayer->pev), CHAN_WEAPON, "weapons/hks1.wav", 1.0, ATTN_NORM);
    SendWeaponAnim( AK47_FIRE1 );

    Vector vecSrc = m_pPlayer->GetGunPosition();
    Vector vecAiming = m_pPlayer->GetAutoaimVector( AUTOAIM_5DEGREES );
    // m_pPlayer->FireBullets (1, vecSrc, vecAiming, VECTOR_CONE_2DEGREES, 16000, BULLET_PLAYER_9MM, 0.5, 4);

    Vector vecShellVelocity = m_pPlayer->pev->velocity

    + gpGlobals->v_right * RANDOM_FLOAT(50,70)

    + gpGlobals->v_up * RANDOM_FLOAT(100,150)

    + gpGlobals->v_forward * 25;

    EjectBrass ( pev->origin + m_pPlayer->pev->view_ofs + gpGlobals->v_up * -12 + gpGlobals->v_forward * 15 + gpGlobals->v_right * 6 , vecShellVelocity, pev->angles.y, m_iShell, TE_BOUNCE_SHELL );

    m_pPlayer->pev->punchangle.x -= 0.7;

    if ( g_pGameRules->IsDeathmatch() )
    {
    // optimized multiplayer. Widened to make it easier to hit a moving player
    m_pPlayer->FireBullets( 1, vecSrc, vecAiming, VECTOR_CONE_2DEGREES, 8192, BULLET_PLAYER_MP5, 0.5, 4 );
    }

    else
    {
    m_pPlayer->FireBullets( 1, vecSrc, vecAiming, VECTOR_CONE_2DEGREES, 8192, BULLET_PLAYER_MP5, 0.5, 4 );
    }

    if (!m_iClip && m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] <= 0)
    // HEV suit - indicate out of ammo condition
    m_pPlayer->SetSuitUpdate("!HEV_AMO0", FALSE, 0);

    m_flNextPrimaryAttack = m_flNextPrimaryAttack + 0.06;
    if (m_flNextPrimaryAttack < gpGlobals->time)
    m_flNextPrimaryAttack = gpGlobals->time + 0.06;

    m_flTimeWeaponIdle = gpGlobals->time + RANDOM_FLOAT ( 10, 15 );

    UpdateSpot( );
    }



    void CAK47::SecondaryAttack( void )/*prip stara sa nam o zapinanie a vypinanie lasera je to vlastne prepinac ktori zistuje ci je laser zapaty a podla toho vykona akciu, cize ak je zapaty tak ho vypne a naopak*/
    {
    m_fSpotActive = ! m_fSpotActive;

    if (!m_fSpotActive && m_pSpot)
    {
    m_pSpot->Killed( NULL, GIB_NORMAL );
    m_pSpot = NULL;
    }

    m_flNextSecondaryAttack = gpGlobals->time + 0.2;
    }

    void CAK47::Reload( void )
    {
    UpdateSpot( );/*prip vypina laser pred nabijanim inak by nam zostala pocas nabijania bodka na stene*/
    if (m_pSpot)
    {
    m_pSpot->Killed( NULL, GIB_NEVER );
    m_pSpot = NULL;
    } DefaultReload( 30, AK47_RELOAD, 2.5 );
    }

    void CAK47::Holster( int skiplocal /* = 0 */ ) /*prip sluzi na schovavanie zbrane a tym nam zaroven aj vypne laser*/
    {
    m_fInReload = FALSE;
    if (m_pSpot)
    {
    m_pSpot->Killed( NULL, GIB_NEVER );
    m_pSpot = NULL;
    }
    }


    void CAK47::WeaponIdle( void )
    {
    UpdateSpot( );/*prip k laseru a jeho cinnosti*/

    ResetEmptySound( );
    m_pPlayer->GetAutoaimVector( AUTOAIM_5DEGREES );

    if (m_flTimeWeaponIdle > gpGlobals->time)
    return;

    int iAnim;
    switch ( RANDOM_LONG( 0, 1 ) )
    {
    case 0:
    iAnim = AK47_IDLE1;
    break;

    default:
    case 1:
    iAnim = AK47_IDLE1;
    break;
    }

    SendWeaponAnim( iAnim );

    m_flTimeWeaponIdle = gpGlobals->time + RANDOM_FLOAT ( 10, 15 );// how long till we do this again.
    }



    class CAK47AmmoClip : public CBasePlayerAmmo
    {
    void Spawn( void )
    {
    Precache( );
    SET_MODEL(ENT(pev), "models/w_AK47clip.mdl");
    CBasePlayerAmmo::Spawn( );
    }
    void Precache( void )
    {
    PRECACHE_MODEL ("models/w_AK47clip.mdl");
    PRECACHE_SOUND("items/9mmclip1.wav");
    }
    BOOL AddAmmo( CBaseEntity *pOther )
    {
    int bResult = (pOther->GiveAmmo( 30, "9mm", _9MM_MAX_CARRY) != -1);
    if (bResult)
    {
    EMIT_SOUND(ENT(pev), CHAN_ITEM, "items/9mmclip1.wav", 1, ATTN_NORM);
    }
    return bResult;
    }
    };

    class CAK47Chainammo : public CBasePlayerAmmo
    {
    void Spawn( void )
    {
    Precache( );
    CBasePlayerAmmo::Spawn( );
    }
    void Precache( void )
    {
    PRECACHE_SOUND("items/9mmclip1.wav");
    }
    BOOL AddAmmo( CBaseEntity *pOther )
    {
    int bResult = (pOther->GiveAmmo( AMMO_CHAINBOX_GIVE, "9mm", _9MM_MAX_CARRY) != -1);
    if (bResult)
    {
    EMIT_SOUND(ENT(pev), CHAN_ITEM, "items/9mmclip1.wav", 1, ATTN_NORM);
    }
    return bResult;
    }
    };

    CLaserSpotAK47 *CLaserSpotAK47::CreateSpotAK47( void )/*prip ostatne riadky patria k vytvoreniu laseru teda vykresleniu spritu, prekasovaniu sprajtu atd...*/
    {
    CLaserSpotAK47 *pSpot = GetClassPtr( (CLaserSpotAK47 *)NULL );
    pSpot->Spawn();

    pSpot->pev->classname = MAKE_STRING("laser_spot_AK47");

    return pSpot;
    }
    //=========================================================
    //=========================================================
    void CLaserSpotAK47::Spawn( void )
    {
    TraceResult tr;

    Precache( );
    pev->movetype = MOVETYPE_NONE;
    pev->solid = SOLID_NOT;

    pev->rendermode = kRenderGlow;
    pev->renderfx = kRenderFxNoDissipation;
    pev->renderamt = 255 /*prip este toto by vas mohlo zaujimat a je to priehladnost bodky cim mensie cislo tym prehliadnejsie je a tym ho je aj slabšie vydiet*/;

    SET_MODEL(ENT(pev), "sprites/laserdot.spr");/*prip tu sim mozeme vlozit iny sprit bodky z laseru ale musime zmenit nazov aj v obi dvoch precache*/
    UTIL_SetOrigin( pev, pev->origin );
    };

    //=========================================================
    // Suspend- make the laser sight invisible.
    //=========================================================
    void CLaserSpotAK47::Suspend( float flSuspendTime )
    {
    pev->effects |= EF_NODRAW;

    SetThink( Revive );
    pev->nextthink = gpGlobals->time + flSuspendTime;
    }

    //=========================================================
    // Revive - bring a suspended laser sight back.
    //=========================================================
    void CLaserSpotAK47::Revive( void )
    {
    pev->effects &= ~EF_NODRAW;

    SetThink( NULL );
    }

    void CLaserSpotAK47::Precache( void )
    {
    PRECACHE_MODEL("sprites/laserdot.spr");
    };

    void CAK47::UpdateSpot( void )
    {
    if (m_fSpotActive)
    {
    if (!m_pSpot)
    {
    m_pSpot = CLaserSpotAK47::CreateSpotAK47();
    }

    UTIL_MakeVectors( m_pPlayer->pev->v_angle );
    Vector vecSrc = m_pPlayer->GetGunPosition( );;
    Vector vecAiming = gpGlobals->v_forward;

    TraceResult tr;
    UTIL_TraceLine ( vecSrc, vecSrc + vecAiming * 8192, dont_ignore_monsters, ENT(m_pPlayer->pev), &tr );

    UTIL_SetOrigin( m_pSpot->pev, tr.vecEndPos );
    }
    }


    No to je všetko, spravil som to jednoduché aby ste sa s tym nepiplali a v texte nájdete takéto značky /*prip text*/ a namiesto text je tam popis k danému riadku ci funkcii.
    Prerobiť laser na inú zbraň je v celku jednoduché teda ak ste trochu vynaliezavý nebudete robiť novy text od začiatku písať ale použijete starý a zmeníte požadované údaje to iste sa dá bezproblemov spraviť aj tu, ako napríklad s tohto spraviť laser pre pištoľ ci snipru kde k sekundáru stačí doplniť iba kukar atd... Veľa šťastia praje majacik

    BODOVANIE LNKU
    Boduje sa ako v kole (1- vborn, 5-zl)
           

    Priemern znmka : 0.67
    Hlasovalo : 3

    KOMENTRE KU LNKU
    Poet komentrov ku lnku : 2

    1. qery Admin
    [15.02.2004-15:54] 143
    nice job
    idem to rovno spravit ;)

    [rmb]qery
    -=HL4ever=-
    qery.no-ip.com

    2. wuwo7
    [24.01.2009-21:09] 3026
    celkom pekne ale mohol by si podrobnejsie napisat tu cestu kde to treba prepisat ?...nejako to neviem najst

    Pre pridvanie komentrov muste by prihlsen
    Pokia ete nieste zaregistrovan, mete tak urobi TU

    Vyhadvanie

    Rozren vyhadvanie

    AREA 42
    Hlka
    Aj moj komp uz ma alergii na slovo Acer, vzdy kdyz to nekdo napise , tak mi pohasne obraz, DVD Rom se vysune tak rychlo ze tocici se DVD leta po pokoji jak urvana cirkularka a naskoci hlaska neco o prehrati systemu...

    J.D.Skalpel @ ICQ with Jackar

    Starie hlky >> Komentre >>

    Anketa
    Bavi vas aj moding inych hernych zanrov ako FPS ?

    1.Ano, strategie [29%]

    2.Ano, RPG [22%]

    3.Ano, sportove hry [27%]

    4.Nie, ine ako FPS neriesim [23%]

    Spolu hlasovalo : 4040
    Starie ankety >>

    Najtanejie
    1.Atomová bomba ako v crossfire (30199x)
    2.HL2: První kroky (29421x)
    3.Counter-Strike entity (21594x)
    4.Half-Life: Padlé Mìsto demo - Recenze (19665x)
    5.Pozadie pomocou textúry sky (17906x)
    On-Line
    Tieto strnky si prve ta 1 lovek.
    Sponzor webu
    Spriatelen weby
    Ikona na náš web
    Preklady hier, mapy do Half-life a CS, chat a mnoho ïalšieho
    Filmový svet pod lupou
    ceskemody.cz
    HL Zone
    Vše o HL2
    Scifi-guide.net
    Mappersky portal zaoberajuci sa hramy ako CoD1, MoH:AA ci SourceSDK HL2 ale aj mnohymi dalsimi ...
    Nosferatu - novy Slovensky mod o upiroch
    Terrorist attack mod do HL
    PSP novinky, forum, download
    AirSoft Team AlfaCommandos Bratislava
    ICQ - Lamerz bar
    V zujme ochrany duevnho zdravia redaktorov tu u viac ICQ panel nenjdete :P

    Vsledky vaeho snaenia sa mete njs na lamz.thelambda.sk ...

    Vetky texty publikovan na tchto strnkach s majetkom thelambda.sk alebo ich autorov.
    (C) 2003-2006 thelambda.sk VSETKY PRAVA VYHRADENE
    www.TheLambda.SK Enter RS
    Strnka bola natan za 0.65 seknd.