Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
18.04.2002, 19:47
Randar



Hi ich habe mir anhand eines Tutorial welchen auf DHHC ist oder wie die seite heisst *g* ne waffe gecoded. So wie kann ich einstellenw ie die waffe streuen soll? Bei HL streut die ja net. Aber ich möchte die schüsse so nen bissle zufällig haben. Aber je nach waffe verschieden. Also ob es doll zu den seiten geht oder nicht.

--

zum Seitenanfang zum Seitenende Profil || Suche
001
18.04.2002, 21:11
Mexil



*grrrundtotaldurchdreh*

Ich krieg hier echt bald noch mal zu viel... es gibt so eine schoene Suchfunktion hier im Forum....

---> http://www.thewall.de/forum/showtopic.php?threadid=26378&time=1019156965

--


Move In!

VISIT US Move In!

zum Seitenanfang zum Seitenende Profil || Suche
002
18.04.2002, 21:38
Randar



In der ich leider nichts gefunden habe sorry.
Bin ja net ganz doof *g* Aber anscheinedn doch wenn du was gefunden hast. Sorry :(

Achso was aus dem Thread net hervorgeht. Wie kann man son streuungsmuster einstellen? Sowas gibbet ja in verschiedenen Mods. z.B. Cs. Also die M4 reisst erst nach oben dann nach recht und dnan nach links. Wie kann man sowas machen?

--

zum Seitenanfang zum Seitenende Profil || Suche
003
18.04.2002, 21:52
snoopdog



Also hier ist mal mein code von ner Streuung ist nciht die beste aber vielleicht kannste ja was mit anfangen....
Quellcode:
void CG36c::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;
    }
//anfang rückstoss
    if ( FBitSet( m_pPlayer->pev->flags, FL_ONGROUND ) && !(m_pPlayer->m_Activity == ACT_HOP || m_pPlayer->m_Activity == ACT_LEAP) ) // ob der Spieler spring denn wenn er spring zieht die Waffe nicht weg
{
int z_value ( m_pPlayer->pev->velocity.z );
m_pPlayer->pev->velocity = m_pPlayer->pev->velocity - gpGlobals->v_forward * RANDOM_LONG( 0, 0 ); // Wie die Waffe einen nach hinten drückt
m_pPlayer->pev->velocity.z = z_value;
}

// Sichtverzerrung nach oben
m_pPlayer->pev->punchangle.x -= RANDOM_FLOAT( 2.0, 2.2 ); // Wie die Waffe nach oben zieht
m_pPlayer->pev->punchangle.y -= RANDOM_FLOAT( 2.0, 2.2 ); // Wie die Waffe nach links zieht

