Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
10.05.2008, 16:33
sabbert



Hi,
ich bin gerade dabei, an meinem Mod etwas herumzubasteln, aber nur stoße ich auf ein Problem!
Ich habe keine Ahnung wie ich es schaffe, Longjump in mein Mod einzubauen, wie z.B. in CSS beim Surf-RPG mod.

habt ihr vielleicgt eine Idee?

mfg Sabbert

--

zum Seitenanfang zum Seitenende Profil || Suche
001
10.05.2008, 16:51
feigling



Der Longjump ist doch standardmäßig bei HL dabei :o

--

zum Seitenanfang zum Seitenende Profil || Suche
002
10.05.2008, 16:57
gabbberjool



item_longjump

ob das im HL2 geht kp.

--

http://www.hardbase.fm/
Ihr braucht ne map...---> http://soulbreaker.kilu.de/braucheinemap.html

AmX Mod X 1.8 Fertig pack's
http://amxbans.kilu.de/Index.html


Dieser Beitrag wurde am 10.05.2008 um 16:58 von gabbberjool bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
003
10.05.2008, 17:19
sabbert



zu 002:

also item_longjump gibt es soweit ich weiß in HL2 nicht!

und zu 001:

Also in HL kann es sein das Longjump standartmäßig dabei si, aber in HL2 nicht!?

edit:
zu 001:
kann sein das du Bunnyhop meinst?

Noch eine Frage:
Wo kann ich generell das Movement ändern für meine mod( z.B. Geschwindigkeit)?

--


Dieser Beitrag wurde am 10.05.2008 um 17:22 von sabbert bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
004
10.05.2008, 17:45
gabbberjool



003, 002 hat ein name ....

bunnyhop und longjump ist schon ein grosser unterschid !

feigling hat denk ich mal hl2 mit hl1 verwechselt

--

http://www.hardbase.fm/
Ihr braucht ne map...---> http://soulbreaker.kilu.de/braucheinemap.html

AmX Mod X 1.8 Fertig pack's
http://amxbans.kilu.de/Index.html


Dieser Beitrag wurde am 10.05.2008 um 17:47 von gabbberjool bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
005
10.05.2008, 18:07
sabbert



Zitat:
gabbberjool postete
003, 002 hat ein name ....

bunnyhop und longjump ist schon ein grosser unterschid !

feigling hat denk ich mal hl2 mit hl1 verwechselt

sry meinte zum beitrag 003...

Ich habe shconmal herausgefunden das man in der datei gamemovement.cpp
werte ändern kann, aber was genau für die geschwindigkeit steht hab ich noch nicht herausgefunden...

aber schonmal danke für alle antworten bishar

--

zum Seitenanfang zum Seitenende Profil || Suche
006
10.05.2008, 18:44
gabbberjool



das musst du wen dan in der hl_gamemovement.cpp machen

#define USE_DISMOUNT_SPEED 100

Glaub das war schwachsin was ich da geschriben hab.. aber schau dir mal die gamemovement.h an da siehst schon besser aus.

Quellcode:define CTEXTURESMAX        512            // max number of textures loaded
#define CBTEXTURENAMEMAX    13            // only load first n chars of name

#define GAMEMOVEMENT_DUCK_TIME                1000.0f        // ms
#define GAMEMOVEMENT_JUMP_TIME                510.0f        // ms approx - based on the 21 unit height jump
#define GAMEMOVEMENT_JUMP_HEIGHT            21.0f        // units
#define GAMEMOVEMENT_TIME_TO_UNDUCK            ( TIME_TO_UNDUCK * 1000.0f )        // ms
#define GAMEMOVEMENT_TIME_TO_UNDUCK_INV        ( GAMEMOVEMENT_DUCK_TIME

--

http://www.hardbase.fm/
Ihr braucht ne map...---> http://soulbreaker.kilu.de/braucheinemap.html

AmX Mod X 1.8 Fertig pack's
http://amxbans.kilu.de/Index.html


Dieser Beitrag wurde am 10.05.2008 um 18:53 von gabbberjool bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
007
10.05.2008, 19:19
sabbert



ok ich schau mal, schonmal danke ;-)

--

zum Seitenanfang zum Seitenende Profil || Suche
008
10.05.2008, 19:20
feigling



Nein, ich habe nicht Hl1 mit HL2 verwechselt. Ich hatte nur gedacht, dass es in beiden Longjumps gibt. Zur Not einfach den HL1 Longjump Code nach HL2 portieren. Dürfte jetzt nicht so der Aufwand sein.

--

