Beiträge von Jeffry

    Genau.


    Poste bitte außerdem den Befehl der Liste dazu, ich nehme durch die Fehlermeldung an, dass der genau drüber steht, und wohl der Grund für den Fehler ist.

    Du hast die Funktion ReturnPlayerID noch immer nicht in deinen Code eingefügt (ganz unten im Gamemode). Das sage ich dir nun zum dritten mal.
    Die Funktion steht im anderen Thread, suche sie dir dort raus und füge sie in deinen Gamemode ein.

    Na also, da ist die Zuweisung doch!


    Versuche es in deinem Online-List Befehl so:
    mysql_query("SELECT name, fraktion FROM users WHERE rank = 6;");
    mysql_store_result();
    new rows = mysql_num_rows();
    if(!rows) return SendClientMessage(playerid, 0xFF0000FF, "Error: Etwas ist schief gegangen.");
    new str[512], row[64], name[32], frak, fname[32];
    while(mysql_fetch_row(row, "|"))
    {
    sscanf(row, "p<|>sd", name, frak);
    switch(frak)
    {
    case 1:{fname = "LSPD";}
    case 2:{fname = "BND";}
    case 3:{fname = "Hitman Agency";}
    case 4:{fname = "SAA";}
    case 5:{fname = "Regierung";}
    case 6:{fname = "LSMD";}
    case 7:{fname = "OAmt";}
    case 8:{fname = "Varrios Los Aztecas";}
    case 9:{fname = "SAM AG";}
    case 10:{fname = "Grove";}
    case 11:{fname = "Ballas";}
    case 12:{fname = "Terror";}
    case 13:{fname = "LCN";}
    }
    if(ReturnPlayerID(name) != INVALID_PLAYER_ID) format(str, sizeof(str), "%s{FFFFFF}%d [%s] - {00FF00}Online\n", str, name, fname);
    else format(str, sizeof(str), "%s{FFFFFF}%d [%s] - {FF0000}Offline\n", str, name, fname);
    }
    ShowPlayerDialog(playerid, 4521, DIALOG_STYLE_MSGBOX, "OnlineList", str, "Ok");
    return 1;


    Bedenke, dass du das Query anpassen musst:
    mysql_query("SELECT name, fraktion FROM users WHERE rank = 6;");
    //users = Tabelle die die Userdaten enthält
    //name = Spalte in der der Name steht
    //fraktion = Spalte in der die Fraktions ID steht

    Zum Beispiel:
    PlayerTextDrawTextSize(BankEinzahlen[playerid], 240.0 + 100.0, 12.0);
    //100.0 = Breite
    //12.0 = Höhe
    Beide Werte sind geschätzt, die musst du gegebenenfalls anpassen, einfach ausprobieren.

    Du musst die Größe das anklickbaren Bereiches mit TextDrawTextSize anpassen. https://wiki.sa-mp.com/wiki/TextDrawTextSize Der X Wert ist die Position PLUS die Größe des nach rechts anklickbaren Bereiches. Der Y Wert ist die geschätzte Höhe.


    Angenommen du erstellst dein Textdraw bei X = 120 und Y = 90. Dann machst du den Text "Hallo Welt" da rein. Sagen wir, der Text ist so groß, dass er in etwa über ein Zehntel deines Bildschirmes geht (musst du abschätzen, oder mit einem Lineal abmessen), dann heißt das 640 durch 10, das wäre 64. Somit ist TextDrawTextSize-X = 120 + 64 = 184.
    Nun misst, bzw. schätzt, du die Höhe des Textdraws, sagen wir mal du bekommst den Text in etwa 20 mal untereinander hin, bis dein Bildschirm von oben nach unten voll damit wäre. Heißt also: 480 durch 20, das gibt 24. Somit wäre TextDrawTextSize-Y = 24.

    Versuche es so:
    if(strcmp(cmd, "/prison", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    new playa, time, len = strlen(cmd)+1;
    tmp = strtok(cmdtext, idx);
    len += strlen(tmp)+1;
    playa = ReturnUser(tmp);
    tmp = strtok(cmdtext, idx);
    len += strlen(tmp)+1;
    time = strval(tmp);
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "Benutze: /prison [Spieler ID / Name] [Zeit in Minuten] [Grund]");
    return 1;
    }
    if(playa == playerid)
    {
    SendClientMessage(playerid, COLOR_GRAD1, "Du kannst nicht dich selber einsperren!");
    return 1;
    }
    if(PlayerInfo[playerid][pAdmin] < PlayerInfo[playa][pAdmin])
    {
    SendClientMessage(playerid, COLOR_GRAD1, "Du kannst keinen höherrangigen Admin einsperren!");
    return 1;
    }
    if (PlayerInfo[playerid][pAdmin] >= 2)
    {
    if(IsPlayerConnected(playa))
    {
    if(playa != INVALID_PLAYER_ID)
    {
    GetPlayerName(playa, giveplayer, sizeof(giveplayer));
    GetPlayerName(playerid, sendername, sizeof(sendername));
    format(string, sizeof(string), "* Du hast %s ins Prison gesteckt. Grund: %s", giveplayer, cmdtext[len]);
    SendClientMessage(playerid, 0xFF1E00FF, string);
    format(string, sizeof(string), "* Du wurdest von Admin %s ins Prison gesteckt. Grund: %s", sendername, cmdtext[len]);
    SendClientMessage(playa, 0xFF1E00FF, string);
    format(string, sizeof(string), " %s wurde von %s ins Prison gesteckt. Grund: %s", giveplayer, sendername, cmdtext[len]);
    SendClientMessageToAll(0xFF1E00FF, string);
    ResetPlayerWeapons(playa);
    WantedPoints[playa] = 0;
    PlayerInfo[playa][pJailed] = 1;
    PlayerInfo[playa][pJailTime] = time*60;
    SetPlayerInterior(playa, 0);
    SetPlayerPos(playa, 271.1351,1858.3071,8.7578);
    format(string, sizeof(string), "Du wurdest für %d Minuten ins Prison gesteckt.", time);
    SendClientMessage(playa, COLOR_LIGHTBLUE, string);
    }
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GRAD1, " Du darfst diesen Befehl nicht benutzen!");
    }
    }
    return 1;
    }

    Du hattest dort eine weitere IsPlayerInRangeOfPoint Abfrage drin, daher ging es nicht. Außerdem waren noch ein paar Klammern zu viel vorhanden, die habe ich auch gleich entfernt.
    Außerdem war die Abfrage ob JobDuty 0 ist, das habe ich zu nicht 0 geändert, weil du es am Ende auf 0 setzt.
    Gegebenenfalls musst du es beim Start auf 1 setzen.


    Schreibe es so:
    if(SpielerInfo[playerid][Job]==10)
    {
    if(JobDuty[playerid]!=0)
    {
    for(new i=0; i<=sizeof(kanalrohre); i++)
    {
    if(IsPlayerInRangeOfPoint(playerid,5,kanalrohre[i][rorx],kanalrohre[i][rory],kanalrohre[i][rorz]))
    {
    DisablePlayerCheckpoint(playerid);
    SetCameraBehindPlayer(playerid);
    TogglePlayerControllable(playerid, false);
    ApplyAnimation(playerid, "BEACH", "Lay_Bac_Loop", 4.0, 1, 0, 0, 0, 0);
    SetTimerEx("UnfreezeRepairPlayer",4500, false, "d", playerid);
    SetPlayerCheckpoint(playerid,kanalrohre[i+1][rorx],kanalrohre[i+1][rory],kanalrohre[i+1][rorz],1.0);
    SendClientMessage(playerid, COLOR_ROT, "Du hast dir durch dieses Rohr 50€ verdient. Gehe zum Nächsten Checkpoint.");
    GibGeld(playerid,50);
    SpielerSpeichern(playerid);
    return 1;
    }
    }
    if(IsPlayerInRangeOfPoint(playerid, 3.0, 2170.6145,-1944.5775,54.8270))
    {
    DisablePlayerCheckpoint(playerid);
    SendClientMessage(playerid, COLOR_GRAD2, "* Du bist nun Fertig mit dem Job. Deine endsumme beträgt (+$500).");
    SendClientMessage(playerid, COLOR_GRAD4, "* Um erneut die Rohre zu Repairen, musst du lediglich erneut in den Dienst gehen.");
    JobDuty[playerid] = 0;
    SetPlayerSkin(playerid, SpielerInfo[playerid][Skin]);
    return 1;
    }
    }
    }

    Ok, super!


    Das #if defined heißt, wenn du FILTERSCRIPT definiert hast, dann wird der Code vom Compiler beachtet. Wenn nicht, dann nicht.
    Du hattest es nicht definiert (mit #define), daher hat der Compiler den Code dazwischen nicht kompiliert.