if (m_iClip <= 0)
{
PlayEmptySound();
m_flNextPrimaryAttack = gpGlobals->time + 0.1;
return;
}
//ende Rückstoss

    PLAYBACK_EVENT( 0, m_pPlayer->edict(), m_usG36c );

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

    m_iClip--;

    // player "shoot" animation
    m_pPlayer->SetAnimation( PLAYER_ATTACK1 );

    Vector vecSrc     = m_pPlayer->GetGunPosition( );
    Vector vecAiming = m_pPlayer->GetAutoaimVector( AUTOAIM_5DEGREES );
    
    if ( g_pGameRules->IsDeathmatch() )
    {
        // optimized multiplayer. Widened to make it easier to hit a moving player
        m_pPlayer->FireBullets( 1, vecSrc, vecAiming, VECTOR_CONE_6DEGREES, 8192, BULLET_PLAYER_G36c, 2 );
    }
    else
    {
        // single player spread
        m_pPlayer->FireBullets( 1, vecSrc, vecAiming, VECTOR_CONE_3DEGREES, 8192, BULLET_PLAYER_G36c, 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.1;
    if (m_flNextPrimaryAttack < gpGlobals->time)
        m_flNextPrimaryAttack = gpGlobals->time + 0.1;

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

void CG36c::SecondaryAttack()



{
    // don't fire underwater
    if (m_pPlayer->pev->waterlevel == 3)
    {
        PlayEmptySound( );
        m_flNextSecondaryAttack = gpGlobals->time + 0.15;
        return;
    }

    if (m_iClip <= 3)
    {
        PlayEmptySound();
        m_flNextSecondaryAttack = gpGlobals->time + 0.15;
        return;
    }






    PLAYBACK_EVENT( 0, m_pPlayer->edict(), m_usG36c );
    PLAYBACK_EVENT( 0, m_pPlayer->edict(), m_usG36c );


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

    m_iClip--;
    m_iClip--;
    m_iClip--;

    // player "shoot" animation
    m_pPlayer->SetAnimation( PLAYER_ATTACK1 );

    Vector vecSrc     = m_pPlayer->GetGunPosition( );
    Vector vecAiming = m_pPlayer->GetAutoaimVector( AUTOAIM_5DEGREES );
    
    if ( g_pGameRules->IsDeathmatch() )
    {
        // optimized multiplayer. Widened to make it easier to hit a moving player
        m_pPlayer->FireBullets( 11, vecSrc, vecAiming, VECTOR_CONE_10DEGREES, 8192, BULLET_PLAYER_G36c1, 2 );
        
    }
    else
    {
        // single player spread
        m_pPlayer->FireBullets( 11, vecSrc, vecAiming, VECTOR_CONE_10DEGREES, 8192, BULLET_PLAYER_G36c1, 2 );
    }
    // ----Hören und Sehen des Shusses!!-
    SendWeaponAnim( G36c_FIRE1 );

    switch( RANDOM_LONG(0,3) )
    {
        case 0: EMIT_SOUND_DYN(ENT(m_pPlayer->pev), CHAN_WEAPON, "weapons/burst_g36c.wav", 1, ATTN_NORM, 0, 94 + RANDOM_LONG(0,0xf)); break;
        case 1: EMIT_SOUND_DYN(ENT(m_pPlayer->pev), CHAN_WEAPON, "weapons/burst_g36c.wav", 1, ATTN_NORM, 0, 94 + RANDOM_LONG(0,0xf)); break;
        case 2: EMIT_SOUND_DYN(ENT(m_pPlayer->pev), CHAN_WEAPON, "weapons/burst_g36c.wav", 1, ATTN_NORM, 0, 94 + RANDOM_LONG(0,0xf)); break;
        case 3: EMIT_SOUND(ENT(m_pPlayer->pev), CHAN_WEAPON, "weapons/burst_g36c.wav", 1, ATTN_NORM); break;
    }

    TraceResult tr = UTIL_GetGlobalTrace( );
    DecalGunshot( &tr, 0 );                        // Einschussloch
// ----------------------------------



    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_flNextSecondaryAttack = m_flNextSecondaryAttack + 0.5;
    if (m_flNextSecondaryAttack < gpGlobals->time)
        m_flNextSecondaryAttack = gpGlobals->time + 0.5;

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







oder verbesser ihn doch noch!! Ist jedenfalls schon lange her das ich mit HL was gemacht habe naja ok viel Spaß

--

Visit our 500er Gamer Lan
@ www.evil-lanparty.de or
@ www.evil-havoc.com
Visit the HaVoc Lanparty Community
@ www.havoc-lanparty.com

zum Seitenanfang zum Seitenende Profil || Suche
004
18.04.2002, 22:08
TheTinySteini



Uh... really baaad code.

--

TheTinySteini
Coder Poke646
"Don't Panic" - Hitchhiker's Guide to the Galaxy

zum Seitenanfang zum Seitenende Profil || Suche
005
18.04.2002, 22:21
Randar



Nur mal ne Frage wieso bad code?
Also ich bin noob und ich finde mich in dem ganz gut zurecht.
Kannstd as erklären wieso er schlecht ist? Dann kann daraus lernen und verbessern ;)

--

zum Seitenanfang zum Seitenende Profil || Suche
006
18.04.2002, 22:22
Retro



Quellcode:[b]PLAYBACK_EVENT( 0, m_pPlayer->edict(), m_usG36c );
PLAYBACK_EVENT( 0, m_pPlayer->edict(), m_usG36c );[/b]

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

[b]m_iClip--;
m_iClip--;
m_iClip--;[/b]
rofl..

--

shielding people from their own stupidity is an evolutionary step backwards anyway.

/* God is dead!............Nietzsche */
/* Nietzsche is dead!......God */
/* Nietzsche is God!.......The Dead */


Dieser Beitrag wurde am 18.04.2002 um 22:23 von Retro bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
007
18.04.2002, 22:30
Rockefeller



Und vor allem so ohne Code-Einrückungen :D

--

zum Seitenanfang zum Seitenende Profil || Suche
008
19.04.2002, 00:37
Another1



mhh, keine codeeinrückungen ... sicher irgendwie aus ner website gerippt .. oso

aber das 3x -- find ich geil, weil, so funzt ne waffe ja nunma, die macht nich -3 schuss sondern -1 -1 -1 ;)

--

Another1

...relaxing..atm =)
... und Schweiz suckt!


