Hlavná stránka    Vyh¾adávanie       Homepage    Registrácia   Prihlásenie
Rubriky
Tutoriály
Recenzie
Rôzne
Vyh¾adávanie
Odkazy
Èlenovia
Download
FÓRUM
IRC kanál
IRC web klient
GALÉRIA
Tutoriály na XSI
RSS
Registrácia
Diskusné boardy
  • The lambda
  • Mapping
  • Modeling
  • Coding
  • Half-Life

  • Najnovšie èlánky
    Automatická textová správa
    Vocko Tutoriál
    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 Tutoriál
    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 Tutoriál
    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 Tutoriál
    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 Tutoriál
    03.03.2008 : 18:55:16

    No,dnes si povieme ako prida� zoom na mp5-ku namiesto granátu.
    Pridanie mp3 do spiritu
    NICKSss Tutoriál
    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 Tutoriál
    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 Tutoriál
    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 Tutoriál
    Èítaní : 3513
    Priemerná známka : 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 ÈLÁNKU
    Boduje sa ako v škole (1- výborný, 5-zlý)
           

    Priemerná známka : 0.67
    Hlasovalo : 3

    KOMENTÁRE KU ÈLÁNKU
    Poèet komentárov ku èlánku : 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 pridávanie komentárov musíte by� prihlásený
    Pokia¾ ešte nieste zaregistrovaný, môžete tak urobi� TU

    Vyh¾adávanie

    Rozšírené vyh¾adávanie

    AREA 42
    Hláška
    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

    Staršie hlášky >> Komentáre >>

    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
    Staršie ankety >>

    Najèítanejšie
    1.HL2: První kroky (35223x)
    2.Atomová bomba ako v crossfire (32319x)
    3.Counter-Strike entity (26791x)
    4.Half-Life: Padlé Mìsto demo - Recenze (22501x)
    5.Pozadie pomocou textúry sky (20151x)
    On-Line
    Tieto stránky si práve èí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 záujme ochrany duševného zdravia redaktorov tu už viac ICQ panel nenájdete :P

    Výsledky vašeho snaženia sa môžete nájs� na lamz.thelambda.sk ...

    Všetky texty publikované na týchto stránkach sú majetkom thelambda.sk alebo ich autorov.
    (C) 2003-2006 thelambda.sk VSETKY PRAVA VYHRADENE
    www.TheLambda.SK Enter RS
    Stránka bola naèítaná za 0.06 sekúnd.