|
|
|
|
Diskusné boardy |
|
|
|
|
|
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. |
|
|
|
|
|
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 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  |
|
|
|
|
AK47 Majacik [03.01.2004 : 10:31:41] 73 Tutoriál 
Èítaní : 3944
Priemerná známka : 2.5 |
AK47 do Half-Life
Tak teraz si povieme ako pridať novú zbraň do half-life. Budeme na to potrebovať Counter-Strike s kadiaľ si vezmeme zbraň AK47 (nieže by som ho mal rád no je jednoduchý(M4 má tlmič...)). Takže skopÃrujeme p_ak47.mdl, v_ak47.mdl a w_ak47.mdl do adresára models vo Valve v Half-Life, ďalej skopÃrujeme weapon_ak47.txt a *.spr do adresára sprites vo Valve. S SDK v adresári DLLS si spustÃme hl.dsp a vytvorÃme nový súbor ktorý naprÃklad vložÃme ako ak47.cpp a pridáme ho do Source files. Do súboru AK47.cpp vložÃme nasledujúci text:
// START AK47
#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 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;
private:
};
LINK_ENTITY_TO_CLASS( weapon_AK47, CAK47 );
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_iDefaultAmmo = 32;
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");
m_iShell = PRECACHE_MODEL ("models/shell.mdl");// brass shellTE_MODEL
PRECACHE_MODEL("models/w_9mmARclip.mdl");
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/hks2.wav");// H to the K
PRECACHE_SOUND ("weapons/hks3.wav");// H to the K
PRECACHE_SOUND( "weapons/glauncher.wav" );
PRECACHE_SOUND( "weapons/glauncher2.wav" );
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 = 32;
p->iSlot = 2;
p->iPosition = 3;
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.15;
return;
}
if (m_iClip <= 0)
{
PlayEmptySound();
m_flNextPrimaryAttack = gpGlobals->time + 0.15;
return;
}
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 );
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 );
m_pPlayer->pev->punchangle.x -= 0.7;
if ( g_pGameRules->IsDeathmatch() )
{
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.08;
if (m_flNextPrimaryAttack < gpGlobals->time)
m_flNextPrimaryAttack = gpGlobals->time + 0.08;
m_flTimeWeaponIdle = gpGlobals->time + RANDOM_FLOAT ( 10, 15 );
}
void CAK47::Reload( void )
{
DefaultReload( AK47_MAX_CLIP, AK47_RELOAD, 1.5 );
}
void CAK47::WeaponIdle( void )
{
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_9mmARclip.mdl");
CBasePlayerAmmo::Spawn( );
}
void Precache( void )
{
PRECACHE_MODEL ("models/w_9mmARclip.mdl");
PRECACHE_SOUND("items/9mmclip1.wav");
}
BOOL AddAmmo( CBaseEntity *pOther )
{
int bResult = (pOther->GiveAmmo( AMMO_AK47CLIP_GIVE, "9mm", _9MM_MAX_CARRY) != -1);
if (bResult)
{
EMIT_SOUND(ENT(pev), CHAN_ITEM, "items/9mmclip1.wav", 1, ATTN_NORM);
}
return bResult;
}
};
LINK_ENTITY_TO_CLASS( ammo_AK47clip, CAK47AmmoClip );
class CAK47Chainammo : public CBasePlayerAmmo
{
void Spawn( void )
{
Precache( );
SET_MODEL(ENT(pev), "models/w_chainammo.mdl");
CBasePlayerAmmo::Spawn( );
}
void Precache( void )
{
PRECACHE_MODEL ("models/w_chainammo.mdl");
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;
}
};
LINK_ENTITY_TO_CLASS( ammo_AK47box, CAK47Chainammo );
//END AK47
Potom si otvorÃme weapons.cpp a nájdeme nasledujúci text:
// mp5
UTIL_PrecacheOtherWeapon( "weapon_9mmAR" );
UTIL_PrecacheOther( "ammo_9mmAR" );
UTIL_PrecacheOther( "ammo_ARgrenades" );
A pod neho pridáme:
// AK47
UTIL_PrecacheOtherWeapon( "weapon_AK47" );
UTIL_PrecacheOther( "ammo_AK47clip" );
Ďalej otvorÃme weapons.h a nájdeme:
#define WEAPON_SNARK 15
a pod neho doplnÃme:
#define WEAPON_AK47 16
ďalej nájdeme:
#define MP5_MAX_CLIP 50
a pod neho doplnÃme
#define AK47_MAX_CLIP 32
ďalej nájdeme:
#define AMMO_MP5CLIP_GIVE MP5_MAX_CLIP
a pod neho doplnÃme:
#define AMMO_AK47CLIP_GIVE AK47_MAX_CLIP
Teraz otvorÃme player.cpp a nájdeme:
case 107:
{
TraceResult tr;
edict_t *pWorld = g_engfuncs.pfnPEntityOfEntIndex( 0 );
Vector start = pev->origin + pev->view_ofs;
Vector end = start + gpGlobals->v_forward * 1024;
UTIL_TraceLine( start, end, ignore_monsters, edict(), &tr );
if ( tr.pHit )
pWorld = tr.pHit;
const char *pTextureName = TRACE_TEXTURE( pWorld, start, end );
if ( pTextureName )
ALERT( at_console, "Texture: %sn", pTextureName );
}
break;
a pod neho doplnÃme:
case 108:// show shortest paths for entire level to nearest node
{
GiveNamedItem( "weapon_AK47" );
}
break;
Týmto sme si zabezpečili, že keď do konzoly napÃÅ¡eme „impulse 108“ samozrejme bez „úvodzoviek“ tak nám dá ak47, môžeme to dať aj do impulse 101. Teraz si konečne môžeme skompilovať zdrojáky a s adresára PROFILEHL s DLLS skopÃrovať hl.dll do adresára DLLs vo VALVE v Half-Life a pustiť hru.
Teraz otvorÃme hud.txt ktorý je v adresári SPRITES vo VALVE a nájdeme:
d_9mmAR 320 320hud1 48 208 48 16
a pod neho doplnÃme:
d_AK47 320 320hud1 48 208 48 16
a ešte nájdeme:
d_9mmAR 640 640hud1 192 48 48 16
a doplnÃme pod neho:
d_AK47 640 640hud1 192 48 48 16
No a malo by to byť hotové. |
BODOVANIE ÈLÁNKU Boduje sa ako v škole (1- výborný, 5-zlý)
Priemerná známka : 2.5 Hlasovalo : 8
|
KOMENTÁRE KU ÈLÁNKU Poèet komentárov ku èlánku : 9
1. qery  [03.01.2004-22:53] 90 | otazka:
co znamenaju tie veci v hud.txt[rmb]qery -=HL4ever=- qery.no-ip.com |
2. qery  [03.01.2004-22:53] 91 | poznamka:
mohol by si pls komentovat source code[rmb]qery -=HL4ever=- qery.no-ip.com |
3. qery  [03.01.2004-22:54] 92 | poznamka:
mohol by si pls komentovat source code[rmb]qery -=HL4ever=- qery.no-ip.com |
4. qery  [03.01.2004-22:57] 93 | oops to som nexcel
inac je to taky lol kalax :DD[rmb]qery -=HL4ever=- qery.no-ip.com |
5. Nemesis [26.01.2004-17:26] 108 | otazka:
a ake to bude mat crosshair? take jak na cs? a kde sa da zmenit crosshair aby som prerobil z cs crosshair do hl |
7. Buksy [01.01.2005-22:22] 678 | tak som to spravil,ale z nejakych dovodov mi nezobrazuje mieritko a ked napisem to impulse tak mam kolo 2500 nabojovNetrapte sa,rusi to cracknu
|
8. Buksy [01.09.2005-20:53] 1492 | v com to moze byt? inac,fakt,nemohol by si trochu viac komentarov pridat za tie prikazy? aspon ku neitkrym premennym,a triedam,nech viem co sa v dane triede nastavuje a tiez premennej ;)Netrapte sa,rusi to cracknu
|
9. deleted [09.04.2006-10:17] 1909 | preco mi po loadingu zbran nestriela sory ze mam take blbe otazky ale programovat velmi neviem
a inac buksy mne to iste robi s m4a1
goblin | Pre pridávanie komentárov musíte by� prihlásený Pokia¾ ešte nieste zaregistrovaný, môžete tak urobi� TU
|
|
|
|
|
|