|
|
Diskusn boardy |
|
|
|
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. |
|
|
|
|
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 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 |
|
|
|
Reálnejší rozptil zbrane qery [15.05.2004 : 19:03:13] 111 Tutoril tan : 2791 Priemern znmka : 0.9 |
Ako vytvori zbraò, ktora ma rozptyl, ktorý sa mení v závislosti od toho, ako dlho už strielaš (ako v Counter-Striku) ? Majme náš AK-47. Ked sa vystrelí prvý náboj, zbraò je presná, ale pri ïalšom náboji presnos klesá. Keï pustime spúš, nepresnos sa znižuje postupne.
Riešením je premenná, ktorá urèuje, ako dlho sa drží spúš. Od tejto premennej bude závislos presnosti strelby.
Toto je definícia premenných, procedúr a funkcií AK-47:
class CAK47 : public CBasePlayerWeapon
{
public:
void Spawn( void );
void Precache( void );
int iItemSlot( void ) { return 3; }
int GetItemInfo(ItemInfo *p);
int AddToPlayer( CBasePlayer *pPlayer );
void PrimaryAttack( void );
BOOL Deploy( void );
void Reload( void );
void WeaponIdle( void );
float m_flNextAnimTime;
int m_iShell;
int shotindex; // zmena
private:
};
LINK_ENTITY_TO_CLASS( weapon_AK47, CAK47 ); |
int shotindex je naša premenná, ktorá urèuje, kolkatý náboj práve strielame.
Ïalej tu máme procedúru, ktorá obsluhuje strielanie (je vyvolaná po príkaze +attack)
void CAK47::PrimaryAttack()
{
// nestrielat pod vodou
if (m_pPlayer->pev->waterlevel == 3)
{
PlayEmptySound( );
m_flNextPrimaryAttack = gpGlobals->time + 0.2;
return;
}
// niesu naboje
if (m_iClip <= 0)
{
PlayEmptySound();
m_flNextPrimaryAttack = gpGlobals->time + 0.2;
return;
}
m_pPlayer->m_iWeaponVolume = NORMAL_GUN_VOLUME;
m_pPlayer->m_iWeaponFlash = BRIGHT_GUN_FLASH;
m_iClip--;
// player "shoot" animation
m_pPlayer->SetAnimation( PLAYER_ATTACK1 );
EMIT_SOUND(ENT(m_pPlayer->pev), CHAN_WEAPON, "weapons/ak47-1.wav", 1.0, ATTN_NORM);
SendWeaponAnim( AK47_FIRE1 );
Vector vecSrc = m_pPlayer->GetGunPosition( );
Vector vecAiming = m_pPlayer->GetAutoaimVector( AUTOAIM_5DEGREES );
Vector vecShellVelocity = m_pPlayer->pev->velocity + gpGlobals->v_right * RANDOM_FLOAT(50,70) + gpGlobals->v_up * RANDOM_FLOAT(100,150) + gpGlobals->v_forward * 5 ;
EjectBrass ( pev->origin + m_pPlayer->pev->view_ofs + gpGlobals->v_up * -8 + gpGlobals->v_forward * 15 + gpGlobals->v_right * 4 , vecShellVelocity, pev->angles.y, m_iShell, TE_BOUNCE_SHELL );
// presnost
shotindex++;
if (shotindex>=15) { shotindex=15; }
if (shotindex<=3) { m_pPlayer->FireBullets( 1, vecSrc, vecAiming, VECTOR_CONE_2DEGREES, 8192, BULLET_PLAYER_MP5, 0.5, 20); }
if (shotindex>3 && shotindex<=6) { m_pPlayer->FireBullets( 1, vecSrc, vecAiming, VECTOR_CONE_5DEGREES, 8192, BULLET_PLAYER_MP5, 0.5, 20); }
if (shotindex>6 && shotindex<=9) { m_pPlayer->FireBullets( 1, vecSrc, vecAiming, VECTOR_CONE_8DEGREES, 8192, BULLET_PLAYER_MP5, 0.5, 20); }
if (shotindex>9 && shotindex<=12) { m_pPlayer->FireBullets( 1, vecSrc, vecAiming, VECTOR_CONE_10DEGREES, 8192, BULLET_PLAYER_MP5, 0.5, 20); }
if (shotindex>12 && shotindex<=15) { m_pPlayer->FireBullets( 1, vecSrc, vecAiming, VECTOR_CONE_15DEGREES, 8192, BULLET_PLAYER_MP5, 0.5, 20); }
m_pPlayer->pev->punchangle.x += RANDOM_FLOAT ( -2, 2 );
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.10;
if (m_flNextPrimaryAttack < gpGlobals->time)
m_flNextPrimaryAttack = gpGlobals->time + 0.10;
m_flTimeWeaponIdle = gpGlobals->time + RANDOM_FLOAT ( 10, 15 );
//m_pPlayer->pev->punchangle.x -= 8;
} |
Riadky:
if ( g_pGameRules->IsDeathmatch() )
{
m_pPlayer->FireBullets( 1, vecSrc, vecAiming, VECTOR_CONE_5DEGREES, 8192, BULLET_PLAYER_MP5, 0.5, 8);
}
else
{
m_pPlayer->FireBullets( 1, vecSrc, vecAiming, VECTOR_CONE_5DEGREES, 8192, BULLET_PLAYER_MP5, 0.5, 8);
} |
sme nahradili èerveným textom. Takže poïme porade:
Zvišujeme shotindex, ktory urèuje kolkatý naboj od zaèiatku strielame.
shotindex++;
Ak je viacej ako 15 tak ho nastavýme na 15. Pri 15 je nepresnos najväèšia.
if (shotindex>=15) { shotindex=15; }
Tu kontrolujeme shotindex. Ak je od 1 do 3 potom je nepresnos 2 stupòe. Ak je od 4 do 6 tak je nepresnos 5 stupòov. Ak je od 7 do 9 potom je nepresnos 8 stupòov...
if (shotindex<=3) { m_pPlayer->FireBullets( 1, vecSrc, vecAiming, VECTOR_CONE_2DEGREES, 8192, BULLET_PLAYER_MP5, 0.5, 20); }
if (shotindex>3 && shotindex<=6) { m_pPlayer->FireBullets( 1, vecSrc, vecAiming, VECTOR_CONE_5DEGREES, 8192, BULLET_PLAYER_MP5, 0.5, 20); }
if (shotindex>6 && shotindex<=9) { m_pPlayer->FireBullets( 1, vecSrc, vecAiming, VECTOR_CONE_8DEGREES, 8192, BULLET_PLAYER_MP5, 0.5, 20); }
if (shotindex>9 && shotindex<=12) { m_pPlayer->FireBullets( 1, vecSrc, vecAiming, VECTOR_CONE_10DEGREES, 8192, BULLET_PLAYER_MP5, 0.5, 20); }
if (shotindex>12 && shotindex<=15) { m_pPlayer->FireBullets( 1, vecSrc, vecAiming, VECTOR_CONE_15DEGREES, 8192, BULLET_PLAYER_MP5, 0.5, 20); } |
Tu sa vykonáva trhanie obrazom. Je tu zmena oproti pôvodnému
m_pPlayer->pev->punchangle.x -= 1.8 , aby to neahalo len smerom hore, ale do náhodného smeru hore alebo dole.
m_pPlayer->pev->punchangle.x += RANDOM_FLOAT ( -2, 2 );
Takže mali by sme strielanie, teraz treba uroby, aby sa nepresnos znižovala, ak sa zbraò nepoužíva.
void CAK47::WeaponIdle( void )
{
shotindex--;
if (shotindex<0) { shotindex=0; }
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;
} |
Jediná zmena je, pridanie dvoch riadkov ktoré sa starajú, aby sa shotindex znižoval pri každom zavolaní funkcie, a aby neklesol pod nulu.
Tak tolko asi k tomu problému. Ak budú nejaké nejasnosti, tak napíšte. |
BODOVANIE LNKU Boduje sa ako v kole (1- vborn, 5-zl)
Priemern znmka : 0.9 Hlasovalo : 10
|
|
|
|
|