|
|
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 |
|
|
|
AK47 Majacik [03.01.2004 : 10:31:41] 73 Tutoril tan : 3248 Priemern znmka : 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 LNKU Boduje sa ako v kole (1- vborn, 5-zl)
Priemern znmka : 2.5 Hlasovalo : 8
|
KOMENTRE KU LNKU Poet komentrov ku lnku : 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 pridvanie komentrov muste by prihlsen Pokia ete nieste zaregistrovan, mete tak urobi TU
|
|
|
|
|