Fraktion Rang ändern Problem!

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
  • Ok, es geht nun, aber jetzt kommt immer nur der rang 0 ich brauche nur den befehle ein zugeben und es kommt schon die nachricht aber mit rang 0 wenn ich mit parameter mache kommt auch nur mich rang 0
    ocmd:rangaendern(playerid,params[])
    {
    new pID,F_Rang,gemacht[200],gekriegt[200],name3[MAX_PLAYER_NAME],rtext[90];
    GetPlayerName(pID,name3,sizeof(name3));
    if(sInfo[playerid][Rang]==6)//return SendClientMessage(playerid,COLOR_RED,"Dein Rang ist zu niedrig");
    if(sscanf(params,"ui",pID,F_Rang))//return SendClientMessage(playerid,COLOR_RED,"INFO: /rangaendern [PlayerID] [Rang 0-5]");
    if(sInfo[playerid][Fraktion]==1)
    {
    if(sInfo[playerid][Rang] == 1) { rtext = "Auszubilder"; }
    else if(sInfo[playerid][Rang] == 2) { rtext = "Officer"; }
    else if(sInfo[playerid][Rang] == 3) { rtext = "Bike - Officer"; }
    else if(sInfo[playerid][Rang] == 4) { rtext = "Komissar"; }
    else if(sInfo[playerid][Rang] == 5) { rtext = "Stelv. Oberkomissar"; }
    else if(sInfo[playerid][Rang] == 6) { rtext = "Oberkomissar"; }
    sInfo[playerid][Rang]=F_Rang;
    }
    format(gemacht,sizeof(gemacht),"Dein Leader: %s hat dein Rang zu %i geändert.",PlayerName(playerid),F_Rang);
    SendClientMessage(pID,Blau,gemacht);
    format(gekriegt,sizeof(gekriegt),"Du hast %s den Rang zu %i geändert.",name3,F_Rang);
    SendClientMessage(playerid,Blau,gekriegt);
    savePlayer(pID);
    //printf("%d",sInfo[playerid][Rang]);
    return 1;
    }


  • ocmd:rangaendern(playerid,params[])
    {
    new pID,F_Rang,gemacht[200],gekriegt[200],rtext[90];
    if(sInfo[playerid][Rang]!=6) return SendClientMessage(playerid,COLOR_RED,"Dein Rang ist zu niedrig");
    if(sscanf(params,"ui",pID,F_Rang)) return SendClientMessage(playerid,COLOR_RED,"INFO: /rangaendern [PlayerID] [Rang 0-6]");
    if(sInfo[playerid][Fraktion]==1)
    {
    sInfo[playerid][Rang]=F_Rang;
    if(sInfo[playerid][Rang] == 1) { rtext = "Auszubildenderr"; }
    else if(sInfo[playerid][Rang] == 2) { rtext = "Officer"; }
    else if(sInfo[playerid][Rang] == 3) { rtext = "Bike-Officer"; }
    else if(sInfo[playerid][Rang] == 4) { rtext = "Kommissar"; }
    else if(sInfo[playerid][Rang] == 5) { rtext = "Stellv. Oberkommissar"; }
    else if(sInfo[playerid][Rang] == 6) { rtext = "Oberkommissar"; }
    }
    format(gemacht,sizeof(gemacht),"Dein Leader: %s hat deinen Rang zu %i geändert.",PlayerName(playerid),F_Rang);
    SendClientMessage(pID,Blau,gemacht);
    format(gekriegt,sizeof(gekriegt),"Du hast %s den Rang zu %i geändert.",PlayerName(pID),F_Rang);
    SendClientMessage(playerid,Blau,gekriegt);
    savePlayer(pID);
    printf("%d",sInfo[playerid][Rang]);
    return 1;
    }


    Probiers so.

    [align=center]

  • Ich habe dir deine Version mal etwas korrigiert, allerdings würde ich hier das Design mal überarbeiten damit es später nicht zu Redundanzen kommt. (Das heißt dass du dir Funktionen für Rangnamen schreiben solltest u.ä., später möchtest du die nämlich sicherlich mal abfragen)


    Auch würde ich dir empfehlen mal von dem return wegzukommen wenn du nicht weißt wie man es benutzt. Grundlagen eventuell nochmal anschauen.


    if(sInfo[playerid][Rang] == 6) return SendClient.... // Wenn der Spieler den Rang 6 hat soll die Funktion mit einer SendClientMessage beendet werden, demzufolge würden alle Spieler die Rang 6 haben diese Meldung bekommen. Das ist sicherlich nicht das, was du möchtest.


    Korrigierte Version:



    ocmd:rangaendern(playerid,params[])
    {
    new pID,F_Rang,gemacht[200],gekriegt[200],rtext[90];
    if(sInfo[playerid][Rang] != 6) return SendClientMessage(playerid,COLOR_RED,"Dein Rang ist zu niedrig");
    if(sscanf(params,"ud",pID,F_Rang)) return SendClientMessage(playerid,COLOR_RED,"INFO: /rangaendern [PlayerID] [Rang 0-5]");
    sInfo[playerid][Rang]=F_Rang;
    switch(sInfo[playerid][Fraktion])
    {
    case 1:
    {
    switch(F_Rang)
    {
    case 1: { rtext = "Auszubilder"; }
    case 2: { rtext = "Officer"; }
    case 3: { rtext = "Bike - Officer"; }
    case 4: { rtext = "Komissar"; }
    case 5: { rtext = "Stelv. Oberkomissar"; }
    case 6: { rtext = "Oberkomissar"; }
    }
    }
    }
    format(gemacht,sizeof(gemacht),"Dein Leader: %s hat dein Rang zu %i geändert.",PlayerName(playerid),F_Rang);
    SendClientMessage(pID,Blau,gemacht);
    format(gekriegt,sizeof(gekriegt),"Du hast %s den Rang zu %i geändert.", PlayerName(pID), F_Rang);
    SendClientMessage(playerid,Blau,gekriegt);
    savePlayer(pID);
    //printf("%d",sInfo[playerid][Rang]);
    return 1;
    }


    stock PlayerName(playerid)
    {
    new Name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, Name, sizeof(Name));
    return Name;
    }




    Flüchtigkeitsfehler könnten dabei sein, hab das jetzt in VS getippt aber das kannst du sicherlich beheben.