Dieser Beitrag wurde am 19.04.2002 um 00:37 von Another1 bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
009
19.04.2002, 06:42
Rockefeller



Zitat:
snoopdog postete
// ob der Spieler spring denn wenn er spring zieht die Waffe nicht weg

Realismus ist nicht gerade Ziel deines Mods? :D

--

zum Seitenanfang zum Seitenende Profil || Suche
010
19.04.2002, 07:18
Randar



Das kann man ja noch verändern
Er hat mir den code ja nur gegeben damit ich die Streuung bei mri machen kann.
Aber Another sorry wenn diese doofe frage jetzt kommt wie kann ich das -1-1-1 zu -3 machen? ich weiss netmal ob ich das muss, aber das geht aus deinem post so hervor :) Bin n00b sorry

--

zum Seitenanfang zum Seitenende Profil || Suche
011
19.04.2002, 09:09
WareWolf



m_iClip = m_iClip -1;
m_iClip = m_iClip -1;
m_iClip = m_iClip -1;
=)

/edit
aber um mal ernsthaft zu bleiben, es benötigt definitiv im übersetzten Maschinencode ein
dec bx
dec bx
dec bx
weniger Taktzyklen als ein
mov cx,3
sub bx,cx

aber eigentlich sollte der C-Compiler die "richtige" Version automatisch einsetzen
/edit

--

Sig as a brick ┴┬┴┬┴┬┴┬┴┬┴┬┴
WW


Dieser Beitrag wurde am 19.04.2002 um 10:46 von WareWolf bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
012
19.04.2002, 12:28
Tron



WareWolf, man kanns auch kompliziert machen... warum den direktwert erst in ein register und dann subtrahieren?
der code ist besser:
sub [ebx], 3
is bestimmt schneller als
3x dec [ebx]
(eckige klammern, da variablen wohl meistens im ram liegen und nicht in registern)

warum das schneller ist?
- 3x dec ist nicht pairable, also troepfelt nur durch eine pipe
- 3x dec muss auch 3x der wert aus dem ram gelesen und wieder zueruckgeschrieben werden; ok, cache hilft da, aber nur 1x lesen und schreiben ist trotzdem schneller

zugegeben sub [ebx], 3 ist ein byte groeser, aber die vorteile ueberwiegen klar.

im uebrigen braucht sub in der execution stage nur einen taktzueklus, dec ebenfalls einen - aber eben 3 mal

--

'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams

'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett

zum Seitenanfang zum Seitenende Profil || Suche
013
19.04.2002, 14:05
WareWolf



Zitat:

der code ist besser:
sub [ebx], 3
is bestimmt schneller als
3x dec [ebx]

he he, das war auch nicht mein Vergleich.Damit hast du sicher recht, denn
3x dec[ebx]
ist wohl die schlechteste Lösung.
Mein Beispiel bezog sich ja auf reine Registermanipulationen (deshalb ohne eckige Klammern). Ich ging mal davon aus, dass das bx Register schon den Inhalt der Variable m_iClip repräsentiert und irgendwann am Ende der Gesamtroutine wieder ins RAM zurückgeschrieben wird.

--

Sig as a brick ┴┬┴┬┴┬┴┬┴┬┴┬┴
WW

zum Seitenanfang zum Seitenende Profil || Suche
014
19.04.2002, 14:14
Exec



@randar: wie wärs mit dem allerleichtesten? m_iClip -= 3; ??? das sind ja echt die miesesten c++ grundwissenheiten ...

--

"selbermachen rockt am meisten :D" - -LeJean-

zum Seitenanfang zum Seitenende Profil || Suche
015
19.04.2002, 14:41
Tron



@Warewolf:
dann ist es immernoch langsamer, da dec 3 mal auf das selbe register nicht pairable ist.
des weiteren ist
sub ebx, 3
auch ohne nur auf ein pipeline schneller als
3x dec ebx
(ich nehme ebx, da 32bit heutzutage ueblicher ist)
sub braucht einen taktzyklus, 3x dec 3 takte, ok auch diese version von sub ist 1 byte groeser als...

--

'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams

'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett

zum Seitenanfang zum Seitenende Profil || Suche
016
19.04.2002, 15:03
WareWolf



ja, sub braucht nur einen Taktzyklus, aber die "3" muss er doch auch noch vorher aus dem Ram holen, da gehen doch auch noch einige Taktzyklen drauf ... oder arbeiten die 32Bitler da anders? naja, Chache .. vermutlich hast Du recht.

