Fehlermeldung obwohl Code richtig? Was ist falsch...?

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
  • Hallo allerseits,


    ich habe eine Fehlermeldung, aber weiß nicht, wo der Fehler ist:


    dcmd_heal(playerid, params[])
    {
    if IsPlayerAdmin(playerid)
    { // <--- hier ist Zeile 38
    new id;
    if (strlen(params))
    {
    id = strval(params);
    if (IsPlayerConnected(id))
    {
    SetPlayerHealth(id, 100.0);
    SendClientMessage(id, 0x00FF00AA, "You have been healed");
    SendClientMessage(playerid, 0x00FF00AA, "Player healed");
    }
    else
    {
    SendClientMessage(playerid, 0xFF0000AA, "Player not found");
    }
    }
    else
    {
    SendClientMessage(playerid, 0xFF0000AA, "Usage: \"/heal <playerid>\"");
    }
    }
    else
    {
    SendClientMessage(playerid, 0xFF0000AA, "Du bist kein Admin!");
    }
    }


    Und die Fehlermeldung lautete:


    Zitat

    (38) : error 001: expected token: "*then", but found "{"


    Zeile 38 ist oben markiert.


    Ich hoffe, ihr könnt mir helfen. Ich weiß nicht, ob man das hier (bei Scriptwünsche?) nachfragen soll; wenn nicht, einfach verschieben - bin noch recht neu hier.


    MfG


    TRS_Sebastian


    P.S.: Vielen Dank im Voraus! :rolleyes:

  • Jetzt habe ich doch noch 'ne zweite Frage:


    Im Script heißt es ja:


    if IsPlayerAdmin(playerid)


    Wie kann man das so einstellen, dass das nur ab einem bestimmten Rang ist? Denn dieses ist ja mit RCON, was ja (im besten Falle ;) ) nur der Server-Owner haben sollte.


    if(PlayerInfo[playerid][pAdmin] < 3 && !IsPlayerAdmin(playerid)) return 0;


    habe ich schon ausprobiert (als "Probe" diente das GF), aber das ging irgendwie nicht.


    Da es ein Filterscript ist, muss das ja irgendwie auf die Userdaten (.ini-Files) zugreifen können, um zu überprüfen, ob der Spieler 1. überhaupt Admin ist und 2. welchen Rang er besitzt ([pAdmin]).


    Wie kann man das Problem lösen? Etwa mit #include <"..\scriptfiles\USERNAME.ini">? (oder: #include <"..\scriptfiles\USERNAME.ini io.read">


    Das funktioniert leider auch nicht...


    Hmmm... ?(

  • Das müsste
    if (IsPlayerAdmin(playerid))
    und nicht
    if IsPlayerAdmin(playerid)
    heißen.


    Und IsPlayerAdmin() ist ein vordefinierte Funktion, die du nicht ändern kannst.
    Wenn dann müsstest du dir eine Selberschreiben.



    public IsPLayerAdmin2(playerid)
    {
    if(IsPlayerAdmin(playerid))return 1;
    if(PlayerInfo[playerid][pAdmin]>1000) return 1;
    return 0;
    }
    Nur so als bsp. Da ich aber nur SelfMade skripte mache weis ich nicht wie die Variablen in GF heisen,
    musste halt noch anpassen.


    mfg
    Empire

  • if IsPlayerAdmin(playerid)




    if( IsPlayerAdmin(playerid))

  • GEIL, danke!


    Empire's Version hat beide Fehler behoben!


    Zitat

    bekommst du da kein error? x___0
    weil da 2 const drinne sind bei mir spackt alles dann rumm


    Also ich mache das mit dcmd. Das wollte ich so eigentlich nicht lernen, habe aber hier im Forum irgendeinen gesehen mit "Lernt dcmd!" Oder: "dmcd an die Macht!". Dann habe ich auf die Signatur (da stand das drin) geklickt und ich wurde weitergeleitet auf die sa-mp.de-Seite (Wiki). Dort habe ich mir beide Versionen angeschaut (eng + deut) und nun habe ich eingesehen, dass es viel leichter geht ^^


    DANKE!


    Hier nochmal für Leute, die es brauchen könnten ^^ (ich muss jetzt andere Befehle einbauen anstatt /heal ^^):


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    dcmd(heal, 4, cmdtext);
    return 0;
    }


    dcmd_heal(playerid, params[])
    {
    if(PlayerInfo[playerid][pAdmin] >= 1)
    {
    new id;
    if (strlen(params))
    {
    id = strval(params);
    if (IsPlayerConnected(id))
    {
    SetPlayerHealth(id, 100.0);
    SendClientMessage(id, 0x00FF00AA, "You have been healed");
    SendClientMessage(playerid, 0x00FF00AA, "Player healed");
    }
    else
    {
    SendClientMessage(playerid, 0xFF0000AA, "Player not found");
    }
    }
    else
    {
    SendClientMessage(playerid, 0xFF0000AA, "Usage: \"/heal <playerid>\"");
    }
    }
    else
    {
    SendClientMessage(playerid, 0xFF0000AA, "Du bist kein Admin!");
    }
    return 1;
    }


    /*public IsPLayerAdmin(playerid)
    {
    if(IsPlayerAdmin(playerid))return 1;
    if(PlayerInfo[playerid][pAdmin]< 1337) return 1;
    return 0;
    }*/


    Ich habe IsPlayerAdmin als Kommentar gesetzt, weil ich es später nicht brauchte bzw. es nichts brachte; habe es dann per enum pInfo gemacht :thumbup:

  • Hmm, leider doch nicht so ganz erledigt:


    Das Script überprüft ja nun, ob der Spieler mindestens Admin Rang 1 ist bzw. RCON. Aber <= 1 (kleiner oder gleich 1) ist ja jeder - formt man das um in >= 1 (größer oder gleich 1), dann passiert leider nichts außer "Du bist kein Admin", was ja so nicht stimmt.


    Er liest also leider noch nicht die Userakten (Name.ini) in den Scriptfiles - wie kann man das machen?