switch zwischen Ränke mit mysql

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 Leute,
    da ich mich nun an Mysql ran machen will habe ich eine einfache Frage bestimmt für euch leicht zu lösen für mich Problematisch.
    Bei Dini konnte man ja einen switch erstellen heißt
    switch rank(GetPVarInt"Adminlevel")
    {
    case 1:{rank="Spieler"}
    case 2:{rank="Supporter"}
    }
    So und wie kann ich das nun mit MYsql machen ?

    San Fierro Roleplay Status : Alpha Online

    Vorschritt 13%

  • Den Switch kann man generell machen, der hat nichts mit Dini zu tun. Habe aberein ähnliches Problem momentan, hoffe hier mit auf Lösung zu finden.

    "Dem wird befohlen, der sich nicht selbst gehorchen kann" - Friedrich Nietzsche

  • Ja swtich aber ich meine ich will in diesem Switch in der Tabelle "accounts" "Adminlevel" auslesen.
    Darum geht es.

    San Fierro Roleplay Status : Alpha Online

    Vorschritt 13%

  • Ich habe solch ein voll-dynamisches MySQL Fraktionssystem erstellt :)


    So, die Rangnamen lässt du sicherlich in einem Enum o.ä. speichern, und laden.
    So schaut des bei mir aus :)


    /******************************************************
    Diese Funktion gibt den Rang eines Spielers in
    einem Integer wieder
    *******************************************************/
    stock GetPlayerRangID(playerid)
    {
    return SpielerInfo[playerid][pRang];
    }


    /******************************************************
    Diese Funktion gibt den Rang eines Spielers in
    einem String wieder
    *******************************************************/
    stock GetPlayerRangName(playerid)
    {
    new name[Max_Rangname];
    switch(SpielerInfo[playerid][pRang])
    {
    case 0:{format(name,2,"-");}
    case 1:{format(name,Max_Rangname,"%s",FraktionInfo[GetPlayerFrakID(playerid)][pRangname1]);}
    case 2:{format(name,Max_Rangname,"%s",FraktionInfo[GetPlayerFrakID(playerid)][pRangname2]);}
    case 3:{format(name,Max_Rangname,"%s",FraktionInfo[GetPlayerFrakID(playerid)][pRangname3]);}
    case 4:{format(name,Max_Rangname,"%s",FraktionInfo[GetPlayerFrakID(playerid)][pRangname4]);}
    case 5:{format(name,Max_Rangname,"%s",FraktionInfo[GetPlayerFrakID(playerid)][pRangname5]); }
    case 6:{format(name,Max_Rangname,"%s",FraktionInfo[GetPlayerFrakID(playerid)][pRangnameLeader]);}
    }
    return name;
    }


    So habe ich das ganz oben
    //Defines und Enum für die Fraktionen
    #define Max_Fraktionen 12 //Anzahl der Fraktionen( Standartmäßig: 11 )
    #define Max_Ranggehalt 15000 //Maximaler Gehalt pro Rang
    #define Max_Frakname 30 //Maximale Länge des Namen der Fraktion (Standard 30)
    #define Max_Rangname 15 //Maximale Länge eines Rangnamens (Standard 15)


    enum FrakDaten
    {
    pFraktionsname[Max_Frakname],
    pRangname1[Max_Rangname],
    pRangname2[Max_Rangname],
    pRangname3[Max_Rangname],
    pRangname4[Max_Rangname],
    pRangname5[Max_Rangname],
    pRangnameLeader[Max_Rangname],
    pFraktionskasse,
    pRang1_Skin,
    pRang2_Skin,
    pRang3_Skin,
    pRang4_Skin,
    pRang5_Skin,
    pRangLeader_Skin,
    pRang1_Gehalt,
    pRang2_Gehalt,
    pRang3_Gehalt,
    pRang4_Gehalt,
    pRang5_Gehalt,
    pRangLeader_Gehalt,
    Float:pSpawnPosX,
    Float:pSpawnPosY,
    Float:pSpawnPosZ,
    pSpawnInterior
    };


    new FraktionInfo[Max_Fraktionen][FrakDaten];


    Hoffe das hilft dir :)


    Lg


  • 1. Voll Dynamisch sieht man da nichts
    2. Das hat was mit Mysql zu tun?


    @Threadersteller less es einfach zuerst in ein enum wie es der Vorposter hoffentlich gemacht hat(was man aber nicht sieht)
    und verwende dann switch

  • Nun habe ich das so
    switch(SpielerInfo[playerid][pAdminlevel])
    {
    case 0:{rank="Spieler"}
    case 1:{rank=adminrank1}
    case 2:{rank=adminrank2}
    case 3:{rank=adminrank3}
    case 4:{rank=adminrank4}
    case 5:{rank=adminrank5}
    case 6:{rank=adminrank6}
    }
    Aber da bekomme ich die Fehler:
    C:\Users\TimoDerBoss\Desktop\Script\gamemodes\SFRP.pwn(175) : error 006: must be assigned to an array
    C:\Users\TimoDerBoss\Desktop\Script\gamemodes\SFRP.pwn(176) : error 006: must be assigned to an array
    C:\Users\TimoDerBoss\Desktop\Script\gamemodes\SFRP.pwn(177) : error 006: must be assigned to an array
    C:\Users\TimoDerBoss\Desktop\Script\gamemodes\SFRP.pwn(178) : error 006: must be assigned to an array
    C:\Users\TimoDerBoss\Desktop\Script\gamemodes\SFRP.pwn(179) : error 006: must be assigned to an array
    C:\Users\TimoDerBoss\Desktop\Script\gamemodes\SFRP.pwn(180) : error 006: must be assigned to an array
    C:\Users\TimoDerBoss\Desktop\Script\gamemodes\SFRP.pwn(181) : error 006: must be assigned to an array

    San Fierro Roleplay Status : Alpha Online

    Vorschritt 13%


  • #define adminrank1 "Supporter"
    #define adminrank2 "Moderator"
    #define adminrank3 "Super Moderator"
    #define adminrank4 "Admin"
    #define adminrank5 "Fulladmin"
    #define adminrank6 "Scripter"


    switch(SpielerInfo[playerid][pAdminlevel])
    {
    case 0:{rank="Spieler";}
    case 1:{rank=adminrank1;}
    case 2:{rank=adminrank2;}
    case 3:{rank=adminrank3;}
    case 4:{rank=adminrank4;}
    case 5:{rank=adminrank5;}
    case 6:{rank=adminrank6;}
    }

    San Fierro Roleplay Status : Alpha Online

    Vorschritt 13%

  • Habe ähnliches Problem, bekomme es grad nicht gelöst. Er schreibt in den Chat "[...] wurde zum Gebannt ernannt". Warum liest er Level 0 aus?


    ocmd:setlevel(playerid,params[])
    {
    new player,level,sname[MAX_PLAYER_NAME],s1[64+MAX_PLAYER_NAME],s2[64+MAX_PLAYER_NAME],rangname[16];
    pInfo[playerid][pLevel] = mysql_GetInt("spieler", "Level", "Name", pInfo[playerid][pName]);
    if(pInfo[playerid][pLevel] == 5)
    {
    if(sscanf(params,"ui",player,level)) return SendClientMessage(playerid,COLOR_RED,"[Fehler]: Benutze /setlevel [ID][Level]");
    {


    if(IsPlayerConnected(player))
    {
    GetPlayerName(player,sname,sizeof(sname));
    mysql_SetInt("spieler", "Level",level, "Name", sname);
    SetPlayerScore(player,level);
    pInfo[playerid][pLevel] = mysql_GetInt("spieler", "Level", "Name", pInfo[player][pName]);
    switch(pInfo[player][pLevel])
    {
    case 0: { rangname="Gebannt"; }
    case 1: { rangname="Spieler"; }
    case 2: { rangname="Supporter"; }
    case 3: { rangname="Co-Admin"; }
    case 4: { rangname="Admin"; }
    case 5: { rangname="Headadmin"; }
    }
    format(s1,sizeof(s1),"[Server]: Du hast %s zum %s ernannt", sname,rangname);
    format(s2,sizeof(s2),"[Server]: %s ist nun %s", sname,rangname);
    SendClientMessage(playerid,COLOR_LIGHTBLUE,s1);
    SendClientMessageToAll(COLOR_LIGHTBLUE,s2);
    }
    else
    {
    SendClientMessage(playerid,COLOR_RED,"[Fehler]: Dieser Spieler ist nicht Online");
    }
    }
    }
    return 1;
    }

    "Dem wird befohlen, der sich nicht selbst gehorchen kann" - Friedrich Nietzsche