Errors beim Compilen (033, 036, 035)

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
  • Folgende Meldung erhalte ich beim Kompilieren:

    Code
    C:\Users\PC\SA-MP\Scripting\gamemodes\test.pwn(240) : error 033: array must be indexed (variable "Waffe")
    C:\Users\PC\SA-MP\Scripting\gamemodes\test.pwn(240) : error 036: empty statement
    C:\Users\PC\SA-MP\Scripting\gamemodes\test.pwn(241) : error 035: argument type mismatch (argument 2)
    Pawn compiler 3.2.3664	 	 	Copyright (c) 1997-2006, ITB CompuPhase


    Dazu gehörige Zeile aus dem Gamemode:
    [pwn=235]
    ocmd:weapon(playerid, params[])
    {
    new Waffe[128];
    new Munition[128];
    if(sscanf(params, "ii", Waffe, Munition)) return SendClientMessage(playerid, COLOR_INFO, "> Benutzung: /weapon <WeaponID> <Munition>");
    if(Waffe> 1 && Waffe< 46)
    GivePlayerWeapon(playerid, Waffe, Munition);
    return 1;
    }
    [/pwn]

  • Schreib es so:


    Info: Waffe und Munition sind keine Strings, sondern Integer ;)


    ocmd:weapon(playerid, params[]) {
    new waffe,ammu;
    if(sscanf(params, "ii", waffe, ammu)) return SendClientMessage(playerid, COLOR_INFO, "> Benutzung: /weapon <WeaponID> <Munition>");
    if(waffe <= 0 || waffe> 46) return SendClientMessage(playerid,COLOR_INFO,"Bitte geben sie eine gültige Waffenid ein!");
    return GivePlayerWeapon(playerid, waffe, ammu);
    }


    mfg. :thumbup:

    ast2ufdyxkb1.png


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

  • Kaliber: Was ist der Unterschied bzw. wo lag der Fehler? Würde ich gerne als Anfänger wissen ^^


    Naja, wie schon gesagt, du musst Integer verwenden und keine Strings.


    //Ein String ist das:
    new string[24] = "Kaliber";
    //String ist eine Variable mit 24 cells, sprich du kannst 23 Zeichen darein speichern + den null character \0.
    new string[24] = 5; //Würde auch nicht gehen, da 5 kein string in diesem Fall ist.
    //Ein Integer ist das:
    new test = 5;
    //test hat nun den Wert 5 und ist eine Zahl.
    //Sowas geht nicht:
    new test = "Kaliber"; //Das geht nicht, da test keine cells hat bzw kein String/Array ist.


    Und nun zu der if-Abfrage:


    new test = 5; //Deklaration einer Variable mit dem Wert 5
    if(test == 5) //Prüfen ob der Wert von der Variable test 5 ist
    { //Klammern nicht vergessen, damit der Compiler die Code Blöcke zuordnen kann
    //Hier der Code,wenn test 5 ist
    }
    else //Wenn nicht
    {
    //Hier der Code, wenn test nicht 5 ist
    }


    //Erweiterungen:
    //In Pawn kannst du auch folgendes machen:


    if(test == 5) SendClientMessage(playerid,-1,"hallo");
    //Solange es sich um eine Zeile Code handelt, oder du den Code mit einem , verbindest, dann kannst du es auch in eine Zeile schreiben.


    //Mit Komma verbinden:
    if(test == 5) SendClientMessage(playerid,-1,"Hallo"),SendClientMessage(playerid,-1,"Test ist 5");


    //Was es jetzt mit dem return auf sich hat:
    //Return beendet den Callback oder die Funktion und gibt einen Wert zurück (Dieser wird nicht immer verarbeitet und ist z.B. bei Commandprozessoren irrelevant).


    if(test == 5) return SendClientMessage(playerid,-1,"hi"); //Was SendClientMessage zurückgibt ist hier irrelevant!
    SendClientMessage(playerid,-1,"Test!"); //Das wird nicht aufgerufen, da test = 5 ist und der code in der Abfrage schon die gesamte Funktion beendet.


    //Edit:
    //Es ist egal ob man es so schreibt:
    new var;
    new var5;


    //Oder so schriebt:
    new var,var5;


    //Das macht für die amx keinen Unterschied


    Hoffe das erklärt es so einigermaßen ;)


    mfg. :thumbup:

    ast2ufdyxkb1.png


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