If abrage || error

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
  • ocmd:dienst(playerid)
    {
    if(sInfo[playerid][Leader] = 1 || sInfo[playerid][Member] = 1)
    {

    }
    return 1;
    }


    Error:


    C:\Users\Administrator\Desktop\****\gamemodes\meinselfmade.pwn(1837) : error 001: expected token: ";", but found ")"
    C:\Users\Administrator\Desktop\****l\gamemodes\meinselfmade.pwn(1837) : error 029: invalid expression, assumed zero
    C:\Users\Administrator\Desktop\**\gamemodes\meinselfmade.pwn(1837) : error 022: must be lvalue (non-constant)
    C:\Users\Administrator\Desktop\***\gamemodes\meinselfmade.pwn(1837) : fatal error 107: too many error messages on one line


    Bin ich blind oder warum funktioniert das nicht? :o

  • Fangen wir mit deiner ersten Zeile an: ocmd:dienst(playerid) ocmd besteht immer aus einem einheitlichen Grundgerüst: ocmd:dienst(playerid,params[]) In deiner ersten Zeile hast Du also schon den ersten Fehler gemacht, nach playerid kommt nämlich noch ein Komma mit params[]*, welches in Befehlen mit Parametern (z.B. /setadmin [ID/Name] [Rang]) die Parameter angibt. Die beiden geschweiften Klammern sind korrekt gesetzt, also machen wir mit der if-Abfrage weiter. if(sInfo[playerid][Leader] = 1 || sInfo[playerid][Member] = 1) Der Fehler liegt darin, dass Du den Variablen, Leader und Member, den Wert 1 am zuweisen bist. Du möchtest aber, dass das Skript überprüft, ob die beiden Variablen den Wert 1 besitzen. (Variable = 1 (Setzt den Wert der Variable auf den Wert 1) und Variable == 1 (Vergleicht, ob die Variable den Wert 1 besitzt)) Richtig wäre also, dass Du die Variablen mit dem Wert 1 vergleichst, um dem Skript zu sagen: "Okay, der Befehl darf / darf nicht weiter ausgeführt werden." if(sInfo[playerid][Leader] == 1 || sInfo[playerid][Member] == 1) Die zweiten geschweiften Klammern und das return 1; am Ende sind ebenfalls, wie die geschweifen Klammern am Anfang, korrekt gesetzt, Du kannst also nun deinen korrigierten Befehl weiterführen.


    * Bei einem Befehl ohne Paramter (z.B. /dienst), verwendest du einfach #pragma unused params

    6 Mal editiert, zuletzt von Sheldon () aus folgendem Grund: Korrektur

  • ;) @Sheldon
    - Ich bin der Meinung ,dass er das ocmd:dienst(playerid),nicht mit params[] schreiben muss,da er es garnicht verwendet und selbst wenn das mit params[] geschrieben wird,würde es nicht die Fehler verursachen,da er nirgends mit Parametern arbeitet ..


    - Außerdem wiederholst du nur im Endeffekt,dass er es mit == ,also das er es mi 2 *==* schreiben soll .. Das hatte doch schon '#PWN' gesagt ? ...


    mfg.


    // okay,hattest zwar recht,man schreibt es mit params[],da war ich malwieder zu uninformiert ^^ Aber die Fehler verursacht es trz. nicht ,oder xD ..

    Einmal editiert, zuletzt von Done ()

  • @Sheldon
    - Ich bin der Meinung ,dass er das ocmd:dienst(playerid),nicht mit params[] schreiben muss,da er es garnicht verwendet und selbst wenn das mit params[] geschrieben wird,würde es nicht die Fehler verursachen,da er nirgends mit Parametern arbeitet ..


    - Außerdem wiederholst du nur im Endeffekt,dass er es mit == ,also das er es mi 2 *==* schreiben soll .. Das hatte doch schon '#PWN' gesagt ? ...


    mfg.


    Wenn du mit ocmd arbeitest und einen Befehl ohne Parameter am erstellen bist, dann benutzt du einfach #pragma unused params und es wird kein Warning oder Error auftauchen. Des Weiteren habe ich versucht ihm zu erklären, wo und was er falsch gemacht hat. Dieser Aspekt hat bei dem Beitrag von #PWN gefehlt.

    Einmal editiert, zuletzt von Sheldon () aus folgendem Grund: Korrektur