zum Seitenanfang zum Seitenende Profil || Suche
009
10.05.2008, 19:27
gabbberjool



aufwand denkich nicht aber ob das in der hl2 enigma geht ist die ander frage

--

http://www.hardbase.fm/
Ihr braucht ne map...---> http://soulbreaker.kilu.de/braucheinemap.html

AmX Mod X 1.8 Fertig pack's
http://amxbans.kilu.de/Index.html

zum Seitenanfang zum Seitenende Profil || Suche
010
11.05.2008, 01:49
sabbert



Zitat:
gabbberjool postete
das musst du wen dan in der hl_gamemovement.cpp machen

#define USE_DISMOUNT_SPEED 100

Glaub das war schwachsin was ich da geschriben hab.. aber schau dir mal die gamemovement.h an da siehst schon besser aus.

Quellcode:define CTEXTURESMAX        512            // max number of textures loaded
#define CBTEXTURENAMEMAX    13            // only load first n chars of name

#define GAMEMOVEMENT_DUCK_TIME                1000.0f        // ms
#define GAMEMOVEMENT_JUMP_TIME                510.0f        // ms approx - based on the 21 unit height jump
#define GAMEMOVEMENT_JUMP_HEIGHT            21.0f        // units
#define GAMEMOVEMENT_TIME_TO_UNDUCK            ( TIME_TO_UNDUCK * 1000.0f )        // ms
#define GAMEMOVEMENT_TIME_TO_UNDUCK_INV        ( GAMEMOVEMENT_DUCK_TIME

so ich hab einiges ausprobiert, hab aber keine ahnung was ich jetzt genau damit machen soll?!
Kann man das vielleicht so einstellen das man halt bei jedem Sprung immer weiter spring?!
Aber mit den Varibeln glaube ich eher net, wieß aber auch nicht genau!

Man kann aber auch nirgendswo etwas über longjump finden!

Vielleicht weiß ja doch einer eine Lösung oder kann mir sagen wie son longjump entsteht?

Warum sprint man immer weiter udn warum wird man schneller?
Hat das was mit dem Speed oder der Höhe oder oder zu tun?

Bitte um Rat.

mfg Sabbert

PS. Ist spät weiß nicht mehr unbedingt was ich rede ;-P

--

zum Seitenanfang zum Seitenende Profil || Suche
011
11.05.2008, 01:53
gabbberjool



hmmm hast alles compiliert mit Visual studio und nix hat sich dran geändert ?
so viel ich mitbekommen hab ist der Bluthunt ein recht guter coder und er hat auch viel ahnung denke er wird sich dan schon melden !

--

http://www.hardbase.fm/
Ihr braucht ne map...---> http://soulbreaker.kilu.de/braucheinemap.html

AmX Mod X 1.8 Fertig pack's
http://amxbans.kilu.de/Index.html

zum Seitenanfang zum Seitenende Profil || Suche
012
11.05.2008, 03:06
Bluthund



Wieso ich? feigling hat doch schon was zum Thema geschrieben.
Und imho ist sein Vorschlag auch das beste, was man machen kann (einfach von HL1 portieren aka C&P+anpassen). Evtl auch nur Prinzip abschauen und in ähnlicher Weise reimplementieren. Aufwand dürfte in etwa gleich sein.

Im Prinzip hat HL2 ja auch nen Longjump... Sprinten+Springen

...Variablen... *hust*

Wie ein longjump entsteht... Hmm wenn ichs richtig in Erinnerung habe so:
-beim Springen wird gekuckt ob der Spieler geduckt ist
-wenn item_longjump und Bewegungsrichtung vorwärts -> Longjump
-sonst: normal springen
Der Longjump selbst ist nichts weiter als nen normaler Sprung mit stark erhöhter Geschwindigkeit in Richtung vorwärts

Quellcode:// pm_shared.c
void PM_Jump ( void )
{
    /// (...)

    // See if user can super long jump?
    cansuperjump = atoi( pmove->PM_Info_ValueForKey( pmove->physinfo, "slj" ) ) == 1 ? true : false;

    // Acclerate upward
    // If we are ducking...
    if ( ( pmove->bInDuck ) || ( pmove->flags & FL_DUCKING ) )
    {
        // Adjust for super long jump module
        // UNDONE -- note this should be based on forward angles, not current velocity.
        if ( cansuperjump &&
            ( pmove->cmd.buttons & IN_DUCK ) &&
            ( pmove->flDuckTime > 0 ) &&
            Length( pmove->velocity ) > 50 )
        {
            pmove->punchangle[0] = -5;

            for (i =0; i < 2; i++)
            {
                pmove->velocity[i] = pmove->forward[i] * PLAYER_LONGJUMP_SPEED * 1.6;
            }
        
            pmove->velocity[2] = sqrt(2 * 800 * 56.0);
        }
        else
        {
            pmove->velocity[2] = sqrt(2 * 800 * 45.0);
        }
    }

    /// (...)
}
Das ist eigentlich schon alles, was da an Zauberei passiert :)
Gut ein Stück höher springt man als normal (56 statt 45) ;)
Das item_longjump ist dagegen total langweilig. Das macht nämlich nix weiter als hübsch auszusehen und den key "slj" zu setzen wenn es berührt wird und der Player ne Suit hat.

