/makeleader 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
  • Jo,


    habe mein /makeadmin Befehl kopiert umgeschrieben für /makeleader und nun bekomme ich immer wenn ich InGame /makeleader eingeben die Nachricht, das Es nur Fraktionen zwichen ID 1 und 3 gibt....
    Auch wenn ich Parameter weglasse...



    Der Admin Befehl(der funktioniert)

    Spoiler anzeigen
    ocmd:makeadmin(playerid,params[])
    {
    new string1[200],string2[200],string3[200],pID,rang;
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid,rot,"Diese Spieler ID ist zur Zeit nicht vergeben.");
    if(rang < 0 || rang > 5) return SendClientMessage(playerid,rot,"Es gibt nur Admin Ränge von 0 bis 5.");
    if(GetPVarInt(playerid,"Admin")>=4)
    {
    if(sscanf(params,"ii",pID, rang))return SendClientMessage(playerid,weiss,"{A15400}[Benutze]: {FEFEFF}/makeadmin [ID] [Rang]");
    format(string1,sizeof(string1),"%s hat dir Admin Rang %i gegeben. Nutze deine Rechte nicht aus!",SpielerName(playerid),rang);
    SendClientMessage(pID,gruen,string1);
    format(string2,sizeof(string2),"Du hast %s den Admin Rang %i gegbeen.",SpielerName(pID),rang);
    SendClientMessage(playerid,gruen,string2);
    format(string3,sizeof(string3),"[ADM]: %s hat %s den Admin Rang %i gegeben.",SpielerName(playerid),SpielerName(pID),rang);
    SendClientMessageToAll(gruen,string3);
    SetPVarInt(pID,"Admin",rang);
    }
    else
    {
    SendClientMessage(playerid,rot,"Du hast nicht den benötigten Admin Rang.");
    }
    return 1;
    }



    Der verbuggte /makeleader Befehl

    Spoiler anzeigen
    ocmd:makeleader(playerid,params[])
    {
    new string1[200],string2[200],pID,frak;
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid,rot,"Diese Spieler ID ist zur Zeit nicht vergeben.");
    if(frak < 1 || frak > 4) return SendClientMessage(playerid,rot,"Es gibt nur Fraktions Ränge von 1 bis 3");
    if(GetPVarInt(playerid,"Admin")>=4)
    {
    if(sscanf(params,"ii",pID, frak))return SendClientMessage(playerid,weiss,"{A15400}[Benutze]: {FEFEFF}/makeleader [ID] [Fraktion]");
    format(string1,sizeof(string1),"%s hat dir Leader Rechte von der Fraktion %s gegeben. Nutze deine Rechte nicht aus!",SpielerName(playerid),FrakName(pID));
    SendClientMessage(pID,gruen,string1);
    format(string2,sizeof(string2),"Du hast %s Leader Rechte von der Fraktion %s gegbeen.",SpielerName(pID),FrakName(pID));
    SendClientMessage(playerid,gruen,string2);
    SetPVarInt(pID,"Fraktion",frak);
    }
    else
    {
    SendClientMessage(playerid,rot,"Du hast nicht den benötigten Admin Rang.");
    }
    return 1;
    }





    Okay habe es gefunden und zwar habe ich


    if(frak < 1 || frak > 4) return SendClientMessage(playerid,rot,"Es gibt nur Fraktions Ränge von 1 bis 3");
    zu
    if(frak < 0 || frak > 5) return SendClientMessage(playerid,rot,"Es gibt nur Fraktions Ränge von 1 bis 3");
    geändert



    aber wieso geht das nun`?

  • An der Stelle wo es momentan ist sitzt es falsch, da hat frak noch keinen Wert, ist also 0.
    Du musst die Abfrage nach der sscanf Zeile setzen, da frak erst dort den Wert zugewiesen wird. Die Zahlen sind dann wieder 1 und 4, nicht 0 und 5.


    Bei beiden Befehlen.