Jobenum und /setjob funktioniert nicht richtig

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
  • Hey Breadfishler,


    Ich habe mir ein Job enum erstellt der mittlerweile so aussieht



    new jInfo[][Jobenum] ={
    {"Arbeitslos"},
    {"Trucker"},
    {"Bauer"},
    {"Mechaniker"},
    {"Detektiv"},
    {"Drogendealer"},
    {"Waffendealer"},
    {"Minenarbeiter"},
    {"Hochseefischer"}


    };


    enum Jobenum{
    j_name[128]
    };


    Aber sobald ich /setjob 1 4 eingebe steht der der Spieler ist schon in diesem Job


    ocmd:setjob(playerid,params[])
    {
    if(!IstSpielerAdmin(playerid, 8)) return SendClientMessage(playerid,ROT,ERROR_ADMIN);
    new pid, jobid, string[145], name[MAX_PLAYER_NAME];
    if(sscanf(params,"ud",pid,jobid)) return SendClientMessage(playerid,GELB,"Verwendung : /setjob [ID][Job ID]");
    if(!IsPlayerConnected(pid)) return SendClientMessage(playerid,ROT,"Ungültiger Spieler");
    if(IstSpielerInFraktion(pid,jobid)) return SendClientMessage(playerid,ROT,"Der Spieler ist bereits in diesem Job");
    sSpieler[pid][Job] = jobid;
    GetPlayerName(pid, name, MAX_PLAYER_NAME);
    format(string, sizeof(string), "Du hast dem Spieler %s (ID: %d) den Job %s zugewiesen.", name, playerid, jInfo[jobid][j_name]);
    SendClientMessage(playerid,HELLBLAU,string);
    GetPlayerName(playerid, name, MAX_PLAYER_NAME);
    format(string, sizeof(string), "Du wurdest dem Job %s von %s zugewiesen!", jInfo[jobid][j_name], name);
    SendClientMessage(pid,HELLBLAU,string);
    return 1;
    }

  • if(IstSpielerInFraktion(pid,jobid)) return SendClientMessage(playerid,ROT,"Der Spieler ist bereits in diesem Job");
    ändere mal zu das hier:

    if(sSpieler[pid][Job]==jobid) return SendClientMessage(playerid,ROT,"Der Spieler ist bereits in diesem Job");

  • Änder mal
    if(IstSpielerInFraktion(pid,jobid)) return SendClientMessage(playerid,ROT,"Der Spieler ist bereits in diesem Job");


    zu
    if(IstSpielerInFraktion(pid,jobid) == 1) return SendClientMessage(playerid,ROT,"Der Spieler ist bereits in diesem Job");

  • Geht leider Immernoch nicht :(


    Bei mir funktioniert es.. Kannst du sagen wo genau dein Problem ist?

    enum sSpielerData{
    Job
    };
    new sSpieler[MAX_PLAYERS][sSpielerData];
    enum Jobenum{
    j_name[128]
    };
    new jInfo[][Jobenum] ={
    {"Arbeitslos"},
    {"Trucker"},
    {"Bauer"},
    {"Mechaniker"},
    {"Detektiv"},
    {"Drogendealer"},
    {"Waffendealer"},
    {"Minenarbeiter"},
    {"Hochseefischer"}
    };
    ocmd:setjob(playerid,params[])
    {
    new pid, jobid, string[145], name[MAX_PLAYER_NAME];
    if(sscanf(params,"ud",pid,jobid)) return SendClientMessage(playerid,COLOR_YELLOW,"Verwendung : /setjob [ID][Job ID]");
    if(!IsPlayerConnected(pid)) return SendClientMessage(playerid,COLOR_RED,"Ungültiger Spieler");
    if(sSpieler[pid][Job]==jobid) return SendClientMessage(playerid,COLOR_RED,"Der Spieler ist bereits in diesem Job");
    sSpieler[pid][Job] = jobid;
    GetPlayerName(pid, name, MAX_PLAYER_NAME);
    format(string, sizeof(string), "Du hast dem Spieler %s (ID: %d) den Job %s zugewiesen.", name, playerid, jInfo[jobid][j_name]);
    SendClientMessage(playerid,-1,string);
    GetPlayerName(playerid, name, MAX_PLAYER_NAME);
    format(string, sizeof(string), "Du wurdest dem Job %s von %s zugewiesen!", jInfo[jobid][j_name], name);
    SendClientMessage(pid,-1,string);
    return 1;
    }

    Wenn ich jetzt /setjob 0 0 mache kommt logischerweise, dass ich bereits den job habe.
    Wenn ich allerdings jetzt /setjob 0 1 mache, bin ich ein Trucker.

  • H logick fehler?
    bist du evt in der Fraktion 4???

    stock IstSpielerInFraktion(playerid, Fraktionsid)
    {
    if(sSpieler[playerid][Fraktion] == Fraktionsid) return 1;
    return 0;
    }
    Fraktion??? dachte Job???
    also so

    stock IstSpielerInFraktion(playerid, Fraktionsid)
    {
    if(sSpieler[playerid][Job] == Fraktionsid) return 1;
    return 0;
    }