edit: alles noch bisschen schön zurecht gerückt

--

The C language combines all the power of assembly language with all the ease-of-use of assembly language.
"humorig is n blödwort :>" by -CarniGGeLjumpR-


Dieser Beitrag wurde am 11.05.2008 um 03:16 von Bluthund bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
013
11.05.2008, 11:13
limlug



es würde wahrscheinlich auch reichen mit jumptime und jumpheight rumzuspielen, da der Sprung ja annähernd parabelförmig abläuft.

--

Mors certa; Hora incerta
-----------------------
Haribo macht Kinder froh, KCN tuts ebenso

zum Seitenanfang zum Seitenende Profil || Suche
014
11.05.2008, 11:41
sabbert



ok schon mal vielen dank an euch.

Der Code sieht schionmal gut aus, aber ich habe gerade keine Ahnung,

wo ich den Code einfügen soll?!

--

zum Seitenanfang zum Seitenende Profil || Suche
015
11.05.2008, 16:45
feigling



Dort wo in Hl2 der Sprung berechnet wird, wo sonst. Wo das auch immer ist. Musst du halt suchen. Und Einfügen sollst du den Code garnicht. Copy & Paste wird bestimmt nicht klappen.

--

zum Seitenanfang zum Seitenende Profil || Suche
016
11.05.2008, 17:55
sabbert



hm ja war mir fast shcon klar^^
Welche variabeln muss ich denn noch alle definieren damit der code funktioniert?
Habe da nicht so viel Ahnung -.-

--

zum Seitenanfang zum Seitenende Profil || Suche
017
11.05.2008, 18:03
Bluthund



Dieser Code wird in dieser Form mit allerhöchster Wahrscheinlichkeit in HL2 überhaupt nicht funktionieren - auch nicht wenn du noch so viele Variablen definierst. Das Snippet da oben ist direkt aus HL1 kopiert und ich hab es nur deshalb gepostet, damit du nicht im HLSDK schauen musst, weil ich davon ausgegangen bin, dass das nicht jeder rumliegen hat.

Zitat:
Habe da nicht so viel Ahnung -.-
Sieht mir eher danach aus als hättest du gar keine Ahnung.

--

The C language combines all the power of assembly language with all the ease-of-use of assembly language.
"humorig is n blödwort :>" by -CarniGGeLjumpR-

zum Seitenanfang zum Seitenende Profil || Suche
018
11.05.2008, 19:01
sabbert



Zitat:
Bluthund postete
Dieser Code wird in dieser Form mit allerhöchster Wahrscheinlichkeit in HL2 überhaupt nicht funktionieren - auch nicht wenn du noch so viele Variablen definierst. Das Snippet da oben ist direkt aus HL1 kopiert und ich hab es nur deshalb gepostet, damit du nicht im HLSDK schauen musst, weil ich davon ausgegangen bin, dass das nicht jeder rumliegen hat.

Zitat:
Habe da nicht so viel Ahnung -.-
Sieht mir eher danach aus als hättest du gar keine Ahnung.
gar keine ist zwar etwas übertrieben, aber ahnung hab ich wirklich net^^

