Beiträge von Syneroz

    Okay, das habe ich komplett vergessen.
    Nun habe ich streamer in die server.txt eingetragen, allerdings wird mir beim starten der Server nun folgendes Fenster geöffnet:


    Titel:
    samp-server.exe - Systemfehler


    Inhalt:
    Das Programm kann nicht gestartet werden, da MSVCR120.dll auf dem
    Computer fehlt. Installieren erneut, um das Prroblem zu beheben.


    nun habe ich die DLL bereits über DLL-files gedownloadet und automatisch installieren lassen,
    was keine Abhilfe geschafft hat. Auch beim manuellen installieren wird das Problem behoben.



    Gruß


    Habs geschafft, die .dll-Datei gehört in den Ordner in den man auch den Server startet.


    Nun stehe ich aber vor den Problem, dass dieser Stock nichts liefert:
    stock LoadLSbizSkinShop()
    {
    for(new i = 0; i < MAX_LSbizSkinShop; i++)
    {
    new query[1200], savingstring[24], string[128];


    format(query, sizeof(query), "SELECT * FROM `lsbizskinshop` WHERE `LSbizSkinShop_ID` = %i", i);
    mysql_query(query);
    while(mysql_fetch_row_format(query,"|"))
    {
    mysql_fetch_field_row(savingstring, "LSbizSkinShop_ID"); LSbizSkinShopInfo[i][bLSbizSkinShop_ID] = strval(savingstring);
    mysql_fetch_field_row(savingstring, "LSbizSkinShop_Name"); LSbizSkinShopInfo[i][bLSbizSkinShop_Name] = savingstring;
    mysql_fetch_field_row(savingstring, "LSbizSkinShop_Preis"); LSbizSkinShopInfo[i][bLSbizSkinShop_Preis] = strval(savingstring);
    mysql_fetch_field_row(savingstring, "LSbizSkinShop_Besitzer"); LSbizSkinShopInfo[i][bLSbizSkinShop_Besitzer] = savingstring;
    mysql_fetch_field_row(savingstring, "LSbizSkinShop_Interior"); LSbizSkinShopInfo[i][bLSbizSkinShop_Interior] = strval(savingstring);
    mysql_fetch_field_row(savingstring, "LSbizSkinShop_Wolrd"); LSbizSkinShopInfo[i][bLSbizSkinShop_World] = strval(savingstring);
    mysql_fetch_field_row(savingstring, "LSbizSkinShop_EnterX"); LSbizSkinShopInfo[i][bLSbizSkinShop_EnterX] = floatstr(savingstring);
    mysql_fetch_field_row(savingstring, "LSbizSkinShop_EnterY"); LSbizSkinShopInfo[i][bLSbizSkinShop_EnterY] = floatstr(savingstring);
    mysql_fetch_field_row(savingstring, "LSbizSkinShop_EnterZ"); LSbizSkinShopInfo[i][bLSbizSkinShop_EnterZ] = floatstr(savingstring);
    mysql_fetch_field_row(savingstring, "LSbizSkinShop_ExitX"); LSbizSkinShopInfo[i][bLSbizSkinShop_ExitX] = floatstr(savingstring);
    mysql_fetch_field_row(savingstring, "LSbizSkinShop_ExitY"); LSbizSkinShopInfo[i][bLSbizSkinShop_ExitY] = floatstr(savingstring);
    mysql_fetch_field_row(savingstring, "LSbizSkinShop_ExitZ"); LSbizSkinShopInfo[i][bLSbizSkinShop_ExitZ] = floatstr(savingstring);
    }
    new BizName[24]; format(BizName, 24, "%s", LSbizSkinShopInfo[i][bLSbizSkinShop_Name]);
    strreplace(BizName, '_', ' ');
    if(!strcmp(LSbizSkinShopInfo[i][bLSbizSkinShop_Besitzer], "Niemand", false)) format(string, sizeof(string), "%s\n[Zu Verkaufen!]\nPreis: %i\nBenutze '/enter' oder drücke 'F' zum das Gebäude zu betreten!", BizName, LSbizSkinShopInfo[i][bLSbizSkinShop_Preis]);
    else format(string, sizeof(string), "%s\nBesitzer: %s\nBenutze '/enter' oder drücke 'F' zum das Gebäude zu betreten!", LSbizSkinShopInfo[i][bLSbizSkinShop_Name], LSbizSkinShopInfo[i][bLSbizSkinShop_Besitzer]);
    LSbizSkinShopInfo[i][bLSbizSkinShop_Label] = CreateDynamic3DTextLabel(string, COLOR_YELLOW, LSbizSkinShopInfo[i][bLSbizSkinShop_EnterX], LSbizSkinShopInfo[i][bLSbizSkinShop_EnterY], LSbizSkinShopInfo[i][bLSbizSkinShop_EnterZ], 12, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 1, -1, -1, -1);
    LSbizSkinShopInfo[i][bLSbizSkinShop_Pickup] = CreateDynamicPickup(1272, 1, LSbizSkinShopInfo[i][bLSbizSkinShop_EnterX], LSbizSkinShopInfo[i][bLSbizSkinShop_EnterY], LSbizSkinShopInfo[i][bLSbizSkinShop_EnterZ], -1);
    printf("Hallo :%i", LSbizSkinShopInfo[i][bLSbizSkinShop_ID]);
    if(IsBusinessOwned(i)) printf("LSbizSkinShop %i wurde geladen; Name: %s", i, LSbizSkinShopInfo[i][bLSbizSkinShop_Name]);
    }
    return 1;
    }

    Folgendes habe ich herausgefunden:


    Es liegt an diesen Stock:


    stock LoadLSbizSkinShop()
    {
    for(new i = 0; i < MAX_LSbizSkinShop; i++)
    {
    new query[600], savingstring[24], string[128];


    format(query, sizeof(query), "SELECT * FROM LSbizSkinShop WHERE LSbizSkinShop_ID = %i", i);
    mysql_query(query);
    while(mysql_fetch_row_format(query,"|"))
    {
    mysql_fetch_field_row(savingstring, "LSbizSkinShop_ID"); LSbizSkinShopInfo[i][bLSbizSkinShop_ID] = strval(savingstring);
    mysql_fetch_field_row(savingstring, "LSbizSkinShop_Name"); LSbizSkinShopInfo[i][bLSbizSkinShop_Name] = strval(savingstring);
    mysql_fetch_field_row(savingstring, "LSbizSkinShop_Preis"); LSbizSkinShopInfo[i][bLSbizSkinShop_Preis] = strval(savingstring);
    mysql_fetch_field_row(savingstring, "LSbizSkinShop_Besitzer"); LSbizSkinShopInfo[i][bLSbizSkinShop_Besitzer] = strval(savingstring);
    mysql_fetch_field_row(savingstring, "LSbizSkinShop_Interior"); LSbizSkinShopInfo[i][bLSbizSkinShop_Interior] = strval(savingstring);
    mysql_fetch_field_row(savingstring, "LSbizSkinShop_Wolrd"); LSbizSkinShopInfo[i][bLSbizSkinShop_World] = strval(savingstring);
    mysql_fetch_field_row(savingstring, "LSbizSkinShop_EnterX"); LSbizSkinShopInfo[i][bLSbizSkinShop_EnterX] = floatstr(savingstring);
    mysql_fetch_field_row(savingstring, "LSbizSkinShop_EnterY"); LSbizSkinShopInfo[i][bLSbizSkinShop_EnterY] = floatstr(savingstring);
    mysql_fetch_field_row(savingstring, "LSbizSkinShop_EnterZ"); LSbizSkinShopInfo[i][bLSbizSkinShop_EnterZ] = floatstr(savingstring);
    mysql_fetch_field_row(savingstring, "LSbizSkinShop_ExitX"); LSbizSkinShopInfo[i][bLSbizSkinShop_ExitX] = floatstr(savingstring);
    mysql_fetch_field_row(savingstring, "LSbizSkinShop_ExitY"); LSbizSkinShopInfo[i][bLSbizSkinShop_ExitY] = floatstr(savingstring);
    mysql_fetch_field_row(savingstring, "LSbizSkinShop_ExitZ"); LSbizSkinShopInfo[i][bLSbizSkinShop_ExitZ] = floatstr(savingstring);
    }
    new BizName[24]; format(BizName, 24, "%s", LSbizSkinShopInfo[i][bLSbizSkinShop_Name]);
    strreplace(BizName, '_', ' ');
    if(!strcmp(LSbizSkinShopInfo[i][bLSbizSkinShop_Besitzer], "Niemand", false)) format(string, sizeof(string), "%s\n[Zu Verkaufen!]\nPreis: %i\nBenutze '/enter' oder drücke 'F' zum das Gebäude zu betreten!", BizName, LSbizSkinShopInfo[i][bLSbizSkinShop_Preis]);
    else format(string, sizeof(string), "%s\nBesitzer: %s\nBenutze '/enter' oder drücke 'F' zum das Gebäude zu betreten!", LSbizSkinShopInfo[i][bLSbizSkinShop_Name], LSbizSkinShopInfo[i][bLSbizSkinShop_Besitzer]);
    LSbizSkinShopInfo[i][bLSbizSkinShop_Label] = CreateDynamic3DTextLabel(string, COLOR_YELLOW, LSbizSkinShopInfo[i][bLSbizSkinShop_EnterX], LSbizSkinShopInfo[i][bLSbizSkinShop_EnterY], LSbizSkinShopInfo[i][bLSbizSkinShop_EnterZ], 12, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 1, -1, -1, -1;
    LSbizSkinShopInfo[i][bLSbizSkinShop_Pickup] = CreateDynamicPickup(1272, 1, LSbizSkinShopInfo[i][bLSbizSkinShop_EnterX], LSbizSkinShopInfo[i][bLSbizSkinShop_EnterY], LSbizSkinShopInfo[i][bLSbizSkinShop_EnterZ], 0);
    if(IsBusinessOwned(i)) printf("LSbizSkinShop %i wurde geladen; Name: %s", i, LSbizSkinShopInfo[i][bLSbizSkinShop_Name]);
    }
    return 1;
    }



    Genauer gesagt an diesen beiden Zeilen:
    LSbizSkinShopInfo[i][bLSbizSkinShop_Label] = CreateDynamic3DTextLabel(string, COLOR_YELLOW, LSbizSkinShopInfo[i][bLSbizSkinShop_EnterX], LSbizSkinShopInfo[i][bLSbizSkinShop_EnterY], LSbizSkinShopInfo[i][bLSbizSkinShop_EnterZ], 12, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 1, -1, -1, -1;
    LSbizSkinShopInfo[i][bLSbizSkinShop_Pickup] = CreateDynamicPickup(1272, 1, LSbizSkinShopInfo[i][bLSbizSkinShop_EnterX], LSbizSkinShopInfo[i][bLSbizSkinShop_EnterY], LSbizSkinShopInfo[i][bLSbizSkinShop_EnterZ], 0);

    Hallo,


    ich habe gerade angefangen Skinshops zu erstellen, allerdings stimmt da irgendwas mit den Script nicht.
    Momentan wird der stock "Connect_To_Database();" einfach nicht beim starten des Servers ausgeführt,
    im allgemeinen wird nichts von dem was im Script steht ausgeführt.


    Ich weiß nicht wo ich einen Fehler eingebaut habe und finde auch keinen Fehler..


    Der Serverlog:

    Code
    [22:37:00] [22:37:00] Server Plugins[22:37:00] --------------[22:37:00]  Loading plugin: mysql[22:37:00]   > MySQL plugin R5 successfully loaded.[22:37:00]   Loaded.[22:37:00]  Loading plugin: sscanf[22:37:00] [22:37:00]  ===============================[22:37:00]       sscanf plugin loaded.     [22:37:00]    (c) 2009 Alex "Y_Less" Cole[22:37:00]    0.3d-R2 500 Players "dnee"[22:37:00]  ===============================[22:37:00]   Loaded.[22:37:00]  Loaded 2 plugins.[22:37:00] [22:37:00] Filterscripts[22:37:00] ---------------[22:37:00]   Loading filterscript 'Spawn.amx'...[22:37:00] <-| [MYSQL] Verbindung zur Datenbank wurde erfolgreich hergestellt![22:37:00]   Loading filterscript 'LSSkinshop.amx'...[22:37:00]   Loading filterscript 'vspawner.amx'...[22:37:00]   Loaded 3 filterscripts.[22:37:00] ----------------------------------[22:37:00]  Blank Gamemode by Syneroz[22:37:00] ----------------------------------



    Hier das Filterscript:

    Spoiler anzeigen
    #include <a_samp>
    #include <a_mysql>
    #include <ocmd>
    #include <sscanf2>
    #include <streamer>

    Spoiler anzeigen
    #define SQL_HOST "localhost"
    #define SQL_USER "root"
    #define SQL_PASS ""
    #define SQL_DATA "gta_db"

    Spoiler anzeigen
    #define COLOR_GREY 0xBFBFBFFF
    #define COLOR_YELLOW 0xFFFF00FF

    Spoiler anzeigen
    #define MAX_LSbizSkinShop 10

    Spoiler anzeigen
    enum LSbizSkinShopDaten
    {
    bLSbizSkinShop_ID,
    bLSbizSkinShop_Name[24],
    bLSbizSkinShop_Preis,
    bLSbizSkinShop_Besitzer[24],
    bLSbizSkinShop_Interior,
    bLSbizSkinShop_World,
    Float:bLSbizSkinShop_EnterX,
    Float:bLSbizSkinShop_EnterY,
    Float:bLSbizSkinShop_EnterZ,
    Float:bLSbizSkinShop_ExitX,
    Float:bLSbizSkinShop_ExitY,
    Float:bLSbizSkinShop_ExitZ,
    bLSbizSkinShop_Pickup,
    Text3D:bLSbizSkinShop_Label
    }

    Spoiler anzeigen
    new LSbizSkinShopInfo[MAX_LSbizSkinShop][LSbizSkinShopDaten];

    Spoiler anzeigen
    public OnFilterScriptInit()
    {
    print("<-| [Es wird geladen!!");
    LoadLSbizSkinShop();
    Connect_To_Database();
    return 1;
    }

    Spoiler anzeigen
    public OnFilterScriptExit()
    {
    return 1;
    }

    Spoiler anzeigen
    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if (strcmp("/mycommand", cmdtext, true, 10) == 0)
    {
    // Do something here
    return 1;
    }
    return 0;
    }

    Spoiler anzeigen
    stock mysql_GetString(Table[], Field[], Where[], Is[])
    {
    new query[128], Get[512];
    mysql_real_escape_string(Table, Table);
    mysql_real_escape_string(Field, Field);
    mysql_real_escape_string(Where, Where);
    mysql_real_escape_string(Is, Is);
    format(query, 128, "SELECT `%s` FROM `%s` WHERE `%s` = '%s'", Field, Table, Where, Is);
    mysql_query(query);
    mysql_store_result();
    mysql_fetch_row(Get);
    mysql_free_result();
    return Get;
    }

    Spoiler anzeigen
    stock LoadLSbizSkinShop()
    {
    for(new i = 0; i < MAX_LSbizSkinShop; i++)
    {
    new query[600], savingstring[24], string[128];

    Spoiler anzeigen
    format(query, sizeof(query), "SELECT * FROM LSbizSkinShop WHERE LSbizSkinShop_ID = %i", i);
    mysql_query(query);
    while(mysql_fetch_row_format(query,"|"))
    {
    mysql_fetch_field_row(savingstring, "LSbizSkinShop_ID"); LSbizSkinShopInfo[i][bLSbizSkinShop_ID] = strval(savingstring);
    mysql_fetch_field_row(savingstring, "LSbizSkinShop_Name"); LSbizSkinShopInfo[i][bLSbizSkinShop_Name] = strval(savingstring);
    mysql_fetch_field_row(savingstring, "LSbizSkinShop_Preis"); LSbizSkinShopInfo[i][bLSbizSkinShop_Preis] = strval(savingstring);
    mysql_fetch_field_row(savingstring, "LSbizSkinShop_Besitzer"); LSbizSkinShopInfo[i][bLSbizSkinShop_Besitzer] = strval(savingstring);
    mysql_fetch_field_row(savingstring, "LSbizSkinShop_Interior"); LSbizSkinShopInfo[i][bLSbizSkinShop_Interior] = strval(savingstring);
    mysql_fetch_field_row(savingstring, "LSbizSkinShop_Wolrd"); LSbizSkinShopInfo[i][bLSbizSkinShop_World] = strval(savingstring);
    mysql_fetch_field_row(savingstring, "LSbizSkinShop_EnterX"); LSbizSkinShopInfo[i][bLSbizSkinShop_EnterX] = floatstr(savingstring);
    mysql_fetch_field_row(savingstring, "LSbizSkinShop_EnterY"); LSbizSkinShopInfo[i][bLSbizSkinShop_EnterY] = floatstr(savingstring);
    mysql_fetch_field_row(savingstring, "LSbizSkinShop_EnterZ"); LSbizSkinShopInfo[i][bLSbizSkinShop_EnterZ] = floatstr(savingstring);
    mysql_fetch_field_row(savingstring, "LSbizSkinShop_ExitX"); LSbizSkinShopInfo[i][bLSbizSkinShop_ExitX] = floatstr(savingstring);
    mysql_fetch_field_row(savingstring, "LSbizSkinShop_ExitY"); LSbizSkinShopInfo[i][bLSbizSkinShop_ExitY] = floatstr(savingstring);
    mysql_fetch_field_row(savingstring, "LSbizSkinShop_ExitZ"); LSbizSkinShopInfo[i][bLSbizSkinShop_ExitZ] = floatstr(savingstring);
    }
    new BizName[24]; format(BizName, 24, "%s", LSbizSkinShopInfo[i][bLSbizSkinShop_Name]);
    strreplace(BizName, '_', ' ');
    if(!strcmp(LSbizSkinShopInfo[i][bLSbizSkinShop_Besitzer], "Niemand", false)) format(string, sizeof(string), "%s\n[Zu Verkaufen!]\nPreis: %i\nBenutze '/enter' oder drücke 'F' zum das Gebäude zu betreten!", BizName, LSbizSkinShopInfo[i][bLSbizSkinShop_Preis]);
    else format(string, sizeof(string), "%s\nBesitzer: %s\nBenutze '/enter' oder drücke 'F' zum das Gebäude zu betreten!", LSbizSkinShopInfo[i][bLSbizSkinShop_Name], LSbizSkinShopInfo[i][bLSbizSkinShop_Besitzer]);
    LSbizSkinShopInfo[i][bLSbizSkinShop_Label] = CreateDynamic3DTextLabel(string, COLOR_YELLOW, LSbizSkinShopInfo[i][bLSbizSkinShop_EnterX], LSbizSkinShopInfo[i][bLSbizSkinShop_EnterY], LSbizSkinShopInfo[i][bLSbizSkinShop_EnterZ], 12, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 1, -1, -1, -1);
    LSbizSkinShopInfo[i][bLSbizSkinShop_Pickup] = CreateDynamicPickup(1272, 1, LSbizSkinShopInfo[i][bLSbizSkinShop_EnterX], LSbizSkinShopInfo[i][bLSbizSkinShop_EnterY], LSbizSkinShopInfo[i][bLSbizSkinShop_EnterZ], 0);
    if(IsBusinessOwned(i)) printf("LSbizSkinShop %i wurde geladen; Name: %s", i, LSbizSkinShopInfo[i][bLSbizSkinShop_Name]);
    }
    return 1;
    }

    Spoiler anzeigen
    stock Float:mysql_GetFloat(Table[], Field[], Where[], Is[])
    {
    new query[128], Float:sqlfloat;
    mysql_real_escape_string(Table, Table);
    mysql_real_escape_string(Field, Field);
    mysql_real_escape_string(Where, Where);
    mysql_real_escape_string(Is, Is);
    format(query, 128, "SELECT `%s` FROM `%s` WHERE `%s` = '%s'", Field, Table, Where, Is);
    mysql_query(query);
    mysql_store_result();
    mysql_fetch_float(sqlfloat);
    mysql_free_result();
    return sqlfloat;
    }

    Spoiler anzeigen
    stock mysql_GetInt(Table[], Field[], Where[], Is[])
    {
    new query[128];
    mysql_real_escape_string(Table, Table);
    mysql_real_escape_string(Field, Field);
    mysql_real_escape_string(Where, Where);
    mysql_real_escape_string(Is, Is);
    format(query, 128, "SELECT `%s` FROM `%s` WHERE `%s` = '%s'", Field, Table, Where, Is);
    mysql_query(query);
    mysql_store_result();
    new sqlint = mysql_fetch_int();
    mysql_free_result();
    return sqlint;
    }

    Spoiler anzeigen
    stock mysql_ReturnPasswort(Name[])
    {
    new query[130], Get[130];
    mysql_real_escape_string(Name, Name);
    format(query, 128, "SELECT `passwort` FROM `accounts` WHERE `Name` = '%s'", Name);
    mysql_query(query);
    mysql_store_result();
    mysql_fetch_row(Get);
    mysql_free_result();
    return Get;
    }

    Spoiler anzeigen
    stock mysql_ReturnSecAntwort(Name[])
    {
    new query[130], Get[130];
    mysql_real_escape_string(Name, Name);
    format(query, 128, "SELECT `SecAntwort` FROM `accounts` WHERE `Name` = '%s'", Name);
    mysql_query(query);
    mysql_store_result();
    mysql_fetch_row(Get);
    mysql_free_result();
    return Get;
    }

    Spoiler anzeigen
    stock mysql_SetInt(Table[], Field[], To, Where[], Where2[])
    {
    new query[128];
    mysql_real_escape_string(Table, Table);
    mysql_real_escape_string(Field, Field);
    mysql_real_escape_string(Where, Where);
    mysql_real_escape_string(Where2, Where2);
    format(query, 128, "UPDATE `%s` SET `%s` = '%d' WHERE `%s` = '%s'", Table, Field, To, Where, Where2);
    mysql_query(query);
    return true;
    }
    stock mysql_SetString(Table[], Field[], To[], Where[], Where2[])
    {
    new query[128];
    mysql_real_escape_string(Table, Table);
    mysql_real_escape_string(Field, Field);
    mysql_real_escape_string(To, To);
    mysql_real_escape_string(Where, Where);
    mysql_real_escape_string(Where2, Where2);
    format(query, 128, "UPDATE `%s` SET `%s` = '%s' WHERE `%s` = '%s'", Table, Field, To, Where, Where2);
    mysql_query(query);
    return true;
    }
    stock mysql_SetFloat(Table[], Field[], Float:To, Where[], Where2[])
    {
    new query[128];
    mysql_real_escape_string(Table, Table);
    mysql_real_escape_string(Field, Field);
    mysql_real_escape_string(Where, Where);
    mysql_real_escape_string(Where2, Where2);
    format(query, 128, "UPDATE `%s` SET `%s` = '%f' WHERE `%s` = '%s'", Table, Field, To, Where, Where2);
    mysql_query(query);
    return true;
    }

    Spoiler anzeigen
    stock IsBusinessOwned(businessid)
    {
    new query[200];
    format(query, sizeof(query), "SELECT Owner FROM 'LSbizSkinShop' WHERE LSbizSkinShop_ID = %i", businessid);
    mysql_query(query);
    mysql_store_result();
    new rows = mysql_num_rows();
    mysql_free_result();
    if(!rows) return false;
    else return true;
    }

    Spoiler anzeigen
    stock strreplace(string[], oldchar, newchar)
    {
    for(new i = 0; i < strlen(string); i++)
    {
    if(string[i] == oldchar)
    {
    string[i] = newchar;
    }
    }
    }

    Spoiler anzeigen
    stock Connect_To_Database()
    {
    mysql_connect(SQL_HOST, SQL_USER, SQL_DATA, SQL_PASS); //Wir versuchen mit den Angaben die wir oben im Script gemacht haben uns mit dem MySQL Server zu verbinden.
    if(mysql_ping() == 1) //Es wird überprüft ob die Verbindung steht.
    {
    //Falls ja wird das in die Console geschrieben und die Funktion wird beendet.
    print("<-| [MYSQL] Verbindung zur Datenbank wurde erfolgreich hergestellt!");
    return true;
    }
    else
    {
    //Falls nicht wird erneut versucht eine Verbindung aufzubauen.
    print("<-| [MYSQL] Es konnte keine Verbindung zur Datenbank hergestellt werden!");
    print("<-| [MYSQL] Es wird erneut versucht eine Verbindung zur Datenbank herzustellen!");
    mysql_connect(SQL_HOST, SQL_USER, SQL_DATA, SQL_PASS);
    if(mysql_ping() == 1)
    {
    print("<-| [MYSQL] Es konnte im 2 Versuch eine Verbindung hergestellt werden!");
    return true;
    }
    else
    {
    //Falls das auch nicht Funktioniert wird der Server zur Sicherheit wieder heruntergefahren.
    print("<-| [MYSQL] Es konnte keine Verbindung zur Datenbank hergestellt werden!");
    print("<-| [MYSQL] Der Server wird nun beendet!");
    SendRconCommand("exit");
    return true;
    }
    }
    }

    Ist ja alles nur eckig und in zwei Farben aufgeteilt. Ich meint halt etwas mehr Pepp. Vllt Bilder mit einfügen etc?


    Runde TextDrawBoxen dürften wohl etwas schwierig sein, ich wüsste jedenfalls nicht wie das hinhauen sollte.
    Eigene Bilder einzufügen wäre wohl nicht wirklich gut, zum einen müssten Spieler diese dann auch auf den Rechner haben,
    damit diese angezeigt werden und wenn ich es über ein Include mache, werden für ein Bild pro Pixel ein TextDraw erstellt,
    das wären dann für ein BIld in der größe von 100x100 Pixeln ganze 10000 TextDraws.


    Ich weiß nicht ob das jetzt wirklich so stimmt, da ich mich damit einfach noch nicht wirklich beschäftigt habe.


    In Rot und Blau gefällt mir das ganze schon viel besser! Mich würde mal interessieren, wie es selbst findest, wenn du es bewerten müsstest!?
    Im Vergleich Grün zu Rot und Blau.


    Es mag vielleicht daran liegen, dass ich mit diesen grün schon die ganze Zeit gearbeitet habe und mich einfach dran gewöhnt habe,
    aber das Rot scheint zu dunkel, das Blau passt da aber schon mehr. - Das kann aber auch am Notebook liegen,
    da auf meinem Handy die Farben nämlich viel satter dargestellt werden, was natürlich wieder einen ganz anderen Eindruck macht.

    Farbenvorschlag: Diese = #3169C4 oder evtl. sogar diese = #990000


    Hier mal mit den von dir vorgeschlagenen Farben:



    Ist es mühselig damit zu arbeiten oder wieso sind da keine Muster etc drin?
    Sry kenne mich damit nicht aus und hab 0 Plan was da in Arbeit drin steckt aber sieht sehr einfach gehalten aus (nur von der Optik her).


    "Ist es mühselig damit zu arbeiten oder wieso sind da keine Muster etc drin?"
    Tut mir leid, aber ich verstehe das nicht, kannst Du mir bitte genauer erklären was Du damit meinst? :)

    Hallo,


    ich möchte euch mein Login- & Register-Filterscript vorstellen und nebenbei auch Verbesserungsvorschläge einholen.


    So gesehen ist es kein reines Login- & Register-System, da es mehrere Funktionen als nur "Login" und "Register" gibt.


    Insgesamt sind es 82 TextDraws, davon 64 "TextDrawCreate" und 18 "CreatePlayerTextDraw".



    Vor den registrieren oder einloggen sieht das ganze folgendermaßen aus:

    Spoiler anzeigen

    Wenn kein Account mit den Spielernamen existiert, muss man sich registrieren, das sieht dann so aus:

    Spoiler anzeigen
    Wenn ein Account mit den Spielernamen existiert, muss man sich einloggen, das sieht dann so aus:


    Man kann sich natürlich vor den registrieren oder einloggen über "News" die Servernews ansehen, oder über "Verlassen" den Server verlassen.


    Wenn man "News" anklickt, sieht das ganze folgendermaßen aus:


    Immer wenn man "Verlassen" anklickt wird man vom Server gekickt.



    Wenn man sich einloggen oder registrieren möchte, erscheint ein "DIALOG_STYLE_INPUT".
    Um sich zu registrieren muss man ein Passwort festlegen, beim einloggen muss man halt sein Passwort eingeben!


    Nach dem registrieren oder einloggen sieht das ganze so aus:


    Nun kann man natürlich auch noch immer auf "News" klicken, dies sieht dann geöffnet so aus:


    Nun kann man "Spawnen" anklicken, dann erscheint allerdings wieder ein TextDraw, da die Angaben zum Account noch nicht vollständig sind.


    Da man noch keine Angaben zu "Security gemacht hat, sieht dies folgendermaßen aus:

    Spoiler anzeigen
    Daraufhin sollte man auf "Security" klicken und dort die benötigten Angaben machen,
    zuerst muss eine Sicherheitsfrage ausgewählt werden, dann erscheint ein "DIALOG_STYLE_INPUT"
    in welchen ausgewählte Sicherheitsfrage beantwortet werden muss.


    Nachdem die Frage beantwortet wurde, sieht das ganze folgendermaßen aus:

    Spoiler anzeigen

    "Security" ist nun grau hinterlegt und nicht mehr anklickbar, dafür ist "Passwort" nun anklickbar.
    Mit "Passwort" kann man sein Passwort ändern, dazu öffnet sich dann ein "DIALOG_STYLE_INPUT", in den man sein
    derzeitiges Passwort eingeben muss, danach öffnet sich wieder ein "DIALOG_STYLE_INPUT", in den man die Sicherheitsfrage
    beantworten muss, woraufhin man wieder in einen "DIALOG_STYLE_INPUT" sein neues Passwort eingeben muss.


    Wenn man danach wieder "Spawnen" anklickt, erscheint wieder ein Textdraw, da die Angaben zum Account noch immer nicht vollständig sind.


    Da man noch keine Angaben zu "Gender" gemacht hat, sieht dies dann folgendermaßen aus:

    Spoiler anzeigen
    Daraufhin sollte man auf "Gender" klicken und dort sein Geschlecht auswählen, das sieht dann so aus:


    Nachdem das Geschlecht ausgewählt wurde, sieht das ganze folgendermaßen aus:

    Spoiler anzeigen

    "Gender" ist nun auch grau hinterlegt und nicht mehr anklickbar.


    Daraufhin sollte man auf "Age" klicken, woraufhin sich ein "DIALOG_STYLE_INPUT" öffnet, wo man sein Geburtsdatum angeben muss.
    Nachdem das Geburtsdatum angegeben wurde, sieht das ganze folgendermaßen aus:

    Spoiler anzeigen

    "Gender" ist nun auch grau hinterlegt und nicht mehr anklickbar.


    Nun könnte man wieder auf "Spawnen" klicken, womit man dann auch gespawnt wird, allerdings gibt es da ja noch "Skins".


    Wenn man "Skins" anklickt, sieht dies folgendermaßen aus:


    "Skins" ist quasi ein Kleiderschrank, man muss sich im Skinshop Skins kaufen, welche dann in die Datenbank als "Im Besitz" eingetragen werden.
    Man kann sich dann vor den spawnen einen anderen Skin auswählen, mit den man dann halt gespawnt wird. Es werden hierbei auch nur Skins
    "Im Besitz" angezeigt, alle anderen werden übersprungen. Wenn anhand der Skin-ID der kleinste oder größte Skin erreicht ist, wird "Back" oder "Next" unanklickbar.
    Wenn man "Benutzten" anklickt, wird der Skin als "Getragener Skin" gepeichert und man wird dann auch immer bis zum wechseln des Skins mit diesen Skin gespawnt.


    Spoiler anzeigen

    Wenn anhand der Skin-ID der kleinste Skin im Besitz erreicht wurde:

    Spoiler anzeigen
    Wenn anhand der Skin-ID der größte Skin im Besitz erreicht wurde:



    Wenn man nun auf Spawn klickt, werden alle TexDraws versteckt und man wird gespawnt.


    Wenn man jetzt das Spiel beendet und wieder den Server betritt, sieht das nun nach dem einloggen immer folgendermaßen aus:



    In verschiedenen Farben:



    Ich möchte mich auf diesen Weg noch einmal bei Jeffry bedanken, der mir bei Problemen und Fragen sehr geholfen hat!




    Gruß

    Okay, wenn ich das richtig verstanden habe, muss ich ein existierendes Objekt austauschen, oder irre ich mich da?
    Und wie mappt man die Objekte dann? - Bzw. werden diese im Map-Editor angezeigt?

    Wo ich das gerade lese, sehe ich da noch ein weiteres Problem.


    Wenn ich das ganze richtig verstanden habe, wäre die Datei für jeden Spieler zugänglich.
    Das würde bedeuten, dass quasi jeder der einen Server hat, die Datei dazu
    verwenden kann um auf seinen eigenen Server das Gelände von GTA 3 zu erstellen.


    Das wäre schon einmal der Hauptgrund, weshalb ich das dann lieber nicht verwenden
    würde, da es einfach etwas individuelles sein soll was kein anderer Server hat. :S

    Mit den Flughafen meinte ich das Gelände und nicht das Interior.. :P


    Das mit den eigenen Objekten basteln weckt gerade meine Interesse.


    Kann man Objekte aus GTA 3 importieren und diese bearbeiten?
    Was dann noch wichtig wäre, kann man dabei auch mehreren
    Objekte importieren und daraus ein großes Objekt machen?


    Wenn das nämlich möglich wäre, könnte man ja theoretisch alle GTA 3 Objekte zusammenfügen,
    sodass man hinterher auf den Server das komplette begehbare GTA 3 Gelände hat,
    was aber nur ein Objekt darstellt.


    Wenn das möglich ist, wäre das Problem mit den Streamen usw. ja eigentlich gelöst, oder?



    Gruß

    Hallo,


    der Anfang auf meinen Servers soll folgendermaßen aussehen:


    Ein neuer Spieler wird mit den Claude Skin auf den Flughafen von Liberty City aus
    GTA 3 gespawnt und soll in ein Flugzeug steigen und wird dann nach San Andreas geflogen.


    Soweit so gut, nun könnte ich einfach irgendwo im Meer den Flughafen mappen,
    allerdings wäre es auch interessant, ob ich nicht einfach die komplette Welt von
    GTA 3 mappen könnte.


    Ich weiß natürlich, dass ich einfach die Welt von GTA 3 mappen könnte,
    aber wie sieht das hinterher auf den Server aus? - Laggs, Chrashs etc. ?



    Ich wäre für jeden Vorschlag dankbar!


    Ich will jetzt auch nicht nur deswegen nach GTA United wechseln (falls das ein
    Lösungsvorschlag von euch wäre), sondern wenn möglich eine Lösung für SAMP finden.




    Gruß

    Vielen Dank!


    Jeffry:


    Kannst Du mir die Box für unten auch geben?

    Okay, jetzt funktioniert es aber es gibt nun ein neues Problem.


    Nachdem ich mich einlogge werde ich nun in LV oben auf der Rolltreppe gespawnt, kann zwar den
    Spieler bewegen, aber die Camera ist nicht hinter den Spieler sondern auf die Rolltreppe gerichtet.
    Ich habe schon etwas selbst rumversucht, als das allerdings nicht geklappt hat, habe ich das ganze wieder auf Anfang versetzt.


    Das Gamemode ist komplett Blank und läuft mit Filterscripts, das LoginRegisterSystem habe ich als Filterscript abgeändert.



    public OnFilterScriptInit()
    {
    Connect_To_Database();
    LoginBoxOben = TextDrawCreate( 0.0000, -118.0, "~n~");
    TextDrawLetterSize(LoginBoxOben, 1.0000, 26.0000);
    TextDrawUseBox(LoginBoxOben, 1);
    TextDrawBoxColor(LoginBoxOben, 0x000000FF);
    TextDrawFont(LoginBoxOben, 0);
    TextDrawSetShadow(LoginBoxOben, 0);
    TextDrawSetProportional(LoginBoxOben, 0);
    AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
    return 1;
    }


    public OnPlayerRequestClass(playerid, classid)
    {
    SetSpawnInfo(playerid,0,SpielerInfo[playerid][pSkin],2006.3914,-2545.1011,13.5469,307.4820,29,999,0,0,0,0);
    SpawnPlayer(playerid);
    return 1;
    }


    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    switch(dialogid)
    {
    case DIALOG_REGISTER:
    {
    if(response)
    {
    if(strlen(inputtext) == 0) // Wenn kein Passwort angegebene wurde
    {
    ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Registrierung","Du hat kein Passwort angegeben, oder das angegebene Passwort war zu Kurz!","Registrieren","Abbrechen");
    return 1;
    }
    else
    {
    CreateAccount(playerid, inputtext); //Account wird erstellt
    LoadPlayer(playerid); //Account wird geladen
    ShowPlayerDialog(playerid,DIALOG_SEX,DIALOG_STYLE_LIST,"Geschlecht:","Männlich\nWeiblich","Wählen","Abbrechen!");
    return 1;
    }
    }
    else
    {
    Kick(playerid); //Wenn auf Abbrechen geklickt wurde, wird der Spieler gekickt damit man ohne Account nicht Spielen kann.
    }
    }
    case DIALOG_LOGIN:
    {
    if(response)
    {
    if(strlen(inputtext) == 0) // Wenn kein Passwort angegebene wurde
    {
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Anmeldung","Das Angegebene Passwort war Falsch!","Anmelden","Abbrechen");
    return 1;
    }
    else
    {
    new SpielerName[MAX_PLAYER_NAME];
    GetPlayerName(playerid, SpielerName, MAX_PLAYER_NAME);
    if(!strcmp(inputtext, mysql_ReturnPasswort(SpielerName), true)) // Wir holen uns das Passwort aus der MySQL Datenbank und überprüfen es mit dem angegebenen passwort.
    {
    SetPVarInt(playerid,"Eingeloggt",1); //Falls beide passwörter übereinstimmen wird die Variable auf 1 gesetzt damit wir die Skin auswahl benutzen können.
    LoadPlayer(playerid); //Der Spieler wird "geladen", speich es werden seine Daten aus der Datenbank geholt und in variablen gespeichert um diese im Skript zu verwenden.
    SpawnPlayer(playerid); //Wir lassen den Spieler Spawnen
    TogglePlayerControllable(playerid,1);
    return 1;
    }
    else
    {
    //Wenn das Passwort falsch war, lassen wir erneut das Login fenster erscheinen damit der Spieler das Richtige Passwort eingibt.
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Anmeldung","Das war das Falsche Passwort.\nBitte log dich jetzt mit dem richtigen Passwort ein:","Login","Abbrechen");
    return 1;
    }
    }
    }
    else
    {
    Kick(playerid); //Wenn auf Abbrechen geklickt wurde, wird der Spieler gekickt damit man ohne Account nicht Spielen kann.
    }
    }
    case DIALOG_SEX:
    {
    if(!response)
    {
    DeleteAccount(playerid);
    Kick(playerid); //Wenn auf Abbrechen geklickt wurde, wird der Spieler gekickt damit man ohne Account nicht Spielen kann.
    }
    else
    {
    switch(listitem)
    {
    case 0:
    {
    new string[256]; format(string, sizeof(string),"UPDATE `accounts` SET `Sex` = 'Männlich' WHERE `id` = '%i'", SpielerInfo[playerid][pdb_id]); mysql_query(string);
    ShowPlayerDialog(playerid,DIALOG_BDAY,DIALOG_STYLE_INPUT,"Alter:","Gebe dein Geburtsdatum ein!","Okay!","Abbrechen");
    return 1;
    }
    case 1:
    {
    new string[256]; format(string, sizeof(string),"UPDATE `accounts` SET `Sex` = 'Weiblich' WHERE `id` = '%i'", SpielerInfo[playerid][pdb_id]); mysql_query(string);
    ShowPlayerDialog(playerid,DIALOG_BDAY,DIALOG_STYLE_INPUT,"Alter:","Gebe dein Geburtsdatum ein!","Okay!","Abbrechen");
    return 1;
    }
    }
    }
    }
    case DIALOG_BDAY:
    {
    if(!response)
    {
    DeleteAccount(playerid);
    Kick(playerid); //Wenn auf Abbrechen geklickt wurde, wird der Spieler gekickt damit man ohne Account nicht Spielen kann.
    }
    else
    {
    new d, m, y;
    if(!IsValidDate(inputtext, d, m, y))
    {
    ShowPlayerDialog(playerid,DIALOG_BDAY,DIALOG_STYLE_INPUT,"Alter:","Gebe dein Geburtsdatum ein!","Okay!","Abbrechen");
    return 1;
    }
    else
    {
    new query[256];
    format(query, sizeof(query),"UPDATE `accounts` SET `bdaytag` = '%i', `bdaymonat` = '%i', `bdayjahr` = '%i' WHERE `id` = '%i'", d, m, y, SpielerInfo[playerid][pdb_id]);
    mysql_query(query);
    SetPVarInt(playerid,"Eingeloggt",1);
    SpawnPlayer(playerid);
    TogglePlayerControllable(playerid,1);
    return 1;
    }
    }
    }
    }
    return 1;
    }

    @ Jeffry:


    Bezüglich des Textdraws, welches im Gamemode steht, habe ich nun alle FS rausgepackt, daraufhin wurde es angezeigt.
    Ich weiß auch, dass es am Tacho Filterscript liegt.


    new Text:LoginBoxOben;


    Wird im Tacho Filterscript nicht benutzt, daran kann es also nicht liegen.

    Jap, das Problem ist nun behoben.


    Ich hab mir das Script halt noch einmal durchgesehen und gesehen dass "LoadPlayer"
    fehlte und wollte schnell schreiben wie das ganze nun aufgebaut ist.


    Vielen Dank für die Hilfe!



    Gruß