paar scripting fragen

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
  • 1. Wozu benutzt man Pvars?



    2. Sind Pvars Server bezogen, d.h. ich kann sie aus jeden Filtersript ausrufen oder muss ich diese auch übergeben?



    3. Kann man Variablen aus dem GameMode mit einem Filterscript lesen ohne die mit Funktionen übergeben zu müssen?



    4. Kann ich mit CallRemoteFunction Var Parameter übergeben? Heißt:



    Deklaration:
    Gamemode:
    forward HoleDBHandle(&dbhandle);



    Filterscript:
    CallRemoteFunction("HoleDBHandle","d", dbHandle);



    In meinem Filterscript soll in DBHandle nun das DBHandle aus dem GameMode stehen.



    5 Kann ich mit CallRemoteFunction Rückgabewerte bekommen? Wenn ja, wie funktioniert das? Hast du eventuell ein Beispiel?

  • 1. Nun, also PVars solltest du eignetlich nur selten nutzen, da sie langsamer sind als Variablen. Zum Beispiel wenn du an einer Stelle im Skript nur ganz kurz eine Variable brauchst, dann kannst du da PVars verwenden und danach den RAM wieder freigeben.


    2. Ja, das ist möglich.


    3. Ja, mit z.B. PVars/Propertys/CallRemoteFunction


    4. Ja natürlich: http://wiki.sa-mp.com/wiki/CallRemoteFunction (dafür ist die Funktion da)


    5. Einfach so:


    new x = CallRemoteFunction("Funktion", "");

    ast2ufdyxkb1.png


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

  • 1. Wozu benutzt man Pvars?

    Der Hauptnutzen ist zum einfachen Austausch von Werten auf Spielerebene zwischen Gamemodes und Filterscripts, sprich zum Beispiel Spieler-Statistiken.
    Ich empfehle hierzu diesen Thread: http://forum.sa-mp.com/showthread.php?t=571043


    => Damit sind auch die Fragen 2 und 3 mit Ja beantwortet.



    CallRemoteFunction("HoleDBHandle","d", dbHandle);

    Das musst du so schreiben:
    new MySQL:handle;handle = MySQL:CallRemoteFunction("HoleDBHandle","");


    Und im Gamemode:
    forward HoleDBHandle();
    public HoleDBHandle() return _:handle;


    Sonst klappt das mit dem Tag nicht und du bekommst einen Tag Mismatch.


    => Frage 5 ist damit beantwortet.