Setrank error ?

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
  • Moin moin


    Ich habe mir ein /setrank befehl erstellt .. aber irgend wie bekomme ich ein Error ?? und weiß nicht woran es Leigt.



    Befehl:


    ocmd:setrank(playerid,params[])
    {
    new pID, frakrank[256];
    if(sscanf(params,"ui",pID,frakrank))return SendClientMessage(playerid,ORANGE,"/setrank [Name/ID] [Ranknummer]");
    if(frakrank<1||frakrank>10)return SendClientMessage(playerid,ROT,"Wähle einen Rank von 1-10");
    else
    {
    switch(GetPVarInt(playerid,"Rank")) // Die Ränge
    {
    case 0:{frakrank="Praktikant";}
    case 1:{frakrank="Anwarter";}
    case 2:{frakrank="Officer";}
    case 3:{frakrank="la";}
    case 4:{frakrank="ka";}
    case 5:{frakrank="ka";}
    case 6:{frakrank="ka";}
    case 7:{frakrank="SWAT Member";}
    case 8:{frakrank="SWAT Leader";}
    case 9:{frakrank="Co-Leader";}
    case 10:{frakrank="Leader";}
    }
    }
    return 1;
    }

  • au vergessen xD .. Ehm Hier der Error ^^



    C:\Users\Equ\Desktop\samp Server 0.3e\gamemodes\LoC.pwn(1018) : error 033: array must be indexed (variable "frakrank")
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    1 Error.


    Edit: SpielerSpeichern(playerid); <- wenn du das meinst ?

  • new Frak, frakrank[50];


    switch(Frak)
    {
    case 0:{frakrank="Praktikant";}
    case 1:{frakrank="Anwarter";}
    case 2:{frakrank="Officer";}
    case 3:{frakrank="la";}
    case 4:{frakrank="ka";}
    case 5:{frakrank="ka";}
    case 6:{frakrank="ka";}
    case 7:{frakrank="SWAT Member";}
    case 8:{frakrank="SWAT Leader";}
    case 9:{frakrank="Co-Leader";}
    case 10:{frakrank="Leader";}
    }


    Die Klammern kannst du auch weglassen.


    /e.


    if(sscanf(params,"ui",pID,Frak))


  • und wo liest er später Den "Rank" Aus ??

  • format(string, sizeof(string), " %s ist nun Rang %d", getName(pID), frakrank);


    Aber dass könntest du selber mal machen -.-
    /e.



    stock getRang(stringalt)
    {
    new str[256];
    switch(stringalt)
    {
    case 0:{str="Praktikant";}
    case 1:{str="Anwarter";}
    case 2:{str="Officer";}
    case 3:{str="la";}
    case 4:{str="ka";}
    case 5:{str="ka";}
    case 6:{str="ka";}
    case 7:{str="SWAT Member";}
    case 8:{str="SWAT Leader";}
    case 9:{str="Co-Leader";}
    case 10:{str="Leader";}
    }
    return str;
    }


    Verwendung


    format(string, sizeof(string), " %s ist nun Rang %d", getName(pID), getRang(Frak));

    Einmal editiert, zuletzt von Deuce ()

  • if(sscanf(params,"ui",pID,Frak))
    So wäre es optimal, da er vordefinierte Ränge benutzen möchte.
    Falls nicht dann wäre deine Möglichkeit besser.

  • Habs jetzt so gemacht


    ocmd:setrank(playerid,params[])
    {
    if(!isPlayerInFrakt(playerid,1))return SendClientMessage(playerid,DUNKELROT,"Du bist kein Leader!.");
    new pID, Frak, string[128], string2[128];
    if(sscanf(params,"ui",pID,Frak))return SendClientMessage(playerid,ROT,"/setrank [Name/ID] [Rank]");
    if(Frak<1||Frak>10)return SendClientMessage(playerid,ROT,"Bitte gültigen Fraktions Rang angeben.");
    format(string,sizeof(string),"Du gibst %d Den Rank %i",SpielerName(pID), Frak);
    SendClientMessage(playerid,HELLBLAU,string2);
    GetPVarInt(playerid,"Rank");
    format(string,sizeof(string),"Dein Rang lautet nun %i",SpielerName(playerid),Frak);
    SendClientMessage(playerid,DUNKELROT,string);
    SetPVarInt(playerid,"Rank",Frak);
    SpielerSpeichern(playerid);
    return 1;
    }



    Also Die Ränge verteilt er ja schon alle nur das Problem Liegt jetzt bei


    format(string,sizeof(string),"Du gibst %d Den Rank %i",SpielerName(pID), Frak);
    SendClientMessage(playerid,HELLBLAU,string2);
    GetPVarInt(playerid,"Rank");
    format(string,sizeof(string),"Dein Rang lautet nun %i",SpielerName(playerid),Frak);
    SendClientMessage(playerid,DUNKELROT,string);
    SetPVarInt(playerid,"Rank",Frak);


    Denn Wenn ich mit /setrank ID RankID Lässt er Meine Zeile "Du gibst Equ den Rank 1" müsste das eigentlich kommen aber das zeigt er nicht an, und dann bekommt der andere spieler auch noch eine Message: "Dein Rang lautet nun 96" .. ich weiß nich warum da 96 raus kommt eigentlich müsste dort 1 Rauskommen :huh:

  • format(string,sizeof(string),"Dein Rang lautet nun %i",SpielerName(playerid),getRang(Frak));


    stock getRang(stringalt)
    {
    new str[256];
    switch(stringalt)
    {
    case 0:{str="Praktikant";}
    case 1:{str="Anwarter";}
    case 2:{str="Officer";}
    case 3:{str="la";}
    case 4:{str="ka";}
    case 5:{str="ka";}
    case 6:{str="ka";}
    case 7:{str="SWAT Member";}
    case 8:{str="SWAT Leader";}
    case 9:{str="Co-Leader";}
    case 10:{str="Leader";}
    }
    return str;
    }


    Anscheinend muss man dir alles vorkauen -.-