Problem mit /setjob id jobid

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
  • Ich hab keine Ahnung wie ich diese Errors beheben kann ...




    #define jobname0 "Arbeitslos"
    #define jobname1 "Busfahrer"
    #define jobname2 "Bauarbeiter"
    #define jobname3 "Trucker"
    #define jobname4 "Mechaniker"
    #define jobname5 "Drogendealer"
    #define jobname6 "Waffendealer"


    ocmd:setjob(playerid,params[])
    {
    if(!isPlayerAnAdmin(playerid,4))return SendClientMessage(playerid,ROT,"Du bist nicht befugt diesen Befehl zu benutzen.");
    new pID, jobid,str[128],jobnamen;
    if(pID == INVALID_PLAYER_ID) return SendClientMessage(playerid,DUNKELROT,"Ungültige ID!");
    if(sscanf(params,"ui",pID,jobid))return SendClientMessage(playerid,GRÜN,"/setjob [spieler] [Jobid]");
    if(jobid<1||jobid>4)return SendClientMessage(playerid,ROT,"Bitte gültigen Rang angeben.");
    SetPVarInt(pID,"Job",jobid);
    SpielerSpeichern(pID);
    switch(GetPVarInt(pID,"Job"))
    {
    case 0:(jobnamen = jobname0); // Zeile 2347
    case 1:(jobnamen = jobname1); // Zeile 2348
    case 2:(jobnamen = jobname2); // Zeile 2349
    case 3:(jobnamen = jobname3); // Zeile 2350
    case 4:(jobnamen = jobname4); // Zeile 2351
    case 5:(jobnamen = jobname5); // Zeile 2352
    case 6:(jobnamen = jobname5); // Zeile 2353
    }
    format(str,sizeof(str),"Dir wurde der Job %s von %s zugeteilt",jobnamen,SpielerName(playerid));
    SendClientMessage(playerid,str); // Zeile 2356
    format(str,sizeof(str),"Du hast %s den Job %s zugeteilt",SpielerName(pID),jobnamen);
    SendClientMessage(pID,WEIß,str);
    format(str,sizeof(str),"~Adminbefehl~ (( %s hat %s den Job %s gemacht. ))",SpielerName(playerid),SpielerName(pID),jobnamen);
    SendAdminMessage(PNGELB,str);
    return 1;
    }


    C:\Users\Jonas\Desktop\Selfmade x)\gamemodes\ttttt.pwn(2347) : error 006: must be assigned to an array
    C:\Users\Jonas\Desktop\Selfmade x)\gamemodes\ttttt.pwn(2348) : error 006: must be assigned to an array
    C:\Users\Jonas\Desktop\Selfmade x)\gamemodes\ttttt.pwn(2349) : error 006: must be assigned to an array
    C:\Users\Jonas\Desktop\Selfmade x)\gamemodes\ttttt.pwn(2350) : error 006: must be assigned to an array
    C:\Users\Jonas\Desktop\Selfmade x)\gamemodes\ttttt.pwn(2351) : error 006: must be assigned to an array
    C:\Users\Jonas\Desktop\Selfmade x)\gamemodes\ttttt.pwn(2352) : error 006: must be assigned to an array
    C:\Users\Jonas\Desktop\Selfmade x)\gamemodes\ttttt.pwn(2353) : error 006: must be assigned to an array
    C:\Users\Jonas\Desktop\Selfmade x)\gamemodes\ttttt.pwn(2356) : error 035: argument type mismatch (argument 2)


  • Mach es so:


    //Anstatt oben defines mach einen konstanten Array
    new const Jobname[7][] = {"Arbeitslos","Busfahrer","Bauarbeiter","Trucker","Mechaniker","Drogendealer","Waffendealer"};


    ocmd:setjob(playerid,params[])
    {
    if(!isPlayerAnAdmin(playerid,4))return SendClientMessage(playerid,ROT,"Du bist nicht befugt diesen Befehl zu benutzen.");
    new pID, jobid,str[128];
    if(sscanf(params,"ui",pID,jobid))return SendClientMessage(playerid,GRÜN,"/setjob [spieler] [Jobid]");
    if(!IsPlayerConnected(pID)) return SendClientMessage(playerid,ROT,"Ein Spieler mit dieser id ist nicht online!");
    if(jobid<1||jobid>6)return SendClientMessage(playerid,ROT,"Bitte gültige Jobid angeben.");
    SetPVarInt(pID,"Job",jobid),SpielerSpeichern(pID);
    format(str,sizeof(str),"Dir wurde der Job %s von %s zugeteilt",Jobname[jobid],SpielerName(playerid));
    SendClientMessage(playerid,WEIß,str);
    format(str,sizeof(str),"Du hast %s den Job %s zugeteilt",SpielerName(pID),Jobname[jobid]);
    SendClientMessage(pID,WEIß,str);
    format(str,sizeof(str),"~Adminbefehl~ (( %s hat %s den Job %s gemacht. ))",SpielerName(playerid),SpielerName(pID),Jobname[jobid]);
    SendAdminMessage(PNGELB,str);
    return 1;
    }


    mfg. :thumbup:

    ast2ufdyxkb1.png


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

    Einmal editiert, zuletzt von Kaliber ()

  • Schau mal in Zeile 12!
    jobnamen benutzt du als String, macht ja auch Sinn.
    Aber du hast es als Integer erstellt!


    must be assigned to an array
    -> Integer und String vertauscht, muss ein String/Array sein.
    argument type mismatch
    -> Falscher Parameter, bzw. Hier die Farbe vergessen.


    Tipp:
    Zur besseren Übersicht alle define's am besten GROß schreiben. Wie bei den Farben.

  • Mach es so:


    //Anstatt oben defines mach einen konstanten Array
    new const Jobname[7][] = {"Arbeitslos","Busfahrer","Bauarbeiter","Trucker","Mechaniker","Drogendealer","Waffendealer"};



    Danke für die beiden Antworten hab noch eine Frage zu dem ~ const ~ hier ist mein Befehl für den /getstatus wie kann ich das zB hier anwenden hab mir mittlerweile mehrere ~const~ erstellt , danke im Vorraus



    new const Jobname[7][] = {"Arbeitslos","Busfahrer","Bauarbeiter","Trucker","Mechaniker","Drogendealer","Waffendealer"};
    new const Adminrang[6][] = {"Keinen","Supporter","Moderator","Super Moderator","Administrator","Serverleitung"};
    new const Frakname[7][] = {"Zivilist","Police Department","Les Hombres","Medic","Negro Famoso","West Coast Crimes","Bundeswehr"};


    // Diese hab ich mir jetzt erstellt wie kann ich die nun anwenden ohne den switch case befehl ?


    ocmd:getstatus(playerid,params[])
    {
    new pid;
    if(sscanf(params,"u",pid)) return SendClientMessage(playerid,GRÜN,"Benutze: /getstatus [ID/PartOfName]");
    if(pid == INVALID_PLAYER_ID) return SendClientMessage(playerid,DUNKELROT,"Ungültige ID!");
    new string[128];
    new string2[128];
    new spielername[128];
    new fraktname[64];
    new adminname[64];
    new Rangname[64];
    new jobname [64];


    switch(GetPVarInt(pid,"Job"))
    {
    case 0:{jobname="Arbeitslos";}
    case 1:{jobname="Busfahrer";}
    case 2:{jobname="Trucker";}
    case 3:{jobname="Bauarbeiter";}
    case 4:{jobname="Mechaniker";}
    case 5:{jobname="Drogendealer";}
    case 6:{jobname="Waffendealer";}
    }
    switch(GetPVarInt(pid,"Fraktion"))
    {
    case 0:{fraktname="Keine";}
    case 1:{fraktname=fraktname1;}
    case 2:{fraktname=fraktname2;}
    case 3:{fraktname=fraktname3;}
    case 4:{fraktname=fraktname4;}
    case 5:{fraktname=fraktname5;}
    case 6:{fraktname=fraktname6;}
    }
    switch(GetPVarInt(pid,"Adminlevel"))
    {
    case 0:{adminname="Keine";}
    case 1:{adminname=adminlevel1;}
    case 2:{adminname=adminlevel2;}
    case 3:{adminname=adminlevel3;}
    case 4:{adminname=adminlevel4;}
    case 5:{adminname=adminlevel5;}
    }
    // Fraktionsränge
    if(isPlayerInFrakt(pid,1))
    {
    switch(GetPVarInt(pid,"Fraktionsrang"))
    {
    case 0:(Rangname = "Praktikant");
    case 1:(Rangname = "Polizei-Anwärter");
    case 2:(Rangname = "Wachmeister");
    case 3:(Rangname = "Kommisar Anwärter");
    case 4:(Rangname = "Polizei Kommissar");
    case 5:(Rangname = "Polizeioberkommissar");
    case 6:(Rangname = "Polizeihauptkommissar");
    case 7:(Rangname = "Erster Polizeihauptkommissar");
    case 8:(Rangname = "Polizeirat");
    case 9:(Rangname = "Polizeidirektor");
    case 10:(Rangname = "Polizeipräsident");
    }
    }
    if(isPlayerInFrakt(pid,2))
    {
    switch(GetPVarInt(pid,"Fraktionsrang"))
    {
    case 0:(Rangname = "Knecht");
    case 1:(Rangname = "Homow");
    case 2:(Rangname = "Dumb Hoe");
    case 3:(Rangname = "Hoe");
    case 4:(Rangname = "Soulja");
    case 5:(Rangname = "Blood Runner");
    case 6:(Rangname = "Blood Pusher");
    case 7:(Rangname = "DaTruth");
    case 8:(Rangname = "OG");
    case 9:(Rangname = "Big OG");
    case 10:(Rangname = "LeHombre");
    }
    }
    if(isPlayerInFrakt(pid,3))
    {
    switch(GetPVarInt(pid,"Fraktionsrang"))
    {
    case 0:(Rangname = "Praktikant");
    case 1:(Rangname = "Sanitäter-Anwärter");
    case 2:(Rangname = "Sanitäter");
    case 3:(Rangname = "Rettungssanitäter");
    case 4:(Rangname = "Arzt-Anwärter");
    case 5:(Rangname = "Arzt");
    case 6:(Rangname = "Facharzt");
    case 7:(Rangname = "Chirurg");
    case 8:(Rangname = "Oberarzt");
    case 9:(Rangname = "Leitender Oberarzt");
    case 10:(Rangname = "Chefarzt");
    }
    }
    if(isPlayerInFrakt(pid,4))
    {
    switch(GetPVarInt(pid,"Fraktionsrang"))
    {
    case 0:(Rangname = "Praktikant");
    case 1:(Rangname = "Betrüger");
    case 2:(Rangname = "Schmuggler");
    case 3:(Rangname = "Dealer");
    case 4:(Rangname = "Geldwäscher");
    case 5:(Rangname = "Informant");
    case 6:(Rangname = "Mafioso");
    case 7:(Rangname = "Capo");
    case 8:(Rangname = "Pate");
    case 9:(Rangname = "Rechte Hand");
    case 10:(Rangname = "Der Boss");
    }
    }
    if(isPlayerInFrakt(pid,5))
    {
    switch(GetPVarInt(pid,"Fraktionsrang"))
    {
    case 0:(Rangname = "Black Jack");
    case 1:(Rangname = "Niggah");
    case 2:(Rangname = "Bro");
    case 3:(Rangname = "Madafuqa");
    case 4:(Rangname = "Gangsta");
    case 5:(Rangname = "Homie");
    case 6:(Rangname = "Lil OG");
    case 7:(Rangname = "OG");
    case 8:(Rangname = "Senior OG");
    case 9:(Rangname = "King OG");
    case 10:(Rangname = "Maddog");
    }
    }
    if(isPlayerInFrakt(pid,6))
    {
    switch(GetPVarInt(pid,"Fraktionsrang"))
    {
    case 0:(Rangname = "Praktikant");
    case 1:(Rangname = "Gefreiter");
    case 2:(Rangname = "Unteroffizier");
    case 3:(Rangname = "Feldwebel");
    case 4:(Rangname = "Hauptfeldwebel");
    case 5:(Rangname = "Leutnant");
    case 6:(Rangname = "Ober­Leutnant");
    case 7:(Rangname = "Major");
    case 8:(Rangname = "Oberst");
    case 9:(Rangname = "Brigade­General");
    case 10:(Rangname = "General");
    }
    }
    format(string,sizeof(string),"[Name: %s] [Level: %i] [Adminrang: %s] [Fraktion: %s] [Payday %i/60 Min]",SpielerName(pid),GetPlayerScore(pid),adminname,fraktname,GetPVarInt(pid,"Paytime"));
    GetPlayerName(playerid,spielername,sizeof(spielername));
    format(spielername,sizeof(spielername),"----------------------------------------%s----------------------------------------",spielername);
    format(string2,sizeof(string2),"[Skin ID: %i] [Fraktionsrang: %s] [Job: %s]",GetPlayerSkin(pid),Rangname,jobname);


    new str[128];
    SendClientMessage(playerid,DUNKELROT,spielername);
    SendClientMessage(playerid,WEIß,string);
    SendClientMessage(playerid,WEIß,string2);
    SendClientMessage(playerid,DUNKELROT,"--------------------------------------------------------------------------------------");
    format(str,sizeof(str),"~Adminbefehl~ (( %s checkt den Status von %s . ))",SpielerName(playerid),SpielerName(pid));
    SendAdminMessage(PNGELB,str);
    return 1;
    }

  • Adminrang[GetPVarInt(pid,"Adminlevel")]
    Das packst du hinten für ein %s ins "format".


    new const Adminrang[6][] = {"Keinen","Supporter","Moderator","Super Moderator","Administrator","Serverleitung"};


    Sollte Adminlevel z.B. 5 sein, dann würde er "Serverleitung" anzeigen.
    Adminrang[0] Keinen
    Adminrang[1] Supporter
    Adminrang[2] Moderator
    ...


  • Danke für die Antwort könntest du mir mal ein Bespiel machen ? Wäre dann besser für mich verständlich

  • Tut mir Leid, aber ein komplettes Beispiel werde Ich dir nicht Posten, denn Ich schreibe alles mit dem Handy ^^


    format(str,sizeof(str),"Dir wurde der Job %s von %s zugeteilt",Jobname[jobid],SpielerName(playerid));


    Schau dir das von Kaliber an ;)
    Einfach bei dem Beispiel da oben Jobname[jobid] durch Adminrang[GetPVarInt(pid,"Adminlevel")] ersetzen und den Text ändern.
    Und das bei jedem!

  • Hier, habe dir das alles mal überarbeitet, schreibe es so:


    new const Jobname[7][] = {"Arbeitslos","Busfahrer","Bauarbeiter","Trucker","Mechaniker","Drogendealer","Waffendealer"};
    new const Adminrang[6][] = {"Keinen","Supporter","Moderator","Super Moderator","Administrator","Serverleitung"};
    new const Frakname[7][] = {"Zivilist","Police Department","Les Hombres","Medic","Negro Famoso","West Coast Crimes","Bundeswehr"};
    new const RangNamen[6][][] = {
    {"Praktikant","Polizei-Anwärter","Wachmeister","Kommisar Anwärter","Polizei Kommissar","Polizeioberkommissar","Polizeihauptkommissar","Erster Polizeihauptkommissar","Polizeirat","Polizeidirektor","Polizeipräsident"},
    {"Knecht","Homow","Dumb Hoe","Hoe","Soulja","Blood Runner","Blood Pusher","DaTruth","OG","Big OG","LeHombre"},
    {"Praktikant","Sanitäter-Anwärter","Sanitäter","Rettungssanitäter","Artzt-Anwärter","Artzt","Fachartzt","Chirug","Oberarzt","Leitender Oberarzt","Chefarzt"},
    {"Praktikant","Betrüger","Schmuggler","Dealer","Geldwäscher","Informant","Mafioso","Capo","Pate","Rechte Hand","Der Boss"},
    {"Black Jack","Niggah","Bro","Madafuq","Gangsta","Homie","Lil OG","OG","Senior OG","King OG","Maddog"},
    {"Praktikant","Gefreiter","Unteroffizier","Feldwebel","Hauptfeldwebel","Leutnant","Ober-Leutnant","Major","Oberst","Brigade-General","General"}
    };


    ocmd:getstatus(playerid,params[])
    {
    new pid,buffer[]="Keinen";
    if(sscanf(params,"u",pid)) return SendClientMessage(playerid,GRÜN,"Benutze: /getstatus");
    if(!IsPlayerConnected(pid)) return SendClientMessage(playerid,DUNKELROT,"Ungültige ID!");
    new string[128],spielername[MAX_PLAYER_NAME];
    GetPlayerName(playerid,spielername,MAX_PLAYER_NAME);
    format(string,sizeof(string),"[Name: %s] [Level: %i] [Adminrang: %s] [Fraktion: %s] [Payday %i/60 Min]",
    spielername,GetPlayerScore(pid),Adminrang[GetPVarInt(pid,"Adminlevel")],Frakname[GetPVarInt(pid,"Fraktion")],GetPVarInt(pid,"Paytime"));
    SendClientMessage(playerid,WEIß,string);
    format(string,sizeof(string),"----------------------------------------%s----------------------------------------",spielername);
    SendClientMessage(playerid,DUNKELROT,string);
    format(string,sizeof(string),"[Skin ID: %i] [Fraktionsrang: %s] [Job: %s]",GetPlayerSkin(pid),(!GetPVarInt(pid,"Fraktion")) ? buffer : RangNamen[GetPVarInt(pid,"Fraktion")-1][GetPVarInt(pid,"Fraktionsrang")-1],Jobname[GetPVarInt(pid,"Job")]);
    SendClientMessage(playerid,WEIß,string);
    SendClientMessage(playerid,DUNKELROT,"--------------------------------------------------------------------------------------");
    format(string,sizeof(string),"~Adminbefehl~ (( %s checkt den Status von %s . ))",SpielerName(playerid),spielername);
    return SendAdminMessage(PNGELB,string);
    }


    mfg. :thumbup:

    ast2ufdyxkb1.png


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



  • Danke alter ! kannst du mir das mit -1 und buffer noch erklären?

  • Danke alter ! kannst du mir das mit -1 und buffer noch erklären?


    Der Buffer, weil du in Pawn nicht direkt "Keinen" in eine Funktion schreiben kannst..das würde in Java, PHP oder sonst wo gehen, aber hier leider nicht...


    und die -1, weil der Array bei 0 anfängt, deine Fraktionen bzw Ränge aber bei 1 ;)


    mfg. :thumbup:

    ast2ufdyxkb1.png


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


  • Der Buffer, weil du in Pawn nicht direkt "Keinen" in eine Funktion schreiben kannst..das würde in Java, PHP oder sonst wo gehen, aber hier leider nicht...


    und die -1, weil der Array bei 0 anfängt, deine Fraktionen bzw Ränge aber bei 1 ;)


    mfg. :thumbup:


    Danke jetzt ist alles vertanden SEHR SEHR NETT !! :)