Befehl Frage

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
  • Der Befehl sieht folgendermaßen aus.



    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, spalte, verwid))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; verwalter < 4; verwalter ++)
    format(string,sizeof(string), GVRN(playerid));
    SD[pID][pVerwalter] = 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));
    SD[pID][pVerwalter] = verwid;
    format(string, sizeof(string), "%s %s hat dir den Rang %s entzogenn!", string,SD[playerid][pName],GVRN(pID));
    SCM(pID, BLAU, string);
    format(string,sizeof(string), GVRN(playerid));
    SD[pID][pVerwalter] = 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));
    SAM(BLAU, string);
    SD[pID][pVerwalter] = 0;
    SUS(pID);
    return 1;
    }
    if(verwid < 1 || verwid > 7)return adminrangnichtexistent;
    format(string,sizeof(string), GVRN(pID));
    SD[pID][pVerwalter][1] = verwid;
    format(string, sizeof(string), "Du hast %s %s den Teamrang %s gegeben", string,SD[pID][pName], GVRN(pID));
    SCM(playerid, BLAU, string);
    format(string, sizeof(string), "%s %s hat dir den Teamrang %s gegeben",GVRN(playerid),SD[playerid][pName],GVRN(pID));
    SCM(pID, BLAU, string);
    format(string,sizeof(string), GVRN(pID));
    SD[pID][pVerwalter] = verwid;
    format(string, sizeof(string), "AdmCMD: %s %s hat %s %s zum %s ernannt.",string, SD[playerid][pName],string, SD[pID][pName], GVRN(pID));
    SAM(BLAU,string);
    SUS(pID);
    return 1;
    }
    else {SCM(playerid, GRAU, "Du hast nicht genügend Rechte für diesen Befehl.");}
    return 1;
    }


    Aktuell geht zwar der Befehl aber er schreibt in 2 Spalten

  • Was soll den diese Schleife, so wie sie da steht, bewirken? Das macht doch gar keinen Sinn und entspricht auch nicht dem, was ich dir gesagt habe.


    Außerdem sind alle diese Zeilen nicht korrekt:
    SD[pID][pVerwalter] = verwid;
    Wenn du keine Spalte angibst, was soll der Code da machen? Gebe die Spalte entsprechend an.


    GVRN hast du auch nicht angepasst.
    Wenn du die Dinge, die man dir sagt, ignorierst, wird es schwer dir nachhaltig zu helfen.



    Bitte arbeite etwas gewissenhafter, was du aktuell machst ist einfach nur ohne Nachdenken mit völligem Desinteresse hingeklatscht.

  • Du sollst es nicht so machen, wie du denkst, sondern wie es dir gesagt wird, wenn du danach fragst.
    Sonst brauchst du nicht danach fragen.


    Also gehe bitte die Punkte aus obigem Post von mir an. Das sind 4 "auf die Sprünge Helfer".


    Arbeite dich in den Code und die Punkte die man dir sagt ein. Wenn du alle 10 Minuten sagst, du kommst nicht weiter, nachdem du nicht einmal die Hälfte dessen gemacht hast, was dir gesagt wurde, dann ist das für mich einfach nur Desinteresse, dann sehe ich es auch nicht ein, dir zu helfen. Es soll ja am Ende dein Code sein, wenn du nichts dafür tust, dann wird das nichts.

  • Ich komm irgendwie net weiter.


    format(string,sizeof(string), GVRN(playerid)[4];
    So hab ichs versucht aber compiler wirft erros


    Edit:


    Hab GVRN malfolgendermaßen gemacht. Meintest du das so @Jeffry?

    stock GetVerwalterRangName(playerid)
    {
    new string[50];
    switch(SpielerDaten[playerid][pVerwalter][3])
    {
    case 0: string = "Spieler";
    case 1: string = "Helferverwalter";
    case 2: string = "Firmenverwalter";
    case 3: string = "Bizverwalter";
    case 4: string = "Fraktionsverwalter";
    case 5: string = "Parteiverwalt";
    case 6: string = "Hausverwalter";
    case 7: string = "Charakterbeauftragter";
    case 8: string = "Eventmanager";
    }
    return string;
    }


    Ich glaub das format wie ich oben schrieb war falsch.

  • Du musst die Spalte genau gleich im Funktionskopf mitgeben, wie die playerid auch, das hast du doch auch hinbekommen, warum verkomplizierst du es jetzt so?

    Wenn ich schreibe "wie die playerid auch", warum schreibst du dann GVRN(playerid)[4]? playerid = innerhalb der runden Klammern --> Folge: slot ebenfalls innerhalb der Runden Klammern und nicht außerhalb der runden Klammern in eckigen Klammern.
    Außerdem ist 4 zu groß, es geht nur 0 bis 3. Und warum schreibst du das fest rein? Der Spieler gibt das doch ein.


    GVRN(playerid, spalte)




    switch(SpielerDaten[playerid][pVerwalter][3])

    Warum schreibst du dort die 3 hart rein? Willst du immer nur die 4. Spalte (pVerwalter4) zurückgegeben bekommen? Nein, also:


    stock GetVerwalterRangName(playerid, spalte)
    {
    new string[50];
    switch(SpielerDaten[playerid][pVerwalter][spalte])
    {
    case 0: string = "Spieler";
    case 1: string = "Helferverwalter";
    case 2: string = "Firmenverwalter";
    case 3: string = "Bizverwalter";
    case 4: string = "Fraktionsverwalter";
    case 5: string = "Parteiverwalt";
    case 6: string = "Hausverwalter";
    case 7: string = "Charakterbeauftragter";
    case 8: string = "Eventmanager";
    }
    return string;
    }

  • 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?

  • 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 fragst ab ob der Spieler vorher einen höheren Rang hatte und sendest ihm dann die Nachricht du wurdest "degradiert"
    Wenn der Rang höher ist als der Rang den er vorher hatte wurde er befördert


    if(SpielerVerwalterRang > GegebenenRang)
    {
    //Der Spieler wurde degradiert
    }


    if(SpielerVerwalterRang < GegebenenRang)
    {
    //Der Spieler wurde befördert
    }

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen