>>Probleme mit Admin-Rängen<<

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
  • Guten Tag liebe Bortfische,


    ich habe ein kleines Scripting-Problem & brauche eure Hilfe!:)


    Problem:
    Ich versuche den jeweiligen Admin-Leveln einen Namen zu definieren, doch das will nicht funktionieren.
    Errors gibt es nicht, doch wenn ich (z. B.) /makeadmin 0 2002 eingeben, wird der Server-Rang nicht als "Projektleiter"
    sondern als "80" gespeichert...


    Quellcode (Enum):


    enum AccountDaten
    {
    Geschlecht,
    Alter,
    AdminLevel,
    AdminRang[256],
    ADuty,
    Float:SpawnX,
    Float:SpawnY,
    Float:SpawnZ,
    Float:SpawnA,
    InteriorID,
    VirtualWorld,
    Level,
    Lohn,
    Geld,
    LevelPunkte,
    bLevelPunkte,
    UpgradePunkte,
    Duty,
    SkinID,
    SpawnHP,
    SpawnWeste,
    Float:pTx,
    Float:pTy,
    Float:pTz,
    pNameColor[20],
    WantedLevel,
    EHPakete,
    Kopfgeld,
    Rang,
    PayDay,
    Eingeloggt
    };


    new sSpieler[MAX_PLAYERS][AccountDaten];


    Quellcode (Command):

    dcmd_makeadmin(playerid, params[])
    {
    new pid, alevel, pidn[MAX_PLAYER_NAME];
    GetPlayerName(pid,pidn,sizeof(pidn));
    if(sscanf(params,"ud", pid, alevel))
    {
    return SCM(playerid, hellrot,"Benutze: /makeadmin <Spieler-ID> <Admin-Level>");
    }
    if(IstSpielerAdmin(playerid, 2001) || IsPlayerAdmin(playerid))
    {
    if(pid == INVALID_PLAYER_ID)
    {
    return SCM(playerid,sonderrot,"FEHLER: Ungültige Spieler-ID");
    }
    else if(sSpieler[playerid][AdminLevel] < alevel)
    {
    sSpieler[pid][AdminLevel] = alevel;
    new string[125];
    format(string,sizeof(string),"AdmCMD: Du wurdest zu einem Level %d Administrator befördert!",alevel);
    SCM(pid,leuchtendrot,string);
    new string2[125];
    format(string2,sizeof(string2),"AdmCMD: %s wurde zu einem Level %d Administrator befördert!",pidn,alevel);
    SCMTA(leuchtendrot,string2);
    }
    else if(sSpieler[playerid][AdminLevel] > alevel)
    {
    sSpieler[pid][AdminLevel] = alevel;
    new string[125];
    format(string,sizeof(string),"AdmCMD: Du wurdest zu einem Level %d Administrator degratiert!",alevel);
    SCM(pid,leuchtendrot,string);
    new string2[125];
    format(string2,sizeof(string2),"AdmCMD: %s wurde zu einem Level %d Administrator degratiert!",pidn,alevel);
    SCMTA(leuchtendrot,string2);
    }
    switch(alevel)
    {
    case 1:
    {
    sSpieler[pid][AdminRang] = "Probe-Supporter";
    }
    case 2:
    {
    sSpieler[pid][AdminRang] = "Supporter";
    }
    case 3:
    {
    sSpieler[pid][AdminRang] = "Probe-Moderator";
    }
    case 4:
    {
    sSpieler[pid][AdminRang] = "Moderator";
    }
    case 1337:
    {
    sSpieler[pid][AdminRang] = "Hilfs-Admin";
    }
    case 1338:
    {
    sSpieler[pid][AdminRang] = "Administrator";
    }
    case 2000:
    {
    sSpieler[pid][AdminRang] = "Full-Admin";
    }
    case 2001:
    {
    sSpieler[pid][AdminRang] = "Stllv. Projektleiter";
    }
    case 2002:
    {
    sSpieler[pid][AdminRang] = "Projektleiter";
    }
    }
    }
    return 1;
    }


    Außerdem failt hier noch etwas:



    dcmd_admin(playerid, params[])
    {
    new text, nachricht[200], aname[MAX_PLAYER_NAME];
    if(IstSpielerAdmin(playerid, 1))
    {
    if(sscanf(params,"s[256]",text))
    {
    return SCM(playerid,hellrot,"Benutze: /admin <Text>");
    }
    else
    {
    GetPlayerName(playerid,aname,sizeof(aname));
    format(nachricht,sizeof(nachricht),">>%s | %s: %s",sSpieler[playerid][ServerRang],aname,text);
    for(new i = 0;i < MAX_PLAYERS; i++)
    {
    if(IstSpielerAdmin(i, 1))
    {
    return SCM(i,gelb,nachricht);
    }
    }
    }
    }
    return 1;
    }


    Fazit:
    Bsp.:
    /admin Hallo, wie gehts?


    Erscheint:
    >> | : Hallo, wie gehts?


    Ich hoffe, dass ihr mir helfen könnt. Ich bedanke mich schonmal im Voraus!:)
    Mit freundlichen Grüßen,
    MisterDubstep

    >> I want you <<
    >> We can bring it on the floor <<
    >> You’ve never danced like this before <<
    >> We don’t talk about it <<
    >> Dancin' on doin' the boogie all night long <<
    >> Stoned in paradise <<
    >> Shouldn’t talk about it <<


  • dcmd_admin(playerid, params[])
    {
    new text[128], nachricht[144], aname[MAX_PLAYER_NAME]; //144 ist das Maximum in SendClientMessage & text ist ein string, also Array [110] lang.
    if(IstSpielerAdmin(playerid, 1))
    {
    if(sscanf(params,"s[128]",text))
    {
    return SCM(playerid,hellrot,"Benutze: /admin <Text>");
    }
    else
    {
    GetPlayerName(playerid,aname,sizeof(aname));
    format(nachricht,sizeof(nachricht),">>%s | %s: %s",sSpieler[playerid][AdminRang],aname,text); //ServerRang?? AdminRang.
    for(new i = 0;i < MAX_PLAYERS; i++)
    {
    if(IstSpielerAdmin(i, 1))
    {
    SCM(i,gelb,nachricht); //kein return in schleifen!
    }
    }
    }
    }
    return 1;
    }


    Erklärungen im Code.

  • Haha, das wusste ich noch nicht. Danke! :D, aber weißt du auch warum die Ränge nicht als (z.B.) Projektleiter, sondern 80 gespeichert werden?

    >> I want you <<
    >> We can bring it on the floor <<
    >> You’ve never danced like this before <<
    >> We don’t talk about it <<
    >> Dancin' on doin' the boogie all night long <<
    >> Stoned in paradise <<
    >> Shouldn’t talk about it <<


  • Hier:

    stock AccountSpeichern(playerid)
    {
    new pname[MAX_PLAYER_NAME], path[200];
    GetPlayerName(playerid, pname, sizeof(pname));
    format(path, sizeof(path), "/Accounts/%s.ini", pname);
    if(dini_Exists(path))
    {
    dini_IntSet(path,"Geschlecht",sSpieler[playerid][Geschlecht]);
    dini_IntSet(path,"Alter",sSpieler[playerid][Alter]);
    dini_IntSet(path,"AdminLevel",sSpieler[playerid][AdminLevel]);
    dini_IntSet(path,"ServerRang",sSpieler[playerid][ServerRang]);
    dini_IntSet(path,"ADuty",sSpieler[playerid][ADuty]);
    dini_FloatSet(path,"SpawnX",sSpieler[playerid][SpawnX]);
    dini_FloatSet(path,"SpawnY",sSpieler[playerid][SpawnY]);
    dini_FloatSet(path,"SpawnZ",sSpieler[playerid][SpawnZ]);
    dini_FloatSet(path,"SpawnA",sSpieler[playerid][SpawnA]);
    dini_IntSet(path,"Level",sSpieler[playerid][Level]);
    dini_IntSet(path,"Lohn",sSpieler[playerid][Lohn]);
    dini_IntSet(path,"Geld",sSpieler[playerid][Geld]);
    dini_IntSet(path,"Bank",sSpieler[playerid][Bank]);
    dini_IntSet(path,"LevelPunkte",sSpieler[playerid][LevelPunkte]);
    dini_IntSet(path,"bLevelPunkte",sSpieler[playerid][bLevelPunkte]);
    dini_IntSet(path,"UpgradePunkte",sSpieler[playerid][UpgradePunkte]);
    dini_IntSet(path,"Duty",sSpieler[playerid][Duty]);
    dini_IntSet(path,"SkinID",sSpieler[playerid][SkinID]);
    dini_IntSet(path,"SpawnHP",sSpieler[playerid][SpawnHP]);
    dini_IntSet(path,"SpawnWeste",sSpieler[playerid][SpawnWeste]);
    dini_FloatSet(path,"pTx",0.0);
    dini_FloatSet(path,"PTy",0.0);
    dini_FloatSet(path,"pTz",0.0);
    dini_IntSet(path,"pNameColor",sSpieler[playerid][pNameColor]);
    dini_IntSet(path,"WantedLevel",sSpieler[playerid][WantedLevel]);
    dini_IntSet(path,"EHPakete",sSpieler[playerid][EHPakete]);
    dini_IntSet(path,"Kopfgeld",sSpieler[playerid][Kopfgeld]);
    dini_IntSet(path,"Rang",sSpieler[playerid][Rang]);
    dini_IntSet(path,"PayDay",sSpieler[playerid][PayDay]);
    }
    return 1;
    }


    ^^

    >> I want you <<
    >> We can bring it on the floor <<
    >> You’ve never danced like this before <<
    >> We don’t talk about it <<
    >> Dancin' on doin' the boogie all night long <<
    >> Stoned in paradise <<
    >> Shouldn’t talk about it <<