Beiträge von Jeffry

    Die Plugins werden alle ordnungsgemäß geladen...

    Das spielt keine Rolle, die Informationen über die Version sind ebenfalls wichtig.



    Das Problem ist wie ich vermute der Verbindungsaufbau zu MySQL

    Nein, das ist nicht das Problem.
    Die Fehlermeldung kommt, weil das Plugin entweder nicht geladen wird, nicht geladen werden kann, oder eine falsche Version ist.

    Melde mich seit langem mal wieder um hier mal weiter zu machen mir hat die Motivation gefehlt weil mir das sehr schwer viel.

    Schön, dass du weiter machst! :)



    Problem dabei Das Auto spawnt nicht woran liegts?

    Du erstellst das neue Fahrzeug mit der VehicleID des Autohausauto's, anstelle der ModelID.
    CreateVehicle(Autohausauto1[i], SAHSpawn[SP][0], SAHSpawn[SP][1], SAHSpawn[SP][2], SAHSpawn[SP][3], FB, FB, 0);
    zu:
    CreateVehicle(GetVehicleModel(Autohausauto1[i]), SAHSpawn[SP][0], SAHSpawn[SP][1], SAHSpawn[SP][2], SAHSpawn[SP][3], FB, FB, 0);

    "for(new i = 1; i < rows+1; i++); "

    Die Schleife muss, wie die Zeilen von Result auch, bei 0 beginnen, sonst fehlt die erste Zeile der Tabelle.


    vor der Schleife eine 25 Zeichen lange Variable erstellen...

    Bloß nicht! Dafür kann man ja die Anzahl der Zeilen auslesen.



    for(new i = 0; i < 5; i++)

    zu:
    new rows;
    cache_get_row_count(rows);
    for(new i = 0; i < rows; i++)



    Oder als Vorschlag auch so:
    new rows;
    cache_get_row_count(rows);
    for(new i = 0; i < rows; i++)
    {
    cache_get_value_name(i, "name", name);
    format(string, sizeof(string),"~w~%s~r~%d. ~w~%s~n~",string, i+1, name);
    }
    for(new i = rows; i < 5; i++)
    {
    format(string, sizeof(string),"~w~%s~r~%d. ~w~ - ~n~",string, i+1);
    }
    TextDrawSetString(Top5_TextDraw[1], string);


    Dann zeigt es die nicht belegten Plätze mit "-" an.

    Wie krieg ich das denn jetzt richtig hin ?

    Ich habe dir den Code ausgebessert und mit Kommentaren versehen, damit du die Änderungen nachvollziehen kannst.
    ocmd:unban(playerid,params[])
    {
    new pname[MAX_PLAYER_NAME], preason[64], query[128];
    if(PlayerInfo[playerid][pAdmin] <= 2) return SendClientMessage(playerid,COLOR_GRAD1,"Du bist nicht berechtigt, diesen Befehl auszuführen.");
    //Bei sscanf "s" muss immer die Größe mitgegeben werden, beim neuen Plugin
    if(sscanf(params, "s[24]s[64]", pname, preason)) return SendClientMessage(playerid,COLOR_GRAD1,"FEHLER: /unban [Exakter Spielername] [Grund]");
    //Um Speicher zu sparen, nutzen wir "string" zwei mal, da es nach dem Query-Absenden nicht mehr benötigt wird.
    mysql_format(handle, string, sizeof(string), "SELECT id, Username FROM user WHERE Username = '%e'", pname);
    mysql_pquery(handle, string, "UnBanForPlayer", "ds", playerid, preason); //UnBanForPlayer mitgeben, sonst wird es nicht aufgerufen.
    return 1;
    }


    forward UnBanForPlayer(playerid, preason[]);
    public UnBanForPlayer(playerid, preason[])
    {
    new rows, string[145], id, pname[MAX_PLAYER_NAME]; //145 Zeichen = Maximum für SendClientMessage
    cache_get_row_count(rows);
    if(rows == 0) return SendClientMessage(playerid, COLOR_RED, "Der angegebene Name konnte in der Datenbank nicht gefunden werden!");
    else
    {
    //Daten aus Ergebnis auslesen
    id = cache_get_field_content_int(0, "id", handle);
    cache_get_field_content(0, "Username", pname, handle);
    //Die Nachricht geben wir erst hier aus:
    format(string, sizeof(string), "Du hast %s entbannt, grund %s", pname, preason);
    SendClientMessage(playerid, -1, string);
    //string erhält einen neuen Text, der alte Text (Nachricht) wird verworfen, brauchen wir ja auch nicht mehr.
    mysql_format(handle, string, sizeof(string), "UPDATE `user` SET `pBanned` = '0' WHERE `id` = '%d'", id);
    mysql_pquery(handle, string);
    }
    return 1;
    }

    Ich habe dir das angepasst und etwas mit Kommentaren versehen, zum besseren Verständnis.
    Ich habe den Grundaufbau so gelassen und nur die Fehler korrigiert.
    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    //Vermeide solche "Doppeldeklarationen" wie string und string2.
    new string[128];
    new string2[128];
    new query[256];
    new giveplayer[MAX_PLAYER_NAME];
    new sendername[MAX_PLAYER_NAME];
    GetPlayerName(playerid,sendername,sizeof(sendername));
    if(dialogid == DIALOG_REGISTERS)
    {

    if(!response) return Kick(playerid);
    if(strlen(inputtext) < 3) return ShowPlayerDialog(playerid, DIALOG_REGISTERS, DIALOG_STYLE_PASSWORD, "VR Reallife", "Herzlich Willkommen auf VR Reallife\nDein Account nicht in unserer Datenbank gefunden.\nBitte registriere dich nun.\n{FF0000}Mindestens 3 Zeichen!", "Fortfahren", "Abbrechen");

    //Das eingegebene Passwort wird weg geschrieben:
    SetPVarString(playerid,"password",inputtext);
    ShowPlayerDialog(playerid,DIALOG_ISUSED,DIALOG_STYLE_MSGBOX,"VR Reallife","Benutzt du dieses Passwort auf einem anderem Server?","Ja","Nein");
    return 1;
    }
    if(dialogid == DIALOG_ISUSED)
    {
    if(response)
    {
    ShowPlayerDialog(playerid, DIALOG_REGISTERCHECK, DIALOG_STYLE_PASSWORD, "VR Reallife", "Herzlich Willkommen auf VR Reallife\nDein Account nicht in unserer Datenbank gefunden.\nBitte registriere dich nun.", "Fortfahren", "Abbrechen");
    SendClientMessage(playerid,COLOR_RED,"SERVER: Um deine Accountsicherheit auf dem Server zu gewährleisten, wähle bitte ein anderes Passwort!");
    return 1;
    }
    else
    {
    mysql_format(handle, query, sizeof(query), "INSERT INTO `user` (`Username`, `Key`) VALUES ('%e', MD5('%e'))", PlayerInfo[playerid][PlayerName], inputtext);
    SendClientMessage(playerid,0xFFFFE060,"DHuiensohn");
    mysql_pquery(handle, query, "OnUserRegister", "d", playerid);
    }
    return 1;
    }
    if(dialogid == DIALOG_REGISTERCHECK)
    {
    //Lese das zuvor eingegeben Passwort aus und prüfe es gegen "inputtext":
    GetPVarString(playerid, "password", string, sizeof(string));
    if(!strcmp(inputtext, string))
    {
    SendClientMessage(playerid,COLOR_RED,"Das Passwort hast du davor schon eingegeben!");
    ShowPlayerDialog(playerid, DIALOG_REGISTERCHECK, DIALOG_STYLE_PASSWORD, "VR Reallife", "Herzlich Willkommen auf VR Reallife\nDein Account nicht in unserer Datenbank gefunden.\nBitte registriere dich nun.", "Fortfahren", "Abbrechen");
    return 1;
    }
    else
    {
    mysql_format(handle, query, sizeof(query), "INSERT INTO `user` (`Username`, `Key`) VALUES ('%e', MD5('%e'))", PlayerInfo[playerid][PlayerName], inputtext);
    SendClientMessage(playerid,0xFFFFE060,"DHuiensohn");
    mysql_pquery(handle, query, "OnUserRegister", "d", playerid);
    }
    return 1;
    }

    Da es sich bei allen um Floats handelt, kannst du es so machen:
    enum Inventar_Daten
    {
    //Bedarf Inventar
    PolosChickenwings,
    FreddysMargarithaPizza,
    Sprunk,
    };
    new Float:Inventar[MAX_PLAYERS][Inventar_Daten];

    1. Es heißt GPCI: http://wiki.sa-mp.com/wiki/Gpci


    2. Es ist kein Hash vom Benutzername, sondern vom Installationspfad.


    3. Mehr Info's hier: http://forum.sa-mp.com/showpost.php?p=2919059&postcount=2



    Was kannst du uns denn sonnst empfehlen

    In der Regel macht ein solcher Ban nur unter den Umständen Sinn, dass eine Person dauerhaft auf den Server kommt und Probleme macht.
    Rangebans (123.123.*.*) haben sich in meiner Erfahrung allerdings ebenso gut bewährt, da kaum jemand Zugriff auf mehrere Ranges hat. Die minimale Anzahl kann man dann im speziellen Fall noch mit GPCI sperren, um den Aufwand zu erhöhen. Wobei ja lediglich der Installationspfad angepasst werden muss. Wer das weiß, kommt auch da drum herum.

    Schreibe das hier


    Code
    Gui, Add, Text, x32 y19 w110 h30 vText1 , Test

    nicht direkt beim Button 1 hin, sondern davor, dort wo der Rest auch erstellt wird.


    Nach Button1 machst du dann so wie bei Button2 Show statt Hide.

    Der Fehler kann auch vorkommen, wenn versucht wird, die gleiche Gui nochmal zu erstellen. Füge mal als erste Zeile das ein:

    Code
    Gui, Destroy

    Dann vMyPic1 (oder wie du es eben nennen willst). vIrgendwasHier


    Wichtig ist nur, dass es mit v beginnt (oder mit g wenn es anklickbar sein soll).