Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
025
03.03.2003, 17:09
doener



Also damit stürzt das Spiel bei mir ab wenn eine Granate explodiert, und ne Fehlermeldung kommt:

SZ_GetSpace: overflow without FSB_ALLOWOVERFLOW set on
Server Datagram

/Mit nem kleineren Wert für i geht's ;)
Aber die Schüsse gehen immernoch nicht rundum, immer in irgendeine Richtung und dann noch meistens etwas gebündelt, und manchmal kreisförmig ringsum... O_o

Ich hab gestern Abend noch folgendes gemacht:

Quellcode:vecDir.x = (1);
vecDir.y = (1);
vecDir.z = (1);
FireBullets(100, vecSrc, vecDir, Vector(360, 360, 360), 8192, BULLET_MONSTER_9MM, 2, 50, pevOwner);
Ergebnis ist, dass die Schüsse ringsum um die Granate gehen, wie der Ring von dem einen Planeten, Saturn? egal... Jedenfall ist das schonmal besser, jetzt soll die Streuung aber nicht auf einen schmalen Gürtel beschränkt sondern kugelförmig sein, eben rundherum :/

--


Dieser Beitrag wurde am 03.03.2003 um 17:26 von doener bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
026
03.03.2003, 17:46
Onkel Dittmeyer



Ja dann randomisier doch mal die 3 Streuwinkel...

--

zum Seitenanfang zum Seitenende Profil || Suche
027
03.03.2003, 18:34
doener



Welche jetzt, vecSpread oder vecDir, oder beide? Was sind für x, y und z eigentlich die maximalen Werte, ich kann mir das so schlecht vorstellen in Zahlen!?

--

zum Seitenanfang zum Seitenende Profil || Suche
028
03.03.2003, 18:41
Retro



vecspread ist die ungenauigkeit für jeden einzellnen schuss... vecdir ist die richtung in welche der schuss geht, die frage solltest du dir nun selbst beantworten können bzw. nen bisschen ausprobieren schadet auch nichts

--

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 */

zum Seitenanfang zum Seitenende Profil || Suche
029
03.03.2003, 19:28
doener



Argh, ich kann da soviel randomisieren wie ich will, das gibt immer mehr oder weniger nen Gürtel! Kennt jemand ein gutes Vektoren-Tutorial?

--

zum Seitenanfang zum Seitenende Profil || Suche
030
05.03.2003, 22:54
doener



Hilfe! Ich brauch nochmal Nachhilfe in Vektorprogrammierung! Zu Hilf!

--

zum Seitenanfang zum Seitenende Profil || Suche
031
07.03.2003, 01:39
DavidR.



Ihr macht alles noch VIEL komplizierter, als es ist!

Ich habe eben ein Entitie angefertigt, welches in alle Richtungen (und alle 0.1 Sekunden) einen Schuss abgibt, der "4" Schaden macht:
Quellcode:#include "extdll.h"
#include "util.h"
#include "cbase.h"
#include "weapons.h"
#include "player.h"

class CPoint : public CBaseEntity
{
    void Spawn( void );
    void Precache( void );
    void EXPORT Think( void );
};
LINK_ENTITY_TO_CLASS( test, CPoint );

void CPoint :: Spawn( void )
{
    Precache( );
    pev->movetype = MOVETYPE_NONE;
    pev->solid = SOLID_NOT;
    SET_MODEL(ENT(pev), "models/w_crowbart.mdl"); //Ich benutze hier ein "NULL.mdl", das ist übrigens genau das selbe Model...
    SetThink( Think );
    pev->nextthink = gpGlobals->time + 0.1;
}

void CPoint :: Precache( void )
{
    PRECACHE_MODEL("models/w_crowbart.mdl");
}

void CPoint :: Think( void )
{
    Vector vecSrc = pev->origin;
    Vector vecDir = Vector( RANDOM_LONG( -256, 256 ), RANDOM_LONG( -256, 256 ), RANDOM_LONG( -256, 256 ) );
    Vector vecEnd = vecSrc + vecDir;

    TraceResult tr;
    UTIL_MakeVectors( vecEnd );
    UTIL_MakeVectors( vecEnd ); //Hab ich nur zur Sicherheit gemacht, kann man (denke ich mal) löschen
    UTIL_TraceLine(vecSrc, vecEnd, dont_ignore_monsters, ENT(pev), &tr);

//    TEXTURETYPE_PlaySound(&tr, vecSrc, vecEnd, BULLET_PLAYER_MP5);

    DecalGunshot( &tr, BULLET_PLAYER_MP5 );

    CBaseEntity *pEntity = CBaseEntity::Instance(tr.pHit);

    ClearMultiDamage( );
    pEntity->TraceAttack(pev, 4, gpGlobals->v_forward, &tr, DMG_BULLET | DMG_NEVERGIB );
    ApplyMultiDamage( pev, pev );

    pev->nextthink = gpGlobals->time + 0.1;
}
:-D

Das wars!

Also DAS ist die Hauptsache, bei dem ganzem:
Vector vecDir = Vector( RANDOM_LONG( -256, 256 ), RANDOM_LONG( -256, 256 ), RANDOM_LONG( -256, 256 ) );

Es wird alle 0,1 Sekunden ein zufälliger Punkt mit +-256 in alle Koordinaten "erstellt", aufdem das Entitie am Schluss schießt Punkt

Hier noch ein Bild, von einem Raum, den ich mit 15 (!) solcher Entities ca. 1 Minute lang beschossen habe:

MfG DavidR.

Edit:
Ich nutze diese Möglichkeit wieder, um "illegal" für meine Mod zu werben:

Siehe Signatur

--

--< Spirit of Half-life


Dieser Beitrag wurde am 07.03.2003 um 01:49 von DavidR. bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
032
07.03.2003, 03:59
doener



Heilige Scheiße, es funktioniert!
Warum auch x, y, z einzeln randomisieren wenn's doch auch in einem Stück geht!
Danke man!
Hui ist es schon spät!

--

zum Seitenanfang zum Seitenende Profil || Suche
033
07.03.2003, 13:19
Onkel Dittmeyer



Das hat damit nix zu tun, sondern mit meiner falschen Annahme dass man es vom Origin der Granate abhängig machen muss...
Naja wieder schlauer geworden =) Btw, die ganzen TraceLines kannste dir sparen, macht FireBullets genauso...

--

zum Seitenanfang zum Seitenende Profil || Suche