Fragen zu Logout

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Hier auch eine Möglichkeit wie du es machen könntest:



    Dann schenkst dir paar Variablen ^^

    Hab dazu jetzt einfach mal ein paar Fragen, ich bin selber nicht wirklich der Erfahrenste Scripter, besonders in den Funktionen die du da benutzt hast.


    static const dc[3][] ={"(Timeout/Crash)","(Verlassen)","(Kick/Ban)"};


    Wieso static const und nicht ein "new"? Was ist der Unterschied?


    Wofür sind im SetTimerEx die ganzen Ausrufezeichen, wieso "@destroy_Logout" und funktioniert so ein static immer, oder nur zu bestimmten Punkten?
    Sprich, kann ich ein static immer ausführen lassen, ohne extra forward+public zu erstellen, oder wie funktioniert das?
    Und wieso steht das 2x da unten? Also 2x @destroy_Logout([..]);@destroy_Logout([..])


    Danke dir. :)

  • Nun also static kannst du unter 2 Bedingungen verwenden.


    1. Wenn etwas konstant ist und du in einer Funktion oder einem Callback verwendest. Dadurch wird nicht neuer Speicher wieder angefordert (so wie es bei new ist) sondern das bleibt statisch im Speicher.


    Zum Beispiel kannst du da auch einen Zähler machen:



    C
    stock test()
    {
        static x;
        printf("%d",x++);
    }

    Wenn du jetzt zum 1. Mal test() aufrufst, wird dir 0 ausgegeben..beim 2. mal 1 usw...


    2. Du kannst static auch nutzen um einen Scope (zugriffs beschränkung / Sichtbarkeit) zu erzeugen...


    In Includes zum Beispiel solltest du static nehmen, damit keine Variablennamen überschneidung mit dem Gamemmode stattfindet.


    Das ! bei einem String packed diesen. Das bedeutet wenn man z.B. new string[5]; macht werden 5 Cells reserviert. Eine Cell hat 4 Bytes, also macht das 5 * 4 Bytes = 20 Bytes die man hier reserviert.


    Bei einem packed String ist das new string[5 char]; und hier verbraucht die Cell nur einen Byte und nicht 4.
    Das kann man generell auch in Funktionen nutzen (außer z.B. format) und dann spart man einfach speicher.
    Dieses ! sagt einfach nur, dass der String gepackt werden soll.


    Es gibt 2 Möglichkeiten Funktionen als public zu deklarieren.
    Entweder über ein public oder über ein @.
    Das ist das selbe nur weniger zu schreiben und das static sagt nur, dass das z.B. nicht von einer Include o.ä. aus aufgerufen werden kann...das verkleinert quasi (wie oben erwähnt) den Scope :)
    Achso und das steht 2x da...weil das 1.mal vom Compiler als forward interpretiert wird ;)

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S