so nach einigem an suchen habe ich den code hier gefunden:
Quellcode:float spd;

        float flMul;

    float flMulDucked;

    float flMulLeap;

    int i;

    bool bIsLeaping = false;

    

    spd = VectorLength( mv->m_vecVelocity );

    if (player->GetTeamNumber() == TEAM_REBELS)

        {

            flMul = sqrt(2 * sv_gravity.GetFloat() * GAMEMOVEMENT_VAMP_JUMP_HEIGHT);

            flMulDucked = sqrt(2 * sv_gravity.GetFloat() * GAMEMOVEMENT_JUMP_HEIGHT);

            flMulLeap = sqrt(2 * sv_gravity.GetFloat() * GAMEMOVEMENT_JUMP_LEAP);

        }

    else {

            flMul = sqrt(2 * sv_gravity.GetFloat() * GAMEMOVEMENT_JUMP_HEIGHT);

    }



    // Acclerate upward

    // If we are ducking...

    float startz = mv->m_vecVelocity[2];

    if ( (  player->m_Local.m_bDucking ) || (  player->GetFlags() & FL_DUCKING ) )

    {

        Vector vecDirVamp;

        //float FMoveSpeed;

    

        //Get player's view direction

        AngleVectors( mv->m_vecViewAngles, &vecDirVamp );

        

        VectorNormalize( vecDirVamp );



        if (player->GetTeamNumber() == TEAM_REBELS)

        {

            if ( ( mv->m_nButtons & IN_DUCK ) && ( spd > 50 ) && ( player->m_Local.m_flDucktime > 0 ) )

            {

                for (i =0; i < 2; i++)

                {        

                    mv->m_vecVelocity[i] = vecDirVamp[i] * 350 * 1.6;

                    bIsLeaping = true;

                }

            }

            

            if ( bIsLeaping )

            {

                mv->m_vecVelocity[2] = flGroundFactor * flMulLeap;

                bIsLeaping = false;

            }

            else

            {

                mv->m_vecVelocity[2] = flGroundFactor * flMulDucked;  // 2 * gravity * height

            }

        }

        else

        {

            mv->m_vecVelocity[2] += flGroundFactor * flMul;

        }



    }

    else

    {

        mv->m_vecVelocity[2] += flGroundFactor * flMul;  // 2 * gravity * height

    }
http://www.chatbear.com/unity2/4991/779,1163399623,21483/1014414/0#2

soweit ich verstanden habe geht es um die Checkjumpbutton() Funktion ?!
Habe die Funktion auch gefunden, einmla in gamemovement.h/.cpp und hl_movement...
Habe es versucht einzubinden aber der Compiler spuckt nur fehler aus?
Habt ihr nee Idee ob der code überhaupt funktionieren kann, da die im anderen Forum meinen es klappt?!

mfg

--

zum Seitenanfang zum Seitenende Profil || Suche
019
11.05.2008, 19:25
Bluthund



Mal abgesehen von der absolut grottigen Formatierung und der fragwürdigen Initialisierung einiger Variablen (welche der MS Compiler auch anmängelt), lässt sich dieser Code 1zu1 in nen frisches SourceSDK Typ: OrangeBox einfügen und einwandfrei kompilieren.

Das einzige, was fehlt, sind die defines für Konstanten, welche spezifisch für die Mod sind, für die der Poster da entwickelt.
Aber an 3x #define schreiben solltes eigentlich nicht hängen...

--

The C language combines all the power of assembly language with all the ease-of-use of assembly language.
"humorig is n blödwort :>" by -CarniGGeLjumpR-

zum Seitenanfang zum Seitenende Profil || Suche
020
11.05.2008, 19:46
sabbert



Zitat:
Bluthund postete
Mal abgesehen von der absolut grottigen Formatierung und der fragwürdigen Initialisierung einiger Variablen (welche der MS Compiler auch anmängelt), lässt sich dieser Code 1zu1 in nen frisches SourceSDK Typ: OrangeBox einfügen und einwandfrei kompilieren.

Das einzige, was fehlt, sind die defines für Konstanten, welche spezifisch für die Mod sind, für die der Poster da entwickelt.
Aber an 3x #define schreiben solltes eigentlich nicht hängen...

Wird es denn auch für EP1 funktionieren, da ich dieses nutze?!
Weclhe defines muss ich denn nehmen damit der Code funktionieren kann?

--


Dieser Beitrag wurde am 11.05.2008 um 20:15 von sabbert bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
021
11.05.2008, 20:53
Bluthund



Sollte auch im ep1 Sourcecode funktionieren. Aber warum die alte Engineversion nutzen, wenn man die neue haben kann?

Zitat:
Weclhe defines muss ich denn nehmen damit der Code funktionieren kann?
Die, die fehlen?!
*hint* "nichtdeklarierter Bezeichner" *hint*
Wenn dir das schon Probleme bereitet, was machst du dann bitte wenn dir der Linker nicht aufgelöste Symbole meldet.

edit: Desweiteren müsste man für ne non-Teamplay Mod noch einige Veränderungen an den Verzweigungen vornehmen. Aber das ist ja eigentlich mehr als offensichtlich.

--

