[BUGFIX] Hochzeitsfunktionen

  • Hallo,


    ich war gerade dabei eine etwas spannendere Hochzeit zu schreiben und dabei sind mir einige Ungereimtheiten und nicht nötige Abfragen von ymir aufgefallen, die ich mit euch teilen wollte.

    Bei Fehlern im Tutorial einfach kommentieren.


    1. Unnötige Abfrage in "marriage_wedding_is_playing_music" in questlua_marriage.cpp:

    Code
    1. if (pWedding)
    2. lua_pushboolean(L, pWedding->IsPlayingMusic());
    3. else
    4. lua_pushboolean(L, false);


    ersetzen mit:


    Code
    1.             lua_pushboolean(L, pWedding->IsPlayingMusic());
    2.             return 1;


    Erklärung: Die Funktion IsPlayingMusic gibt bereits einen boolean zurück, pWedding kann in dieser Stelle nicht NULL bzw. ein nullptr sein, da die Funktion hier nur auf der Marriage-Map selbst ausgeführt wird. Gestützt wird das durch die unzähligen anderen Funktion in der questlua_marriage.cpp, die diesen Pointer auch nicht vorher prüfen.


    2. Ungenutzte Variable in "ShoutInMap" in marriage.cpp:


    Code
    1. ch->ChatPacket(CHAT_TYPE_COMMAND, msg);


    suchen und ersetzen mit:


    Code
    1. ch->ChatPacket(type, msg);


    Erklärung: Nun kann die ShoutInMap Funktion auch genutzt werden um ganz normale Chatnachrichten in der Map zu senden, Beispiel gefällig?


    Code
    1. std::stringstream test("");
    2. test << "hey " << 123;
    3. ShoutInMap(CHAT_TYPE_INFO, test.str().c_str());



    3. Nullpointer Fix in "marriage_wedding_client_command" in questlua_marriage.cpp:


    In der Funktion suchen:


    Code
    1. if (pMarriage->pWeddingInfo)


    ersetzen mit


    Code
    1. if (pMarriage && pMarriage->pWeddingInfo)


    Erklärung: Sollte der Pointer Null sein, kann man nicht auf pWeddingInfo zugreifen. In allen anderen Funktion wird das auch vorher abgefragt, nur hier nicht. Who knows why.


    4. Bonus: wedding_is_dark und wedding_is_snow Funktionen, um einfacherere Quests schreiben zu können:


    In wedding.cpp irgendwo unter public: einfügen:


    Code
    1. bool IsDark() { return m_isDark; };
    2. bool IsSnow() { return m_isSnow; };


    In questlua_marriage.cpp folgende Funktionen irgendwo einfügen im namespace marriage:



    Unten in der Tabelle folgende zwei Einträge einfügen:


    Code
    1. {"wedding_is_dark", marriage_wedding_is_dark},
    2. {"wedding_is_snow", marriage_wedding_is_snow},


    Dies erlaubt nun Togglefunktionalitäten in Quests wie hier als Beispiel aus meiner Hochzeitsquest:


    Code
    1. when WEDDING_MANAGER.click with pc.is_engaged_or_married() and marriage.in_my_wedding() begin
    2. local sel = select3("Wetter togglen", "Schnee togglen")
    3. if sel == -1 then return end
    4. if sel == 1 then
    5. marriage.wedding_dark(not marriage.wedding_is_dark())
    6. elseif sel == 2 then
    7. marriage.wedding_snow(not marriage.wedding_is_snow())
    8. end
    9. end
  • Lead0b110010100

    Hat den Titel des Themas von „[BUGFIX]“ zu „[BUGFIX] Hochzeitsfunktionen“ geändert.
  • Dieses Thema enthält einen weiteren Beitrag, der nur für registrierte Benutzer sichtbar ist, bitte registrieren Sie sich oder melden Sie sich an um diesen lesen zu können.