Beiträge von Allrounder18

    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.

    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

    Habs versucht, wirftkeine Fehlermeldungen. Aber jetzt meckert der Compiler wegen



    public OnUserRegister(playerid)
    {
    SpielerDaten[playerid][p_id] = cache_insert_id();
    SpielerDaten[playerid][pEingeloggt] = true;
    SCM(playerid, 0x00FF00FF, "[Konto] Registration erfolgreich.");
    SaveUserStats(playerid);
    return 1;
    }



    public OnUserLogin(playerid)
    {
    new rows;
    cache_get_row_count(rows);
    if(rows == 0)
    {
    ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Anmeldung", "Bitte logge Dich ein:\n{FF0000}Falsches Passwort!", "Ok", "Abbrechen");
    }
    else
    {
    cache_get_value_name_int(0, "ID", SpielerDaten[playerid][p_id]);
    cache_get_value_name_int(0, "Level", SpielerDaten[playerid][pLevel]);
    cache_get_value_name_int(0, "Geld", SpielerDaten[playerid][pGeld]);
    cache_get_value_name_int(0, "Skin", SpielerDaten[playerid][pSkin]);
    cache_get_value_name_int(0, "Admin", SpielerDaten[playerid][pAdmin]);
    cache_get_value_name_int(0, "Verwalter1", SpielerDaten[playerid][pVerwalter1]);
    cache_get_value_name_int(0, "Verwalter2", SpielerDaten[playerid][pVerwalter2]);
    cache_get_value_name_int(0, "Verwalter3", SpielerDaten[playerid][pVerwalter3]);
    cache_get_value_name_int(0, "Verwalter4", SpielerDaten[playerid][pVerwalter4]);
    SpielerDaten[playerid][pEingeloggt] = true;
    SCM(playerid, 0x00FF00FF, "[Konto] Erfolgreich eingeloggt.");
    GivePlayerMoney(playerid, SpielerDaten[playerid][pGeld]);
    }
    return 1;
    }


    Bei den pverwalter sagt er undefined



    stock SaveUserStats(playerid)
    {
    if(!SpielerDaten[playerid][pEingeloggt]) return 1;
    new query[1024];
    mysql_format(handle, query, sizeof(query), "UPDATE accounts SET Level = '%d', Geld = '%d', Skin = '%d', Admin = '%d',",
    SpielerDaten[playerid][pLevel],SpielerDaten[playerid][pGeld],GetPlayerSkin(playerid),SpielerDaten[playerid][pAdmin]);



    mysql_format(handle,query,sizeof(query),"%s Verwalter1 = '%d', Verwalter2 = '%d', Verwalter3 = '%d', Verwalter4 = '%d' WHERE id = '%d'",
    query,SpielerDaten[playerid][pVerwalter1],SpielerDaten[playerid][pVerwalter2],SpielerDaten[playerid][pVerwalter3],SpielerDaten[playerid][pVerwalter4],SpielerDaten[playerid][p_id]);
    mysql_pquery(handle, query);
    return 1;
    }


    Bei den pverwalter sagt er hier auch undefined

    Also if(sscanf(params, "ui", pID, spalte,adminid))return makeadmin; nur was müsste ich dann bei ui dazuschreiben?


    for Schleife so? for(new verwalter; verwalter < 4 players ++) so?


    format(string,sizeof(string), GVRN(playerid)[Spalte]); so?

    Also die Spalten Veralter 1 bis Verwalter 4 lassen?
    SD[pID][pVerwalter][spalte] = verwid; für jede der 4 Spaten?

    Um zu prüfen, ob er diesen Rang bereits hat, mache eine Schleife durch alle 4 Spalten und gebe eine Nachricht aus, falls du die verwid bereits in einer der Spalte findest.
    Außerdem muss deine "GVRN" auch die Spalte mit als Parameter beinhalten, sonst weiß der Code ja nicht, welche Spalte du auslesen willst.

    Wie mach ich so ne Schleife?
    Wie meinst das mit GetVerwalterRangName(GVRN)?


    Woher soll er es denn wissen? Wenn 0 drin steht, oder was sagt dem Befehl, dass er in 1,2,3 oder 4 schreiben soll?Außerdem, beim Entziehen, wie soll er da wissen, welchen Rang er entziehen soll?

    Genau da wei ich nicht mehr weiter, wie ich das machen soll.

    Hallo, hab dan kleines Problem.


    Ich hatte es schonmal dieses Problem, dan dachte ich es ist gelöst, nur kann man sich den Rang setzten wen man kein Teammitgleid ist, wenn der Code folgendermapen ist. Was ist das inkorrekt?



    ocmd:makeadmin(playerid, params[])
    {
    //if(SD[playerid][pEingeloggt] == 0)return SCM(playerid, GRAU, "Du bist nicht eingeloggt!");
    new pID, adminid, string[128];
    if(!iPAA(playerid,5))
    {
    if(sscanf(params, "ui", pID, adminid))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(adminid == 0)
    {
    format(string,sizeof(string), GARN(playerid));
    SD[pID][pAdmin] = adminid;
    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), GARN(playerid));
    SD[pID][pAdmin] = adminid;
    format(string, sizeof(string), "%s %s hat dir den Rang %s entzogenn!", string,SD[playerid][pName],GARN(pID));
    SCM(pID, BLAU, string);
    format(string,sizeof(string), GARN(playerid));
    SD[pID][pAdmin] = adminid;
    format(string, sizeof(string), "AdmCMD: %s %s hat %s %s den Rang %s entzogen!", string,SD[playerid][pName],string, SD[pID][pName],GARN(pID));
    SAM(BLAU, string);
    SD[pID][pAdmin] = 0;
    SUS(pID);
    return 1;
    }
    if(adminid < 1 || adminid > 7)return adminrangnichtexistent;
    format(string,sizeof(string), GARN(pID));
    SD[pID][pAdmin] = adminid;
    format(string, sizeof(string), "Du hast %s %s den Teamrang %s gegeben", string,SD[pID][pName], GARN(pID));
    SCM(playerid, BLAU, string);
    format(string, sizeof(string), "%s %s hat dir den Teamrang %s gegeben",GARN(playerid),SD[playerid][pName],GARN(pID));
    SCM(pID, BLAU, string);
    format(string,sizeof(string), GARN(pID));
    SD[pID][pAdmin] = adminid;
    format(string, sizeof(string), "AdmCMD: %s %s hat %s %s zum %s ernannt.",string, SD[playerid][pName],string, SD[pID][pName], GARN(pID));
    SAM(BLAU,string);
    SUS(pID);
    return 1;
    }
    else {SCM(playerid, GRAU, "Du hast nicht genügend Rechte für diesen Befehl.");}
    return 1;
    }

    Bis zu auto increment hab ichs jetzt mal. Die Spalt hab ich ID genannt. Wo find ich diesen foreign Key? Sorry, ich kenn mich mit MySQL och nicht so gut aus.

    iPAA = isPlayerAnAdmin



    stock isPlayerAnAdmin(playerid,rang)
    {
    if(SpielerDaten[playerid][pAdmin] < rang)return 1;
    return 0;
    }


    Wie meinst du das mit extra Tabelle?

    Hm, ich hät ja gerne, dass ein Spieler bis zu 4 verschiedene Verwalterränge gleichzeitig haben kann.


    Abgesehn davon viel mri grade auf, so wie der Befehl gechrieben ist, kann man sich den Verwalterrang settzen wen man Rang 0 ist. Wie kan ch das am besten umgehen?


    if(iPAA(playerid,5)) funktioniert nicht.

    Hallo!


    Dem Rat von @Jeffry zufolge erstelle ich hier n extra Thema, da mein Anliegen wohl etwas schwieiriger ist.


    Ich habe in meinem Script Verwalterränge, welche zb. Hausverwalter, Bizverwalter etc. sind. Dies sind zusätzliche Teamränge, damit zb. nicht jeder Admin Hausverwalter ist. Ein Teamler kann bis zu 4 Verwalterränge gleichzeitig haben.


    Das sind meine DB Spalten:


    Verwalter1
    Verwalter2
    Verwalter3
    Verwalter4


    Wie mache ich am besten den /makeverwalter Befehl, dass wenn ich schreibe /makeverwalter Spielerid Verwalterrang der Verwalterrang 6 zb nicht in 2 verschiedenen Spalten ist? Wie mache ich es, dass der Befehl weiß in welche Spalte er schreiben soll?


    Hiermein /makeverwalter

    ocmd:makeverwalter(playerid, params[])
    {
    //if(SD[playerid][pEingeloggt] == 0)return SCM(playerid, GRAU, "Du bist nicht eingeloggt!");
    new pID, verwid, string[128];
    if(!iPAA(playerid,5))
    {
    if(sscanf(params, "ui", pID, 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)
    {
    format(string,sizeof(string), GVRN(playerid));
    SD[pID][pVerwalter1] = 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][pVerwalter1] = 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][pVerwalter1] = 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][pVerwalter1] = 0;
    SUS(pID);
    return 1;
    }
    if(verwid < 1 || verwid > 7)return adminrangnichtexistent;
    format(string,sizeof(string), GVRN(pID));
    SD[pID][pVerwalter1] = 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][pVerwalter1] = 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;
    }


    MfG

    Die defines sind ganz oben


    Edit:


    Ich versuch grade maps in ein include zu geben und einzufügen.


    new FAHRSCHULE[56], FAHRSCHULEINT[68];stock LoadObjects() { //FAHRSCHULE! FAHRSCHULE[0] = CreateDynamicObject(19437, 998.3748, -1296.3133, 15.9863, 90.0000, 90.0000, 0.0000); //wall077 SetDynamicObjectMaterial(FAHRSCHULE[0], 0, 10765, "airportgnd_sfse", "white", 0xFFFFFFFF);


    Der Code ist natürlich viel länger


    Unter OnGamemodeInit hab ich dann LoadObjects();


    Es wird jedoch nichts eingefügt. Woran kann das liegen?


    Edit: Beide Probleme haben sich gelöst, ich hab die falsche .pwn Datei geladen, daher ging nix.