Beiträge von Hagi

    Parameter sind Werte, die an die Methode übergeben werden.
    Der Methodenkörper ist das zwischen den beiden { }
    Der Returnwert gibt einen Wert an den Teil des Scripts zurück, an dem die Methode aufgerufen wurde.

    stock methodenname(parameter)
    {
    // Methodenkörper
    return returnwert;
    }


    Stocks sind Codeschnipsel, welche einen returnwert liefern. So wie ich das mitbekommen habe, werden stocks beim Compilen in den Code geschrieben, was sie von publics unterscheidet.
    Aber ich glaub was solche Sachen angeht, gibts hier ein paar Leute die da mehr Ahnung von haben.

    normalerweise schreibt man solche Methoden als stock. Da ich aber nicht weiß, was die Methode returnen soll bzw. wie die Fraktionsvariablen heißen, kann ich dir leider keine Lösung vorschlagen.


    edit: Was ich grad sehe, mach mal das Semikolon hinter der Methode weg.

    Das was in OnPlayerCommandText unter /m steht kopierst du einfach da rein.


    Nur welche Tasten willst du denn belegen. Du kannst nämlich nur Tasten abfgragen, welche von GTA auch genutzt werden.

    Du kannst auch, was das Desktop Problem beheben sollte, auch den native SetPlayerName nutzen. Natürlich musst du den richtigen Namen auch in einer Spielervariable z.b. SetPVarString speichern, damit du ihn später wieder zurücksetzen kannst.


    Bedenke jedoch, dass das Speichern von Spielerdaten in einer Datei oder MYSQL dadurch nicht mehr geht, da ja der Name geändert ist. Du müsstest dann unter dem Namen speichern, welcher in der PVarString steht.

    Also was ich mir jetzt vorstellen könnte.


    Entweder gibt deine Funktion
    IsPlayerAnAdmin(playerid,1) keinen vernünftigen returnwert zurück oder der Stock muss, da ein String returnt wird als ein String returnender stock definiert werden. Hatte ich bei Floats als returnwert oft.


    Also mein Vorschlag wäre das hier:


    stock String GetPlayerAdminRang(playerid)
    {
    new admintext[256];
    if(IsPlayerAnAdmin(playerid,1)) admintext="Supporter";
    else if(IsPlayerAnAdmin(playerid,2)) admintext="Moderator";
    else if(IsPlayerAnAdmin(playerid,3)) admintext="Administrator";
    else if(IsPlayerAnAdmin(playerid,4)) admintext="Super Administrator";
    else if(IsPlayerAnAdmin(playerid,5)) admintext="Projektleiter";
    else admintext="Kein Admin";


    return admintext;
    }

    Für jedes Listitem brauchst du noch eine Kontrollvariable. Diese kannst du z.B. im Boolean Format handhaben.
    Dann beim Dialog erstellen einfach abfragen, ob die Variable auf true oder false ist. Im DialogResponse musst du dann nochmal die Variable abfragen, da du vom Dialog nicht auf die Variable schließen kannst.

    Also als ich vor drei Jahren angefangen habe, hab ich mir ein kleines 300 Zeilen DM Script gebastelt.
    Seit dem Arbeite ich da immer weiter dran und lasse neue Sachen einfließen, welche mir einfallen oder welche ich hier im Forum gesehen habe. Allerdings alles selber gescriptet.
    Momentan habe ich so ein DM Script mit knapp 9000 Zeilen, welches auch eigentlich super funktioniert.


    Also meine Empfehlung ist ein Selfmade DM Script, da DM Scripte nie so umfangreich sind wie RL Scripte und man so seine Erfolge schnell betrachten kann.