Beiträge von Allrounder18

    Hallo!



    printf("%d",RegisterInfo[playerid][register_Alter]);
    format(RegisterInfo[playerid][register_Name],64,"%s",inputtext);
    new query[256];
    mysql_format(handle, query, sizeof(query), "INSERT INTO `accounts` (`Name`, `Passwort`,`RPName`,`Alter`,`Geschlecht`,`Geburtsdatum`) VALUES ('%e', MD5('%e'),'%e','%d','%d','%e')", SpielerDaten[playerid][player_Name], RegisterInfo[playerid][register_Passwort],
    RegisterInfo[playerid][register_Name],RegisterInfo[playerid][register_Alter],RegisterInfo[playerid][register_Geschlecht],RegisterInfo[playerid][register_Geburtsdatum]);


    Ich habe das Problem, dass in der DB immer ein falsches Alter steht. Im Print steht das richtige Alter.
    Was ist da falsch?

    Super, danke hat geklappt. Jetzt wird nichts mehr angezeigt wenn ich zb auf Helferverwalter geh.


    Edit: Soll heißen, wenn ich auf einen Rang klicke wo keine Member den Rang haben kommt keine Fehlermeldung und auch wenn ich auf einen Rang klicke wo Member den Rang haben komt kein Dialog mit den Membern.


    Edit: Fehler soweit behoben.

    Okay.


    Aber warum wird mir in der Liste nix angezeigt?


    Edit: Was ich vergas zu erwähnen, die Namen sollen aus allen 4 Verwalterspalten ausgelesen werden.


    Edit: Problem erstmal gelöst.


    Edit: nächster Fehler:


    Immer wenn ich bei menem Dialog auf Abbrechen geh, kommt "Aktuell ist kein Teamverwalter vorhanden."



    public VerwalterList(playerid, verwalterid)
    {
    new rows;
    cache_get_row_count(rows);
    new dialogcaption[128],verwaltername[32];
    switch(verwalterid)
    {
    case 1: verwaltername = "Helferverwalter";
    case 2: verwaltername = "Firmenverwalter";
    case 3: verwaltername = "Bizverwalter";
    case 4: verwaltername = "Fraktionsverwalter";
    case 5: verwaltername = "Parteiverwalter";
    case 6: verwaltername = "Hausverwalter";
    case 7: verwaltername = "Charakterbeauftragten";
    case 8: verwaltername = "Eventmanager";
    case 9: verwaltername = "Teamverwalter";
    default: verwaltername = "";
    }
    printf("ID: %d Name: %s", verwalterid, verwaltername);
    if(rows == 0)
    {
    new string[64];
    format(string, sizeof(string),"Fehler: Aktuell gibt es keine %s!", verwaltername);
    return SendClientMessage(playerid, ROT, string);
    }
    const MAX_ADMINS = 15;
    new string[(MAX_PLAYER_NAME+25)*MAX_ADMINS] = "Name\tOnlinestatus\n";
    for(new i, admin[24], status[32]; i<rows; i++)
    {
    cache_get_value_name(i, "Name", admin);
    GetPlayerStatus(admin, status);
    format(string,sizeof(string),"%s\n%s\t%s",string,admin,status);
    }
    format(dialogcaption, sizeof(dialogcaption), ""#HTML_ROT""#SERVERNAME""#HTML_WEISS" - %s", verwaltername);
    ShowPlayerDialog(playerid, 13, DIALOG_STYLE_TABLIST_HEADERS, dialogcaption ,string ,"Abbrechen", "");
    return 1;
    }


    Mein OnDialogResponse
    https://pastebin.com/j7HEqbcu


    Wo liegt hier der Fehler?

    Es funktioniert nicht weil dann da kommt /makeverwalter SpielerID TeamRang Spalte.


    Wie gesagt, ich möchte wenn der Spieler den Verwalterrang 0 hat, dassdie Nachicht kommt das man ihn nicht nochmal entlassen kann wenn er schon entlassen ist. Heißt, wenn zb. in Spalte 1 der User entlassen wurde, kannste ihn net nochmal entlassen aus der Spalte.


    Edit: Das Proble hat sich gelöst.


    Jetzt möchte ich aber einen Befehl mahcen /verwalter der folgendermaßen aufgebaut ist


    Tamverwalter
    Eventmanager
    etc


    Wen man auf den Namen klickt sollen die Spieler aufgelistet werden mti dem ang


    Nur werden mi die Spieler nicht angezeigt in der Liste.



    Der Befehl

    ocmd:verwalter(playerid,params[])
    {
    return ShowPlayerDialog(playerid,DIALOG_Verwalter,DIALOG_STYLE_LIST,""#HTML_ROT""#SERVERNAME" "#HTML_WEISS"| Verwalter",""#HTML_WEISS"1\n2\n3\n4\n5\n6\n7\n8\n9","Ok","Abbrechen");
    }


    Der Dialog

    switch(listitem)
    {
    case 0://Allgemeine - Hilfe
    {
    mysql_tquery(handle,"SELECT Name FROM `accounts` WHERE Verwalter1 = 1 OR Verwalter2 = 1 OR Verwalter3 = 1 OR Verwalter4 = 1", "VerwalterList", "d", playerid);
    }


    Die VerwalterList

    public VerwalterList(playerid)
    {
    new rows;
    cache_get_row_count(rows);
    if(rows == 0) return SendClientMessage(playerid,ROT,"Fehler: Aktuell gibt es keine Verwalter!");
    const MAX_ADMINS = 15;
    new table[MAX_ADMINS][2], admins[MAX_ADMINS][MAX_PLAYER_NAME];
    for(new i; i<rows; i++)
    {
    cache_get_value_name(i, "Name", admins[i]);
    table[i][1] = i;
    }
    SortDeepArray(table, 0);
    new string[(MAX_PLAYER_NAME+25)*MAX_ADMINS] = "Name\tOnlinestatus";
    for(new i=MAX_ADMINS-1,idx,r,status[32]; i!=-1; i--)
    {
    r = table[i][0], idx = table[i][1];
    if(r == 0) continue;
    GetPlayerStatus(admins[idx], status);
    format(string,sizeof(string),"%s\n%s\t%s",string,admins[idx],status);
    }
    ShowPlayerDialog(playerid, 8, DIALOG_STYLE_TABLIST_HEADERS, ""#HTML_ROT""#SERVERNAME""#HTML_WEISS" - Verwalter",string,"Abbrechen","");
    return 1;
    }


    Die Spielernamen sollten nach dem Alphabet geordnet sein in der Liste


    Was genau mach ich falsch, dass die Namen nicht angezeigt werden?

    Wenn ich es so mache wie du meinst klappts net.


    Ich hab jetzt mal bei
    if(sscanf(params,"uii",pID, verwid, spalte))return makeverwalter;
    das ! entfernt, dann kommt der Sieler hat den Rag nicht mher wenn ich /makeverwalte Spieleri Rang Spalte eingeb.


    ocmd:makeverwalter(playerid, params[])
    {
    //if(SD[playerid][pEingeloggt] == 0)return SCM(playerid, GRAU, "Du bist nicht eingeloggt!");
    new pID, verwid, spalte, string[128];
    new bool:exists;
    if(verwid(spalte) == 0)) return SendClientMessage(playerid, GRAU, "Der Spieler hat den Rang nicht mehr.");
    if(!iPAA(playerid,5))
    {
    if(sscanf(params, "uii", pID, verwid, spalte))return makeverwalter;
    spalte--;
    //if(adminid < 2)return SCM(playerid, GRAU, "Du kannst nur ab Rang 2 vergeben.");
    if(IPN(pID))return 1;
    //if(IsPlayerNPC(pID))return 1;
    //if(!Eingeloggt[pID])return SCM(playerid, GRAU, "Dieser Spieler ist nicht eingeloggt!");
    //if(SD[pID][pIntro] < 1)return SCM(playerid, GRAU, "Der Spieler ist noch im Tutorial.");
    if(verwid == 0)
    {
    format(string,sizeof(string), GVRN(playerid,spalte));
    SD[pID][pVerwalter][spalte] = verwid;
    format(string, sizeof(string), "Du hast %s %s aus dem Teamposten %s entlassen", string,SD[pID][pName], string);
    SCM(playerid, BLAU, string);
    format(string,sizeof(string), GVRN(playerid,spalte));
    SD[pID][pVerwalter][spalte] = verwid;
    format(string, sizeof(string), "%s %s hat dir den Rang %s entzogenn!", string,SD[playerid][pName],GVRN(pID,spalte));
    SCM(pID, BLAU, string);
    format(string,sizeof(string), GVRN(playerid,spalte));
    SD[pID][pVerwalter][spalte] = verwid;
    format(string, sizeof(string), "AdmCMD: %s %s hat %s %s den Rang %s entzogen!", string,SD[playerid][pName],string, SD[pID][pName],GVRN(pID,spalte));
    SAM(BLAU, string);
    SD[pID][pVerwalter][spalte] = 0;
    SUS(pID);
    return 1;
    }
    //new bool:exists;
    for(new verwalter = 0; verwalter < 4; verwalter ++)
    {
    if(SD[pID][pVerwalter][verwalter] == verwid) exists = true;
    }
    if(exists) return SendClientMessage(playerid, GRAU, "Der Spieler hat diesen Rang bereits.");
    if(verwid < 1 || verwid > 7)return adminrangnichtexistent;
    format(string,sizeof(string), GVRN(pID,spalte));
    SD[pID][pVerwalter][spalte] = verwid;
    format(string, sizeof(string), "Du hast %s %s den Teamrang %s gegeben", string,SD[pID][pName], GVRN(pID,spalte));
    SCM(playerid, BLAU, string);
    format(string, sizeof(string), "%s %s hat dir den Teamrang %s gegeben",GVRN(playerid,spalte),SD[playerid][pName],GVRN(pID,spalte));
    SCM(pID, BLAU, string);
    format(string,sizeof(string), GVRN(pID,spalte));
    SD[pID][pVerwalter][spalte] = verwid;
    format(string, sizeof(string), "AdmCMD: %s %s hat %s %s zum %s ernannt.",string, SD[playerid][pName],string, SD[pID][pName], GVRN(pID,spalte));
    SAM(BLAU,string);
    SUS(pID);
    return 1;
    }
    else {SCM(playerid, GRAU, "Du hast nicht genügend Rechte für diesen Befehl.");}
    return 1;
    }


    Edit: Der Versuch wirft n Fehler

    if(verwid(spalte) == 0)) return SendClientMessage(playerid, GRAU, "Der Spieler hat den Rang nicht mehr.");


    So habe ich es versucht. Ich möchte dass diese Meldung kommt, wenn in den Feldern der Rang 0 steht.

    Müsste so klappen:
    new bool:exists;for(new verwalter = 0; verwalter < 4; verwalter ++){if(SD[pID][pVerwalter][verwalter] == verwid) exists = true;}if(exists) return SendClientMessage(playerid, GRAU, "Der Spieler hat diesen Rang bereits.");

    Hier wurde es gemacht, das ne Meldung kommt wenn der Spieer den Rang schon hat. Ich möchte es noch so haben, dass ne eldung kommt wenn ihm der Rang weggenommen wurde und an ihn nochmal wegnimmt.

    Danke. Ich werds probieren.


    Edit: Danke, hat geklappt.
    Wa müsste ich machen, dass wen man versucht jemand den Rang wegzunehmen eine Nachricht kommt, dass der Spieler den Rang nicht mehr hat?

    Oh danke.


    Wie mache ich es jetzt, dass ich jeden Rang nur 1 mal vergeben kann?
    Also, dass wenn ich in Spalte 1 den Rang 4 hab, dass dieser in Spalte 2 den Rang nicht nochmal vergeben kan, bzw. dass es i eienr Spalte den Rang net doppelt geben kann?


    Das ist meine aktuelle For Schleife
    for(new verwalter=1; verwalter < 4; verwalter ++)

    Du meinst so?
    if(sscanf(params, "uii", pID, verwid, spalte--))return makeadmin;
    Mit dem ; komt n Error wie du meintest. So funktioniert es aber leider nicht

    Wegen der 3 war nur so n Gedanke aber es würd kein Sinn ergeben.



    ocmd:makeverwalter(playerid, params[])
    {
    //if(SD[playerid][pEingeloggt] == 0)return SCM(playerid, GRAU, "Du bist nicht eingeloggt!");
    new pID, verwid, spalte, string[128];
    if(!iPAA(playerid,5))
    {
    if(sscanf(params, "uii", pID, verwid, spalte))return makeadmin;
    //if(adminid < 2)return SCM(playerid, GRAU, "Du kannst nur ab Rang 2 vergeben.");
    if(IPN(pID))return 1;
    //if(IsPlayerNPC(pID))return 1;
    //if(!Eingeloggt[pID])return SCM(playerid, GRAU, "Dieser Spieler ist nicht eingeloggt!");
    //if(SD[pID][pIntro] < 1)return SCM(playerid, GRAU, "Der Spieler ist noch im Tutorial.");
    if(verwid == 0)
    {
    for(new verwalter=1; verwalter < 4; verwalter ++)
    format(string,sizeof(string), GVRN(playerid,spalte));
    SD[pID][pVerwalter][spalte] = verwid;
    format(string, sizeof(string), "Du hast %s %s aus dem Teamposten %s entlassen", string,SD[pID][pName], string);
    SCM(playerid, BLAU, string);
    format(string,sizeof(string), GVRN(playerid,spalte));
    SD[pID][pVerwalter][spalte] = verwid;
    format(string, sizeof(string), "%s %s hat dir den Rang %s entzogenn!", string,SD[playerid][pName],GVRN(pID,spalte));
    SCM(pID, BLAU, string);
    format(string,sizeof(string), GVRN(playerid,spalte));
    SD[pID][pVerwalter][spalte] = verwid;
    format(string, sizeof(string), "AdmCMD: %s %s hat %s %s den Rang %s entzogen!", string,SD[playerid][pName],string, SD[pID][pName],GVRN(pID,spalte));
    SAM(BLAU, string);
    SD[pID][pVerwalter][spalte] = 0;
    SUS(pID);
    return 1;
    }
    if(verwid < 1 || verwid > 7)return adminrangnichtexistent;
    format(string,sizeof(string), GVRN(pID,spalte));
    SD[pID][pVerwalter][spalte] = verwid;
    format(string, sizeof(string), "Du hast %s %s den Teamrang %s gegeben", string,SD[pID][pName], GVRN(pID,spalte));
    SCM(playerid, BLAU, string);
    format(string, sizeof(string), "%s %s hat dir den Teamrang %s gegeben",GVRN(playerid,spalte),SD[playerid][pName],GVRN(pID,spalte));
    SCM(pID, BLAU, string);
    format(string,sizeof(string), GVRN(pID,spalte));
    SD[pID][pVerwalter][spalte] = verwid;
    format(string, sizeof(string), "AdmCMD: %s %s hat %s %s zum %s ernannt.",string, SD[playerid][pName],string, SD[pID][pName], GVRN(pID,spalte));
    SAM(BLAU,string);
    SUS(pID);
    return 1;
    }
    else {SCM(playerid, GRAU, "Du hast nicht genügend Rechte für diesen Befehl.");}
    return 1;
    }


    So sieht der Befehl aktuell aus. Jedoch ist Verwalter1 0 anstatt1 und Verwalter4 3 anstatt 4. Ist das normal?