Portal-Zone Gothic-Zone Gothic II-Zone Gothic 3-Zone Gothic 4-Zone Modifikationen-Zone Download-Zone Foren-Zone RPG-Zone Almanach-Zone Spirit of Gothic

 

Seite 1 von 2 12 Letzte »
Ergebnis 1 bis 20 von 24
  1. Beiträge anzeigen #1 Zitieren
    Hero Avatar von lali
    Registriert seit
    Feb 2016
    Beiträge
    5.473
     
    lali ist offline

    Simple Sprintfunktion ohne Lego?

    Hey. Issues hat mir vor seinem "Verschwinden" noch erzählt, er hätte jetzt Sprinten integriert. Die neuesten Skripte dazu konnte er mir aber nicht mehr schicken oder ich kann jedenfalls nichts dazu in den aktuellen, die ich habe, finden. Er hat ohne Ikarus und Lego gearbeitet und darum wundere ich mich, wie er das gemacht hat. Hat jemand eine Idee?
    Phoenix Dev | Website | Discord

  2. Beiträge anzeigen #2 Zitieren
    Knight
    Registriert seit
    Aug 2009
    Ort
    Hessen
    Beiträge
    1.487
     
    Cryp18Struct ist offline
    Im normalen Gothic 2 gibt es die Möglichkeit hotkey zu aktivieren welche dafür gedacht sind schnell Heiltränke zu trinken(ohne das Inventar zu öffnen).
    In der .ini: GAME.usePotionKeys
    Diese hotkeys kann man "missbrauchen" um alles mögliche an skriptcode aufzurufen.
    Intern werden da einfach die Funktionen PLAYER_HOTKEY_LAME_POTION() oder PLAYER_HOTKEY_LAME_HEAL () aufgerufen(B_OnHotkey.d) die du ja quasi nach belieben füllen kannst.

    Wenn es nicht um hotkeys geht ist mir unklar was das Problem ohne Ikarus ist.

  3. Beiträge anzeigen #3 Zitieren
    Hero Avatar von lali
    Registriert seit
    Feb 2016
    Beiträge
    5.473
     
    lali ist offline
    Es geht um Gothic 1, also geht es schätze ich nicht um Hotkeys. Ich glaube es sollte über Shift laufen oder so. Wobei mich das verwirrt, weil das ja schon zwischen Gehen und Laufen umschaltet. Allerdings habe ich jetzt erst realisiert, dass dieses "MEM_KeyState" ja von Ikarus kommt und nicht von Lego. Möglicherweise hat er doch Ikarus genutzt und nur Lego nicht.

    Ich habe auch nichts dagegen, Lego zu benutzen, aber ich dachte, es wäre das beste, immer erst die Lösungen auszureizen, die am einfachsten sind.

    Kann man mir mal jemand eine grundlegende (dumme) Frage zu Lego und Ikarus beantworten? Also ich denke es wird richtig initialisiert (durch Mud-Freaks Methode); testweise werden z.B. die grünen Namen bei NPCs angezeigt, die befreundet sind. Aber wenn ich jetzt ein neues Skript habe, wie z.B. so eine Sprintfunktion. Erstelle ich dazu dann eine eigene, neue Datei (.d) oder schreibe ich das irgendwo dazu? Und wenn eine neue Datei, wie bringe ich Gothic dann bei, dass es das Ding benutzen/lesen/parsen soll? Z.B. stehen alle Lego-Skripte wohl in der Header.src, wenn ich das richtig sehe. Dort einfach ein neues Skript dazu einzutragen, schien aber nicht zu funktionieren.
    Phoenix Dev | Website | Discord

  4. Beiträge anzeigen #4 Zitieren
    Dea
    Registriert seit
    Jul 2007
    Beiträge
    10.447
     
    Lehona ist offline
    Zitat Zitat von lali Beitrag anzeigen
    Kann man mir mal jemand eine grundlegende (dumme) Frage zu Lego und Ikarus beantworten? Also ich denke es wird richtig initialisiert (durch Mud-Freaks Methode); testweise werden z.B. die grünen Namen bei NPCs angezeigt, die befreundet sind. Aber wenn ich jetzt ein neues Skript habe, wie z.B. so eine Sprintfunktion. Erstelle ich dazu dann eine eigene, neue Datei (.d) oder schreibe ich das irgendwo dazu? Und wenn eine neue Datei, wie bringe ich Gothic dann bei, dass es das Ding benutzen/lesen/parsen soll? Z.B. stehen alle Lego-Skripte wohl in der Header.src, wenn ich das richtig sehe. Dort einfach ein neues Skript dazu einzutragen, schien aber nicht zu funktionieren.
    Ich würde grundsätzlich davon abraten, "interne" Dateien der beiden Scriptpakete zu bearbeiten. Bis auf ein paar wenige Ausnahmen in LeGo (Teile der UserConst.d und Focusnames.d) sollte es niemals einen Grund geben, diese Dateien anzufassen.

    Dementsprechend kannst du deine Script speichern, wo du möchtest. Damit Gothic diese Scripte liest, müssen sie einfach in der Gothic.src eingetragen sollen (natürlich nach Ikarus und LeGo, falls sie auf diese Pakete zurückgreifen). LeGo verwendet die Header.src nur, um eine einfachere Installation zu ermöglichen (denn dann muss man nur die Header.src in die Gothic.src eintragen und nicht alle Dateien einzeln).

  5. Beiträge anzeigen #5 Zitieren
    Knight
    Registriert seit
    Aug 2009
    Ort
    Hessen
    Beiträge
    1.487
     
    Cryp18Struct ist offline
    Zitat Zitat von lali Beitrag anzeigen
    Ich habe auch nichts dagegen, Lego zu benutzen, aber ich dachte, es wäre das beste, immer erst die Lösungen auszureizen, die am einfachsten sind.
    Ich habe die Erfahrung gemacht das Ikarus+LeGo verwenden oft zu einfacheren Lösungen führen .
    Mal als Beispiel eine Funktion die regelmäßig aufgerufen werden soll. Mit LeGo kann man da ja einfach die framefunctions nutzen. Ist super bequem.
    Das finde ich viel einfacher als erst den spacer zu starten, ein triggerscript vob zu setzen etc.
    Zitat Zitat von lali Beitrag anzeigen
    Kann man mir mal jemand eine grundlegende (dumme) Frage zu Lego und Ikarus beantworten? Also ich denke es wird richtig initialisiert (durch Mud-Freaks Methode); testweise werden z.B. die grünen Namen bei NPCs angezeigt, die befreundet sind. Aber wenn ich jetzt ein neues Skript habe, wie z.B. so eine Sprintfunktion. Erstelle ich dazu dann eine eigene, neue Datei (.d) oder schreibe ich das irgendwo dazu? Und wenn eine neue Datei, wie bringe ich Gothic dann bei, dass es das Ding benutzen/lesen/parsen soll? Z.B. stehen alle Lego-Skripte wohl in der Header.src, wenn ich das richtig sehe. Dort einfach ein neues Skript dazu einzutragen, schien aber nicht zu funktionieren.
    Das ist unabhängig davon ob du Ikarus und LeGo nutzt.
    Es gibt eine .src Datei in der die Skripte aufgeführt werden(für gewöhnlich: gothic.src).
    Dort können .d Dateien, aber auch weitere .src Dateien aufgeführt werden. Und der Parser geht das dann von oben nach unten durch.

    Wenn du in deinem sprintcode Sachen aus Ikarus verwendest muss die Datei in der der sprintcode steht halt erst nach Ikarus in der gothic.src stehen.
    Wenn du auch LeGo kram verwendest muss es eben hinter den LeGo Sachen stehen.
    Hier mal der Anfang der Dirty Swamp gothic.src:
    Code:
    _INTERN\CONSTANTS.D
    _INTERN\CLASSES.D
    
    DirtySwamp\SpellConstants.d
    DirtySwamp\SpellDamageCalculation.d
    DirtySwamp\DamageConstants.d
    DirtySwamp\ExpConstants.d
    
    Ikarus_Const_G2.d
    EngineClasses\Misc.d
    EngineClasses\oC*.d
    EngineClasses\zC*.d
    Ikarus.d
    AI\AI_INTERN\Floats.d
    DirtySwamp\broadcast.d
    
    DirtySwamp\AlphaVobFixSektenspinner.d
    
    AI\AI_INTERN\AI_CONSTANTS.D
    AI\AI_INTERN\BODYSTATES.D
    AI\AI_INTERN\FOCUS.D
    AI\AI_INTERN\Npc_SetToMad.d
    AI\AI_INTERN\Species.d
    AI\AI_INTERN\PrintDebug.d
    AI\AI_INTERN\PrintPlus.d
    
    STORY\Story_Globals.d
    AI\HUMAN\B_HUMAN\B_LookAtNPC.d
    AI\HUMAN\TA_Human\ZS_Watch_Conversation.d
    STORY\NPC_Globals.d
    
    LeGo\Header.src
    DirtySwamp\frameFunctionExtended.d
    Spine\Spine.src
    SpineEmulation\DS_OverallSave.d
    
    GFA\GFA_G2.src
    mud_freak\*
    
    DirtySwamp\TeleportToNpc.d
    
    STORY\Log_Entries\Log_Constants_*.d
    STORY\XP_Constants.d
    [...]
    Die Datei DirtySwamp\frameFunctionExtended.d wird hier erst nach Lego aufgeführt, weil ich in der Datei Sachen aus LeGo verwende.
    Eine Datei wie DirtySwamp\SpellConstants.d kann sehr weit oben stehen(weil sie nur Konstanten enthält und keinerlei Abhängigkeiten hat).

    Ob du dir deine Sprintfunktionen in eine eigene .d Datei legst oder in eine schon existierende Datei mit rein bastelst ist dir überlassen.
    Die Aufteilung der Skripte in verschiedene .d Dateien erhöht einfach nur die Lesbarkeit für Menschen.
    Es macht wahrscheinlich Sinn eine eigene Datei MeineSprintfunktionen.d zu erstellen und da alles rein zu packen was zum sprinten gehört.
    Du kannst aber auch deine gesamte mod in eine einzelne .d Datei mit 100000 Zeilen packen. Wäre halt für dich unübersichtlich.

  6. Beiträge anzeigen #6 Zitieren
    Hero Avatar von lali
    Registriert seit
    Feb 2016
    Beiträge
    5.473
     
    lali ist offline
    Vielen Dank ihr beiden. Das macht schonmal Sinn.
    Ein Skript habe ich jetzt unterhalb von Ikarus und Lego eingetragen, am Beispiel des Sprintskripts von Illari (basierend auf dem von Draxes). Sprinten tut er aber nicht. Habs auch mit G und anderen Tasten probiert.

    Code:
    var int isSprinting;
    
    func void deactivateSprint()
    {
        Mdl_RemoveOverlayMDS(hero, "HUMANS_SPRINT.MDS");
        if(Npc_HasReadiedRangedWeapon(hero))
        {
            AI_TELEPORT(hero, "PC_HERO");
        };
        isSprinting = False;
    };
    
    func void Sprinten() 
    {
        var C_Npc her;
        her = Hlp_GetNpc (PC_Hero);
        if (Hlp_GetInstanceID (hero) == Hlp_GetInstanceID (her))
            {
            var int returnState;
            returnState = MEM_KeyState(KEY_V); /*Die bevorzugte Taste*/
    
            if (returnState ==  KEY_PRESSED) /*Taste wird gedrückt und gehalten*/
            { 
                Mdl_ApplyOverlayMds(hero, "HUMANS_SPRINT.MDS");
                isSprinting = True;
            }
            else if (returnState == KEY_RELEASED)/*Taste wird noch gedrückt und losgelassen*/
                {
                if(isSprinting)
                {
                deactivateSprint();
                };
            };
        };
    };
    Phoenix Dev | Website | Discord

  7. #7 Zitieren
    Illari
    Gast
     
    Zitat Zitat von lali Beitrag anzeigen
    Vielen Dank ihr beiden. Das macht schonmal Sinn.
    Ein Skript habe ich jetzt unterhalb von Ikarus und Lego eingetragen, am Beispiel des Sprintskripts von Illari (basierend auf dem von Draxes). Sprinten tut er aber nicht. Habs auch mit G und anderen Tasten probiert.

    Spoiler:(zum lesen bitte Text markieren)
    Code:
    var int isSprinting;
    
    func void deactivateSprint()
    {
        Mdl_RemoveOverlayMDS(hero, "HUMANS_SPRINT.MDS");
        if(Npc_HasReadiedRangedWeapon(hero))
        {
            AI_TELEPORT(hero, "PC_HERO");
        };
        isSprinting = False;
    };
    
    func void Sprinten() 
    {
        var C_Npc her;
        her = Hlp_GetNpc (PC_Hero);
        if (Hlp_GetInstanceID (hero) == Hlp_GetInstanceID (her))
            {
            var int returnState;
            returnState = MEM_KeyState(KEY_V); /*Die bevorzugte Taste*/
    
            if (returnState ==  KEY_PRESSED) /*Taste wird gedrückt und gehalten*/
            { 
                Mdl_ApplyOverlayMds(hero, "HUMANS_SPRINT.MDS");
                isSprinting = True;
            }
            else if (returnState == KEY_RELEASED)/*Taste wird noch gedrückt und losgelassen*/
                {
                if(isSprinting)
                {
                deactivateSprint();
                };
            };
        };
    };
    Ja weil die function für Lego/Ikarus ist^^ Zu erkennen an MEM_KeyState! Die wird mittels FFApplyOnceExt in der Startup.d initialisiert. Sie stellt nur eine nicht NINJA variante dar! Hätte benjaminfoo nicht den Report Tab auf gitHUB entfernt hätte es dir die entäuschten versuche erspart^^
    Ich habe jeden falls auch oft schon überlegt wie man dem Spiel eine neue taste beibringt, um die Map/Stats/Inventar/Potion Hotkeys nachzubilden.

    Das hier war meine vorherige Mana Hotkey replacement variante
    (Enthält aber kein Ranged Weapon Fix)
    Spoiler:(zum lesen bitte Text markieren)
    Code:
    var int sprinten;
    
    func void player_hotkey_lame_potion()
    {
        if(SPRINTEN == TRUE)
        {
            SPRINTEN = FALSE;
            Mdl_RemoveOverlayMds(hero,"HUMANS_SPRINTKEY.MDS");
            AI_PrintScreen("Laufen",-1,8,FONT_Screen,4);
        }
        else
        {
            SPRINTEN = TRUE;
            Mdl_ApplyOverlayMds(hero,"HUMANS_SPRINTKEY.MDS");
            AI_PrintScreen("Sprinten",-1,5,FONT_Screen,4);
        };
    };


    Jetzt müsste man dem Spiel nur irgendwie eine func void player_hotkey_sprint beibringen.
    Aber dafür muss noch Menü eintrag etrstellt werden usw. Halt so in der art wie GFA
    Geändert von Illari (18.05.2019 um 15:56 Uhr)

  8. Beiträge anzeigen #8 Zitieren
    Hero Avatar von lali
    Registriert seit
    Feb 2016
    Beiträge
    5.473
     
    lali ist offline
    Wenn ich in den Skripten nach MEM_KeyState suche, taucht der Begriff nur in der Ikarus.d auf, deshalb dachte ich, es sei eine Ikarus-Funktion. Aber egal, ich hab ja auch Lego installiert. Nur warum (und wie?) muss ich das jetzt noch extra in der Startup initialisieren? Also wieso reicht es nicht, dass das Skript in der Gothic.src eingetragen ist?

    Wie gesagt modde ich für Gothic 1 und ich will ungern Hotkeys (falls es die hier überhaupt schon gibt) ersetzen, die manche Spieler vielleicht anders nutzen.
    Phoenix Dev | Website | Discord

  9. #9 Zitieren
    Illari
    Gast
     
    Zitat Zitat von lali Beitrag anzeigen
    Wenn ich in den Skripten nach MEM_KeyState suche, taucht der Begriff nur in der Ikarus.d auf, deshalb dachte ich, es sei eine Ikarus-Funktion. Aber egal, ich hab ja auch Lego installiert. Nur warum (und wie?) muss ich das jetzt noch extra in der Startup initialisieren? Also wieso reicht es nicht, dass das Skript in der Gothic.src eingetragen ist?

    Wie gesagt modde ich für Gothic 1 und ich will ungern Hotkeys (falls es die hier überhaupt schon gibt) ersetzen, die manche Spieler vielleicht anders nutzen.
    Hm... naja war mir da nicht so sicher mit MEM_KeyState^^
    Warum es technisch genau dort mittels dieses Befehls initialisiert werden muss kann ich dir auch nicht beantworten. Mache ja keine sonderlich großen Projekte. Hatte halt nur versucht die NINJA patch variante nachzubauen.

    Meine Startup.d

    Code:
    func void init_global()
    {
        Game_InitGerman();
        mem_initall();
        LeGo_Init(LeGo_Focusnames | LeGo_FrameFunctions);
        FF_ApplyOnceExt(Sprinten, 5, -1);
    };
    Habe es auch in G1 probiert und hatte funktioniert.
    Falls du zufällig eine HUMANS_SPRINT.MSB/MDH hättest ohne PFX an den füßen,
    Könntest du sie mir vielleicht bitte zusenden? Ich habe zwar die Anim von StrongHand eingebunden aber die hat dann plötzlich auch das PFX???

  10. Beiträge anzeigen #10 Zitieren
    Hero Avatar von lali
    Registriert seit
    Feb 2016
    Beiträge
    5.473
     
    lali ist offline
    Okay, das funktioniert. Vielen Dank Illari. Kann mir irgendjemand noch ein paar Takte zu den Fragen oben sagen, also wieso das in diesem Fall jetzt nötig ist, das in der Startup einzutragen?

    Wegen der Sprint.mds. Bei mir ist da kein pfx. Das gab es glaube ich in Gothic 1 noch nicht. Wenn du also die .mds aus Stronghand genommen hast (wobei die da ja glaube ich eine ganz neue Animation von AlexDraven verwenden) und nachdem du sie in Gothic 2 eingefügt hast hattest du das Pfx dann, hat das wohl nichts mit der Animation zu tun. Wird bestimmt irgendwo anders hinzugefügt.

    Ich habe dazu ohnehin eine Frage, deshalb gleich ein neuer Thread dazu, da kannst du dich ja anschließen.
    Phoenix Dev | Website | Discord
    Geändert von lali (18.05.2019 um 16:14 Uhr)

  11. #11 Zitieren
    Illari
    Gast
     
    Zitat Zitat von lali Beitrag anzeigen
    Ich habe dazu ohnehin eine Frage, deshalb gleich ein neuer Thread dazu, da kannst du dich ja anschließen.
    Kann nicht sein... Ich bin mir sicher das die HUMANS_SPRINT.MDS ebenfalls einen groundPFX eintrag hat. Und war jetzt eigentlich noch im glauben das die Geschwindigkeitstränke diesen ebenfalls einleiten. Obwohl das PFX ja an die ANIM gebunden ist und nicht an das mesh des Trankes.

  12. Beiträge anzeigen #12 Zitieren
    Hero Avatar von lali
    Registriert seit
    Feb 2016
    Beiträge
    5.473
     
    lali ist offline
    Also ich sehe jedenfalls keinen Pfx bei mir in Gothic 1 und da wurde nichts an dieser Animation geändert.
    // edit: Also ich bin jetzt komplett vom Austauschplatz zum Alten Lager gesprintet. Plötzlich war für eine Milisekunde ein blauer Pfx zu sehen. Aber die ganze übrige Zeit nichts. Mann.^^
    Phoenix Dev | Website | Discord

  13. #13 Zitieren
    Illari
    Gast
     
    Zitat Zitat von lali Beitrag anzeigen
    Also ich sehe jedenfalls keinen Pfx bei mir in Gothic 1 und da wurde nichts an dieser Animation geändert.
    // edit: Also ich bin jetzt komplett vom Austauschplatz zum Alten Lager gesprintet. Plötzlich war für eine Milisekunde ein blauer Pfx zu sehen. Aber die ganze übrige Zeit nichts. Mann.^^
    Da hast du wohl einen der gründe warum es bei bestimmten sachen deaktiviert wurde!
    Naja ich werd mal gucken ob ich das nochmal wegbekomme wie früher.
    Finde es nur blöd das man die ganzen ANIM's nicht erstellen lassen kann ohne abbruch oder fehler.
    Immer will er alle neu erstellen!

  14. Beiträge anzeigen #14 Zitieren
    Dea
    Registriert seit
    Jul 2007
    Beiträge
    10.447
     
    Lehona ist offline
    Zitat Zitat von lali Beitrag anzeigen
    Wenn ich in den Skripten nach MEM_KeyState suche, taucht der Begriff nur in der Ikarus.d auf, deshalb dachte ich, es sei eine Ikarus-Funktion.
    Ist es auch, da habt ihr euch gegenseitig wohl ein wenig verwirrt :P

    Zitat Zitat von lali Beitrag anzeigen
    Aber egal, ich hab ja auch Lego installiert. Nur warum (und wie?) muss ich das jetzt noch extra in der Startup initialisieren? Also wieso reicht es nicht, dass das Skript in der Gothic.src eingetragen ist?
    Verzeih mir die folgenden bildlichen Analogien, aber: Ich würde Funktionen immer wie (Koch-)Rezepte betrachten. Genau wie ein Rezept beinhaltet eine Funktion eine Liste von benötigten Zutaten (die Parameter), eine Anleitung wie diese Zutaten zu verarbeiten sind (der sog. Körper der Funktion) und ein Ergebnis, wobei das Ergebnis nicht immer unbedingt ein Wert ist, sondern sich eben auch durch sogenannte Seiteneffekte auszeichnet: Die Funktion Mdl_ApplyOverlayMDS hat zwar kein richtiges Ergebnis, aber der Seiteneffekt dass der NPC jetzt andere Animationen benutzt ist ja auch eine Art Ergebnis.

    Wenn du jetzt deine Funktion (Rezept) in die Gothic.src (Kochbuch) einträgst, bringt das erstmal wenig. Du musst die Funktion auch ausführen (das Rezept kochen). In diesem Fall wollen wir, dass die Funktion extrem häufig ausgeführt wird, weil du ja ständig überprüfen möchtest bzw. musst, ob die entsprechende Taste gedrückt ist/wurde. Ohne LeGo musste man dafür erstmal ein Objekt in der ZEN erstellen (ein oCTriggerScript), das dann dauerhaft deine Funktion ausführt. Weil das sehr umständlich ist, gibt es mit LeGo die Möglichkeit, das nur über Änderungen in den Scripten zu bewerkstelligen. Dafür ist folgende Zeile verantwortlich:
    Code:
    FF_ApplyOnceExt(Sprinten, 5, -1);
    Siehe dazu auch die Dokumentation.

    Als erstes nennt man die Funktion, die regelmäßig ausgeführt werden soll (in diesem Fall 'Sprinten'), dann in welchen Zeitabständen sie ausgeführt werden soll (in diesem Fall alle 5 Millisekunden) und danach wie häufig, wobei -1 in diesem Fall eben "unendlich oft" bedeutet. Kleine Anmerkung dazu: Sehr kleine Werte für die Ausführungsabstände sollte man vermeiden und stattdessen lieber 0 angeben, denn das bedeutet "jeden Frame", also ungefähr "so häufig wie möglich, solange das sinnvoll ist". Rechnet man mit ca. 60FPS, ist das ca. alle 16 Millisekunden (und bei z.B. 30FPS sogar nur alle 33ms).

    Die Zeilen davor mit 'Init' im Namen braucht man nur für Ikarus/LeGo im Allgemeinen, da diese beiden Scriptpakete erst ein paar Dinge vorbereiten müssen, bevor sie richtig funktionieren (sonst wäre alles viel, viel langsamer).

    In Gothic 1 gibt es keine Funktion Init_Global(), aber im LeGo-Thread sollte im Eröffnungspost ein Post von mud-freak verlinkt sein, der erklärt, wie man LeGo stattdessen initialisiert.

  15. Beiträge anzeigen #15 Zitieren
    Hero Avatar von lali
    Registriert seit
    Feb 2016
    Beiträge
    5.473
     
    lali ist offline
    Danke für die ausführliche Erklärung. Analogien sind gut.^^
    Aber wegen dem "0" statt "-1". Sobald ich da 0 eintrage, funktioniert es nicht mehr.
    Phoenix Dev | Website | Discord

  16. Beiträge anzeigen #16 Zitieren
    Apprentice
    Registriert seit
    Feb 2018
    Beiträge
    19
     
    bogu9821 ist offline
    Zitat Zitat von lali Beitrag anzeigen
    Danke für die ausführliche Erklärung. Analogien sind gut.^^
    Aber wegen dem "0" statt "-1". Sobald ich da 0 eintrage, funktioniert es nicht mehr.
    The third argument in this function means how many times the function will be called.
    If you give 0, then the function will not be called.

    However, I would not use framefunction, I would just hook oCGame :: HandleEvents.
    Certainly it will be a faster and better solution.

  17. Beiträge anzeigen #17 Zitieren
    Knight
    Registriert seit
    Aug 2009
    Ort
    Hessen
    Beiträge
    1.487
     
    Cryp18Struct ist offline
    Zitat Zitat von lali Beitrag anzeigen
    Danke für die ausführliche Erklärung. Analogien sind gut.^^
    Aber wegen dem "0" statt "-1". Sobald ich da 0 eintrage, funktioniert es nicht mehr.
    Lehona meinte auch 0 statt 5 :
    Code:
    FF_ApplyOnceExt(Sprinten, 5, -1); // Funktion "Sprinten" aufrufen, alle 5 ms, unendlich oft
    FF_ApplyOnceExt(Sprinten, 0, -1); // Funktion "Sprinten" aufrufen, jeden frame, unendlich oft

  18. #18 Zitieren
    Illari
    Gast
     
    Zitat Zitat von bogu9821 Beitrag anzeigen
    The third argument in this function means how many times the function will be called.
    If you give 0, then the function will not be called.

    However, I would not use framefunction, I would just hook oCGame :: HandleEvents.
    Certainly it will be a faster and better solution.
    Can you show us a simple example of such a hook?

  19. Beiträge anzeigen #19 Zitieren
    Hero Avatar von lali
    Registriert seit
    Feb 2016
    Beiträge
    5.473
     
    lali ist offline
    Zitat Zitat von bogu9821 Beitrag anzeigen
    The third argument in this function means how many times the function will be called.
    If you give 0, then the function will not be called.

    However, I would not use framefunction, I would just hook oCGame :: HandleEvents.
    Certainly it will be a faster and better solution.
    Zitat Zitat von Cryp18Struct Beitrag anzeigen
    Lehona meinte auch 0 statt 5 :
    Code:
    FF_ApplyOnceExt(Sprinten, 5, -1); // Funktion "Sprinten" aufrufen, alle 5 ms, unendlich oft
    FF_ApplyOnceExt(Sprinten, 0, -1); // Funktion "Sprinten" aufrufen, jeden frame, unendlich oft
    Achso. Das hab ich verwechselt.
    Phoenix Dev | Website | Discord

  20. Beiträge anzeigen #20 Zitieren
    Hero Avatar von lali
    Registriert seit
    Feb 2016
    Beiträge
    5.473
     
    lali ist offline
    Eine Frage zu

    Code:
    MEM_KeyState(KEY_V);

    Kann man dort auch irgendwie Tastenkombinationen eintragen? Zum Beispiel: Führe diese Aktion aus, wenn X+Leertaste gedrückt wird?
    Oder gibt es eine andere Möglichkeit, Aktionen bestimmte Tastenkombos zuzuordnen?
    Phoenix Dev | Website | Discord

Seite 1 von 2 12 Letzte »

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
Impressum | Link Us | intern
World of Gothic © by World of Gothic Team
Gothic, Gothic 2 & Gothic 3 are © by Piranha Bytes & Egmont Interactive & JoWooD Productions AG, all rights reserved worldwide