The C language combines all the power of assembly language with all the ease-of-use of assembly language.
"humorig is n blödwort :>" by -CarniGGeLjumpR-


Dieser Beitrag wurde am 11.05.2008 um 21:01 von Bluthund bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
022
11.05.2008, 21:37
sabbert



Zitat:
Bluthund postete
Sollte auch im ep1 Sourcecode funktionieren. Aber warum die alte Engineversion nutzen, wenn man die neue haben kann?
Zitat:
Weclhe defines muss ich denn nehmen damit der Code funktionieren kann?
Die, die fehlen?!
*hint* "nichtdeklarierter Bezeichner" *hint*
Wenn dir das schon Probleme bereitet, was machst du dann bitte wenn dir der Linker nicht aufgelöste Symbole meldet.

edit: Desweiteren müsste man für ne non-Teamplay Mod noch einige Veränderungen an den Verzweigungen vornehmen. Aber das ist ja eigentlich mehr als offensichtlich.

ja das ich die nicht deklarierten nehmen muss is klar^^ sry
ja und das man Veränderungen an den Verzweigungen vornehmen muss is vielkleicht für dich offennsichtlich für mich aber "noch" nicht.
Ich habe schon ein paar Tutorials durchgearbeitet in c++, aber noch wirklich ein anfänger deswgeen frage ich ja ;-)

Aber thx für die ganzen antworten =)

edit:
so habe mir jetzt mal angegcukt was alles deklariert werden muss, soweit ich verstanden habe geht das über define?!

#define name ?

--


Dieser Beitrag wurde am 11.05.2008 um 22:12 von sabbert bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
023
12.05.2008, 01:01
Bluthund



Ja in diesem konkreten Fall hier fehlen defines. #define ist ein Precompilerbefehl und deklariert (im Sinne einer C/CPP-Deklaration) Null Komma garnix. Man könnte es allerdings auch über const Variablen lösen (im Prinzip gingen sogar normale Variablen, aber das wäre semantischer Unfug).
Ganz ehrlich lies noch ein paar mehr Tutorials oder auch ein Buch mit Titel != $lang in 24h oder lad dir Folien ner C++-Vorlesung erstes oder zweites Semester runter. Aber so wirst du wie schon erwähnt nicht über den ersten Linker Error hinauskommen.

Damit das hier ein Ende hat
Quellcode:#define TEAM_REBELS 0
#define GAMEMOVEMENT_VAMP_JUMP_HEIGHT 0.0f
#define GAMEMOVEMENT_JUMP_LEAP 0.0f
Einzufügen an beliebiger Stelle vor erster Nutzung der jeweiligen Bezeichner; im Normalfall natürlich an den Anfang der *.cpp oder in den Header. Natürlich musst du anstelle der jetzt angegebenen Zahlenwerte was entsprechendes eintragen.
Damit lässt sich das ganze kompilieren, wird aber wie schon gesagt in einer Mod ohne Teams nicht funktionieren, da die Veränderungen nur für Spieler mit (player->GetTeamNumber() == TEAM_REBELS) gelten.
Ansonsten würd ich die Bezeichner mal anpassen insofern du nicht auch vorhast eine Mod mit Vampiren zu bauen. Solcher C&P Kauderwelsch wird nämlich ziemlich schnell unübersichtlich.

Zitat:
Ich habe schon ein paar Tutorials durchgearbeitet in c++, aber noch wirklich ein anfänger deswgeen frage ich ja ;-)
Ich würde erstmal versuchen eine Sprache komplett zu beherrschen bevor ich mit ner anderen anfange...
Und als Anfänger an etwas so "monströsen" wie dem SourceSDK (was auch noch absolut schlecht strukturiert ist) zu arbeiten ist btw nicht so wirklich der Bringer. Man kommt zwar mit Copy&Paste + Trial&Error zurande aber reißen wirst damit nix. Am Ende sitzt du auf nem Berg zusammenkopierter Features und sobald auch nur ein Bug auftaucht wirst du nicht mehr glücklich mit dem Code.

--

The C language combines all the power of assembly language with all the ease-of-use of assembly language.
"humorig is n blödwort :>" by -CarniGGeLjumpR-

zum Seitenanfang zum Seitenende Profil || Suche
024
12.05.2008, 18:05
sabbert



ok danke, es tauchen keine Fehler mehr auf!

Doch InGame funktioniert es auch nicht ?!

Muss ich es noch erst aktivieren oder wie?

Ich hab es in der Checkjumpbutton() Funktion eingebaut hm...

--

zum Seitenanfang zum Seitenende Profil || Suche