stock/public/ohne nix?

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
  • Mir ist aufgefallen, dass manche Funktionen ein public, manche ein stock und wieder andere gar nix brauchen :D
    Da mir ein Mysterium ist, welches wozu gut ist, dacht ich mir frag ich mal hier.


    Was ich weiß ist, dass Timer ein public brauchen.


    mfg
    surrender

  • Das ist ganz einfach.


    Eine Funktion ohne Zugehörigkeit (public,static,..) benötigt eine deklaration wenn sie einen anderen Tag wiedergeben soll.


    Bei stock wird die Funktion auf Vorrat gespeichert und bei Gebrauch erst ins Script compiled.
    Deswegen erscheint bei diesen auch nicht: "Function x is never used".


    Static sind nur in der Sektion sichtbar. (Sektion = Datei oder Pragma Sektion)


    Public sind Funktionen die nur einen Cell zurückgeben und durch AMX auch außerhalb ihrer Laufzeit aufgerufen werden können.
    (D.h. der SA:MP Server kann auf die Funktion zugreifen)


    Einfach, oder? ;)

  • Einfach ist relativ^^ Hab eines nicht verstanden:



    Eine Funktion ohne Zugehörigkeit (public,static,..) benötigt eine deklaration wenn sie einen anderen Tag wiedergeben soll.


    Kannste das bitte nochmal mit anderen Worten erklären?
    Übrigrens danke für die schnelle Hilfe :)


    mfg
    surrender

  • Wenn du einen Wert wie z.B. einen Floatwert in einem Callback (public) zurück geben willst, braucht die Forward Deklaration ein Tag, welches den Typ des Return-Wertes bestimmt.
    Beispiel:
    forward Float:floatsub(Float:float1,Float:float2);
    public Float:floatsub(Float:float1, Float:float2) {
    return float1-float2;
    }


    Berichtigt mich wenn ich was falsches sag.

  • Nicht nur für Publics.
    Auch die "ohne" bräuchten ein forward.


    Würde dann so aussehen:


    Float:x(Float:a, Float:b);


    Float:x(Float:a, Float:b)
    {
    return a-b;
    }


    Würde bei stock nicht gebraucht werden. ;)