--

Sig as a brick ┴┬┴┬┴┬┴┬┴┬┴┬┴
WW

zum Seitenanfang zum Seitenende Profil || Suche
017
19.04.2002, 16:10
Tron



die '3' ist im maschinen code dabei als direktwert (nicht als vasriable irendwo im datensegment)
diese '3' wird also mit dem ganzen anderen code auch in die prefetchqueue geladen

ok... der beweis:
c:\>debug :D

sub bx, 3 ; 83 eb 03
dec bx ; 4b

ist sogar gleich lang, dec ist SICHER langsamer, immernich hauptgrund: pairing (irgendwie wiederhole ich mich *g*)

btw: in einem windose proggi befindet sich die cpu im 32bit modus, also muss vor jede 16bit operation (bx!!) der operandsizeprefix (0x66)
dann haette sub bx, 3 4 byte und 3x dec bx sogar 6 byte, dann ist dec nicht nur langsamer sondern zudem noch groeser

fazit: dec wird nur fuer --x (bzw x -= 1 und x = x - 1 bei schlauen compilern) verwendet, und nur aus dem grund, dass es nur ein byte gros ist, fuer groesere subtraktionen immer sub

--

'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams

'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett

zum Seitenanfang zum Seitenende Profil || Suche
018
19.04.2002, 18:40
WareWolf



OK, überzeugt. Und wieder was gelernt =)

--

Sig as a brick ┴┬┴┬┴┬┴┬┴┬┴┬┴
WW

zum Seitenanfang zum Seitenende Profil || Suche
019
19.04.2002, 22:45
TheTinySteini



... und den ganzen Rest verschreckt =)

--

TheTinySteini
Coder Poke646
"Don't Panic" - Hitchhiker's Guide to the Galaxy

zum Seitenanfang zum Seitenende Profil || Suche
020
20.04.2002, 13:32
Randar



Also wie kann ich den oben gennanten code verbessern? Kann mir jemand die stellen sagen die mists sind und se vieleicht verbessern. Sofit bin ich NOCh net das ich sowas alleine kann :(

--

zum Seitenanfang zum Seitenende Profil || Suche
021
20.04.2002, 13:48
Randar



Is schon gut mit dem code ich habe jetzt nur eine frage.
Also die waffe zieht im mom nach recht oben k. Aber wie kann ich einstellen wie weit es auch nach links geht? Und muss wenn die Waffe verieht auch die sicht verzogen werden? Oder kann man das auch anders lösen?

thx vor help

--

zum Seitenanfang zum Seitenende Profil || Suche
022
20.04.2002, 14:41
snoopdog



@Rockefeller
in meinem SDK is der schon eingerückt aber leider funktioniert hier im Board wohl der code tag net mehr oder war ich wieder zu blöd den anzuwenden?? das war doch Quellcode: nur das geht ja nicht mehr wie man sieht. Naja und ich glaub so wichtig ist das bei HL net mehr ob der jetzt ne millisekunde schneller die anzahl verringert oder??

--

Visit our 500er Gamer Lan
@ www.evil-lanparty.de or
@ www.evil-havoc.com
Visit the HaVoc Lanparty Community
@ www.havoc-lanparty.com

zum Seitenanfang zum Seitenende Profil || Suche
023
20.04.2002, 19:04
Randar



Also irgendwie ist die waffenstreuung da noch net ganz so doll stell ich fest.
Wie mach ich den das nicht einmfach nru die sicht verschoben wird, sonern das er wirklich streut. Also um es aufn punkt zu bringen wie bei CS. Is bei anderen Mods sicher auch so, nur ich kenen leider keiene anderen mods deswegen oimmer das CS besipiel. :)

--

zum Seitenanfang zum Seitenende Profil || Suche
024
20.04.2002, 20:00
TheTinySteini



Dann besorg dir mal andere Mods... sonst hast du echt ne Bildungslücke.

Richtige Streuung:
VECTOR_CONE_10DEGREES <- diese Angabe ersetzen, z.B. mit *_5DEGREES, dann streut es weniger. Oder *_20DEGREES, dann streut's wie Sau.
Wenn du halbwegs fit bist dann, kannste es auch so machen, dass es immer mehr streut, je länger man draufhält.

--

TheTinySteini
Coder Poke646
"Don't Panic" - Hitchhiker's Guide to the Galaxy

zum Seitenanfang zum Seitenende Profil || Suche