Filterscript wird nicht geladen.

In 10 Minuten startet der nächtliche Backupvorgang! Es kann währenddessen (ca. 10 Minuten) zu Einschränkungen bei der Nutzung des Forums kommen
Weitere Infos findet ihr im Thema Backup des Forums
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
  • 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;
    }
    }
    }

  • Versuche es mal so rum:
    public OnFilterScriptInit()
    {
    print("<-| [Es wird geladen!!");
    Connect_To_Database();
    LoadLSbizSkinShop();
    return 1;
    }


    Du fragst sonst erst MySQL Daten ab, bevor du die Verbindung herstellst, das geht nicht.


    Außerdem solltest du auf die neuste MySQL Plugin Version umsteigen.


    PS: Du hast es in der MTA Scripting Base gepostet. Das ist falsch.

  • 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);

  • 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;
    }

    2 Mal editiert, zuletzt von Syneroz ()

  • Ich hab jetzt erst einmal alles auf die neuste MYSQL-Version umgeändert:



    public OnFilterScriptInit()
    {
    MySQL_SetupConnection();
    LoadLSbizSkinShop();
    return 1;
    }



    forward LoadLSbizSkinShop();
    public LoadLSbizSkinShop()
    {
    for(new i = 0; i < MAX_LSbizSkinShop; i++)
    {
    new string[186];
    LSbizSkinShopInfo[i][bLSbizSkinShop_ID] = cache_get_field_content_int(0, "LSbizSkinShop_ID", handle);
    LSbizSkinShopInfo[i][bLSbizSkinShop_Name] = cache_get_query_string("LSbizSkinShop_Name", handle);
    LSbizSkinShopInfo[i][bLSbizSkinShop_Preis] = cache_get_field_content_int(0, "LSbizSkinShop_Preis", handle);
    LSbizSkinShopInfo[i][bLSbizSkinShop_Besitzer] = cache_get_query_string("LSbizSkinShop_Besitzer", handle);
    LSbizSkinShopInfo[i][bLSbizSkinShop_Interior] = cache_get_field_content_int(0, "LSbizSkinShop_Interior", handle);
    LSbizSkinShopInfo[i][bLSbizSkinShop_World] = cache_get_field_content_int(0, "LSbizSkinShop_World", handle);
    LSbizSkinShopInfo[i][bLSbizSkinShop_EnterX] = cache_get_field_content_float(0, "LSbizSkinShop_EnterX", handle);
    LSbizSkinShopInfo[i][bLSbizSkinShop_EnterY] = cache_get_field_content_float(0, "LSbizSkinShop_EnterY", handle);
    LSbizSkinShopInfo[i][bLSbizSkinShop_EnterZ] = cache_get_field_content_float(0, "LSbizSkinShop_EnterZ", handle);
    LSbizSkinShopInfo[i][bLSbizSkinShop_ExitX] = cache_get_field_content_float(0, "LSbizSkinShop_ExitX", handle);
    LSbizSkinShopInfo[i][bLSbizSkinShop_ExitY] = cache_get_field_content_float(0, "LSbizSkinShop_ExitY", handle);
    LSbizSkinShopInfo[i][bLSbizSkinShop_ExitZ] = cache_get_field_content_float(0, "LSbizSkinShop_ExitZ", handle);
    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!", LSbizSkinShopInfo[i][bLSbizSkinShop_Name], 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;
    }



    Warum Screenshot, ist der Text aus der SQL-File nicht besser?


    Code
    /*Navicat MySQL Data TransferSource Server         : SynerozSource Server Version : 50625Source Host           : localhost:3306Source Database       : gta_dbTarget Server Type    : MYSQLTarget Server Version : 50625File Encoding         : 65001Date: 2015-08-16 19:28:54*/SET FOREIGN_KEY_CHECKS=0;-- ------------------------------ Table structure for `lsbizskinshop`-- ----------------------------DROP TABLE IF EXISTS `lsbizskinshop`;CREATE TABLE `lsbizskinshop` (  `LSbizSkinShop_ID` int(11) NOT NULL AUTO_INCREMENT,  `LSbizSkinShop_Name` varchar(24) NOT NULL,  `LSbizSkinShop_Preis` int(11) NOT NULL,  `LSbizSkinShop_Besitzer` varchar(24) NOT NULL,  `LSbizSkinShop_Interior` int(11) NOT NULL,  `LSbizSkinShop_World` int(11) NOT NULL,  `LSbizSkinShop_EnterX` float NOT NULL,  `LSbizSkinShop_EnterY` float NOT NULL,  `LSbizSkinShop_EnterZ` float NOT NULL,  `LSbizSkinShop_ExitX` float NOT NULL,  `LSbizSkinShop_ExitY` float NOT NULL,  `LSbizSkinShop_ExitZ` float NOT NULL,  PRIMARY KEY (`LSbizSkinShop_ID`)) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;-- ------------------------------ Records of lsbizskinshop-- ----------------------------INSERT INTO `lsbizskinshop` VALUES ('1', 'Los Santos Skins', '100000', 'Syneroz', '2', '1', '1959', '-2510', '14', '0', '0', '0');


    Es wird anscheinend nichts aus der Datenbank geholt und in
    LSbizSkinShopInfo[i][bLSbizSkinShop_ID]
    usw.
    überschrieben.

  • LoadLSbizSkinShop();
    zu:
    mysql_pquery(handle, "SELECT * FROM lsbizskinshop;", "LoadLSbizSkinShop");


    Und:
    forward LoadLSbizSkinShop();
    public LoadLSbizSkinShop()
    {
    new rows = cache_get_row_count();
    for(new i = 0; i < rows; i++)
    {
    new string[186];
    LSbizSkinShopInfo[i][bLSbizSkinShop_ID] = cache_get_field_content_int(i, "LSbizSkinShop_ID", handle);
    cache_get_field_content(i,"LSbizSkinShop_Name", string, handle);
    format(LSbizSkinShopInfo[i][bLSbizSkinShop_Name], 64, string);
    LSbizSkinShopInfo[i][bLSbizSkinShop_Preis] = cache_get_field_content_int(i, "LSbizSkinShop_Preis", handle);
    cache_get_field_content(i,"LSbizSkinShop_Besitzer", string, handle);
    format(LSbizSkinShopInfo[i][bLSbizSkinShop_Besitzer], 64, string);
    LSbizSkinShopInfo[i][bLSbizSkinShop_Interior] = cache_get_field_content_int(i, "LSbizSkinShop_Interior", handle);
    LSbizSkinShopInfo[i][bLSbizSkinShop_World] = cache_get_field_content_int(i, "LSbizSkinShop_World", handle);
    LSbizSkinShopInfo[i][bLSbizSkinShop_EnterX] = cache_get_field_content_float(i, "LSbizSkinShop_EnterX", handle);
    LSbizSkinShopInfo[i][bLSbizSkinShop_EnterY] = cache_get_field_content_float(i, "LSbizSkinShop_EnterY", handle);
    LSbizSkinShopInfo[i][bLSbizSkinShop_EnterZ] = cache_get_field_content_float(i, "LSbizSkinShop_EnterZ", handle);
    LSbizSkinShopInfo[i][bLSbizSkinShop_ExitX] = cache_get_field_content_float(i, "LSbizSkinShop_ExitX", handle);
    LSbizSkinShopInfo[i][bLSbizSkinShop_ExitY] = cache_get_field_content_float(i, "LSbizSkinShop_ExitY", handle);
    LSbizSkinShopInfo[i][bLSbizSkinShop_ExitZ] = cache_get_field_content_float(i, "LSbizSkinShop_ExitZ", handle);
    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!", LSbizSkinShopInfo[i][bLSbizSkinShop_Name], 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;
    }

    3HZXdYd.png

    Einmal editiert, zuletzt von Jeffry ()

  • Es funktioniert, vielen Dank!


    Nun habe ich da aber mal eine andere Frage.


    Ich habe bisher 2 Filterscripts geschrieben.


    1. Login/Register Filterscript
    2. LSSkinshop Filterscript


    Im 1. Filterscript wird der Account des Spielers geladen, im 2. Filterscript will ich nun für den kauf eines Skinshops eine Abfrage machen, ob und wie viel Geld der Spieler hat.
    Genauer: Das ob und wie viel Geld der Spieler hat wird im 1. Filterscript geladen, der ob der Skinshop zu verkaufen ist und der Kaufpreis des Skinsshops wird im 2. Filterscript geladen.



    Wie mache regel ich das nun am besten?



    Gruß

  • Das ist nicht ganz richtig. War mein Fehler, habe es verbessert.
    So muss es sein:
    cache_get_field_content(i,"LSbizSkinShop_Name", string, handle);
    cache_get_field_content(i,"LSbizSkinShop_Besitzer", string, handle);


    Zur anderen Frage:
    Im 1. Filterscript:
    forward FS1_GetPlayerMoney(playerid);
    public FS1_GetPlayerMoney(playerid)
    {
    return SpielerInfo[playerid][pGeld];
    } Eben die Variable anpassen.


    Im 2. Filterscript:
    new money = CallRemoteFunction("FS1_GetPlayerMoney", "d", playerid);
    if(money < 1000) //Weniger als 1000 Geld

  • Es funktioniert, danke!


    Jetzt habe ich gerade einfach mal einen zweiten Skin-Shop erstellt um was zu testen,
    dazu habe ich einfach die EnterX womit auch das Label und Pickup erstellt wird um 10 verschoben.


    Code
    DROP TABLE IF EXISTS `lsbizskinshop`;CREATE TABLE `lsbizskinshop` (  `LSbizSkinShop_ID` int(11) NOT NULL,  `LSbizSkinShop_Name` varchar(24) NOT NULL,  `LSbizSkinShop_Preis` int(11) NOT NULL,  `LSbizSkinShop_Besitzer` varchar(24) NOT NULL,  `LSbizSkinShop_Interior` int(11) NOT NULL,  `LSbizSkinShop_World` int(11) NOT NULL,  `LSbizSkinShop_EnterX` float(10,5) NOT NULL,  `LSbizSkinShop_EnterY` float(10,5) NOT NULL,  `LSbizSkinShop_EnterZ` float(10,5) NOT NULL,  `LSbizSkinShop_EnterA` float(10,5) NOT NULL,  `LSbizSkinShop_ExitX` float(10,5) NOT NULL,  `LSbizSkinShop_ExitY` float(10,5) NOT NULL,  `LSbizSkinShop_ExitZ` float(10,5) NOT NULL,  `LSbizSkinShop_ExitA` float(10,5) NOT NULL,  `LSbitSkinShop_Kasse` int(11) NOT NULL,  `LSbizSkinShop_Kaufbar` int(11) NOT NULL,  PRIMARY KEY (`LSbizSkinShop_ID`)) ENGINE=InnoDB DEFAULT CHARSET=latin1;-- ------------------------------ Records of lsbizskinshop-- ----------------------------INSERT INTO `lsbizskinshop` VALUES ('0', 'Los Santos Binco', '1300', 'Syneroz', '15', '1', '1959.68286', '-2510.81152', '13.53910', '0.00000', '207.57610', '-107.91510', '1005.13281', '0.00000', '0', '0');INSERT INTO `lsbizskinshop` VALUES ('1', 'Los Santos Binco', '13000', 'Syneroz', '15', '2', '1949.68286', '-2510.81152', '13.53910', '0.00000', '207.57610', '-107.91510', '1005.13281', '0.00000', '0', '1');


    Nun gehe ich zum Eingang des Skin-Shops mit der ID 0, betrete den Skinshop mit '/enter', verlasse ihn mit '/exit' und werde am Eingang des Skin-Shops mit der ID 1 gespawnt.
    Genauer gesagt betrete ich diesen Skin-Shop:

    SQL
    INSERT INTO `lsbizskinshop` VALUES ('0', 'Los Santos Binco', '1300', 'Syneroz', '15', '1', '1959.68286', '-2510.81152', '13.53910', '0.00000', '207.57610', '-107.91510', '1005.13281', '0.00000', '0', '0');


    Und komme beim verlassen an diesen Skin-Shop raus:

    SQL
    INSERT INTO `lsbizskinshop` VALUES ('1', 'Los Santos Binco', '13000', 'Syneroz', '15', '2', '1949.68286', '-2510.81152', '13.53910', '0.00000', '207.57610', '-107.91510', '1005.13281', '0.00000', '0', '1');


    Die beiden Skin-Shops teilen sich das gleiche Interior, es werden auch noch weitere Skin-Shops mit diesen Interior dazukommen.



    Jetzt habe ich das folgendermaßen gelöst und es funktioniert, allerdings frage ich mich ob es da nicht eine bessere Lösung gibt.


    ocmd:enter(playerid, params[])
    {
    for(new i = 0; i < MAX_LSbizSkinShop; i++)
    {
    if(IsPlayerInRangeOfPoint(playerid, 3.0, LSbizSkinShopInfo[i][bLSbizSkinShop_EnterX], LSbizSkinShopInfo[i][bLSbizSkinShop_EnterY], LSbizSkinShopInfo[i][bLSbizSkinShop_EnterZ]))
    {
    SetPVarInt(playerid,"SpielerIstInSkinShopIDPVar",i);
    SetPlayerVirtualWorld(playerid, LSbizSkinShopInfo[i][bLSbizSkinShop_World]);
    SetPlayerInterior(playerid, LSbizSkinShopInfo[i][bLSbizSkinShop_Interior]);
    SetPlayerPos(playerid, LSbizSkinShopInfo[i][bLSbizSkinShop_ExitX], LSbizSkinShopInfo[i][bLSbizSkinShop_ExitY], LSbizSkinShopInfo[i][bLSbizSkinShop_ExitZ]);
    SetPlayerFacingAngle(playerid, LSbizSkinShopInfo[i][bLSbizSkinShop_ExitA]);
    SetCameraBehindPlayer(playerid);
    }
    }
    return 1;
    }
    ocmd:exit(playerid, params[])
    {
    new SpielerIstInSkinShopID = GetPVarInt(playerid,"SpielerIstInSkinShopIDPVar");
    if(IsPlayerInRangeOfPoint(playerid, 3.0, LSbizSkinShopInfo[SpielerIstInSkinShopID][bLSbizSkinShop_ExitX], LSbizSkinShopInfo[SpielerIstInSkinShopID][bLSbizSkinShop_ExitY], LSbizSkinShopInfo[SpielerIstInSkinShopID][bLSbizSkinShop_ExitZ]))
    {
    SetPlayerVirtualWorld(playerid, 0);
    SetPlayerInterior(playerid, 0);
    SetPlayerPos(playerid, LSbizSkinShopInfo[SpielerIstInSkinShopID][bLSbizSkinShop_EnterX], LSbizSkinShopInfo[SpielerIstInSkinShopID][bLSbizSkinShop_EnterY], LSbizSkinShopInfo[SpielerIstInSkinShopID][bLSbizSkinShop_EnterZ]);
    SetPlayerFacingAngle(playerid, LSbizSkinShopInfo[SpielerIstInSkinShopID][bLSbizSkinShop_EnterA]);
    SetCameraBehindPlayer(playerid);
    }
    return 1;
    }

  • Eigentlich müsste es so passen. Ich habe in der Schleife mal ein return 1 hinzugefügt, wenn die Position gesetzt wurde, probiere das mal aus.
    Wenn es nicht geht, dann poste was im Server Log steht:
    ocmd:enter(playerid, params[])
    {
    for(new i = 0; i < MAX_LSbizSkinShop; i++)
    {
    if(IsPlayerInRangeOfPoint(playerid, 3.0, LSbizSkinShopInfo[i][bLSbizSkinShop_EnterX], LSbizSkinShopInfo[i][bLSbizSkinShop_EnterY], LSbizSkinShopInfo[i][bLSbizSkinShop_EnterZ]))
    {
    SetPVarInt(playerid,"SpielerIstInSkinShopIDPVar",i);
    printf("Setze PVar auf: %d", i);
    SetPlayerVirtualWorld(playerid, LSbizSkinShopInfo[i][bLSbizSkinShop_World]);
    SetPlayerInterior(playerid, LSbizSkinShopInfo[i][bLSbizSkinShop_Interior]);
    SetPlayerPos(playerid, LSbizSkinShopInfo[i][bLSbizSkinShop_ExitX], LSbizSkinShopInfo[i][bLSbizSkinShop_ExitY], LSbizSkinShopInfo[i][bLSbizSkinShop_ExitZ]);
    SetPlayerFacingAngle(playerid, LSbizSkinShopInfo[i][bLSbizSkinShop_ExitA]);
    SetCameraBehindPlayer(playerid);
    return 1;
    }
    }
    return 1;
    }
    ocmd:exit(playerid, params[])
    {
    new SpielerIstInSkinShopID = GetPVarInt(playerid,"SpielerIstInSkinShopIDPVar");
    printf("PVar ist: %d", SpielerIstInSkinShopID);
    if(IsPlayerInRangeOfPoint(playerid, 3.0, LSbizSkinShopInfo[SpielerIstInSkinShopID][bLSbizSkinShop_ExitX], LSbizSkinShopInfo[SpielerIstInSkinShopID][bLSbizSkinShop_ExitY], LSbizSkinShopInfo[SpielerIstInSkinShopID][bLSbizSkinShop_ExitZ]))
    {
    SetPlayerVirtualWorld(playerid, 0);
    SetPlayerInterior(playerid, 0);
    SetPlayerPos(playerid, LSbizSkinShopInfo[SpielerIstInSkinShopID][bLSbizSkinShop_EnterX], LSbizSkinShopInfo[SpielerIstInSkinShopID][bLSbizSkinShop_EnterY], LSbizSkinShopInfo[SpielerIstInSkinShopID][bLSbizSkinShop_EnterZ]);
    SetPlayerFacingAngle(playerid, LSbizSkinShopInfo[SpielerIstInSkinShopID][bLSbizSkinShop_EnterA]);
    SetCameraBehindPlayer(playerid);
    }
    return 1;
    }

  • Da hast Du was falsch verstanden. Die Frage war, ob es so wie ich es gemacht habe in Ordnung ist oder ob es da eine bessere Möglichkeit gibt.



    Ich habe da mittlerweile ein weitere Problem, die Abfrage ob der Spieler in Besitz eines Skins-Shops
    ist und ob der Spieler der Besitzer eines bestimmten Skin-Shops ist funktioniert nicht.


    Hier soll abgefragt werden, ob der Spieler, der den Befehl sendet um den Skin-Shop zum verkauf anzubieten, der Besitzer vom Skin-Shop ist.
    Es funktioniert nicht und ich habe keine Ahnung wie ich das machen soll, ich habe halt experimentiert.

    ocmd:sellss(playerid, params[])
    {
    new BizPreis, Spielername[24];
    GetPlayerName(playerid, Spielername, sizeof(Spielername));
    if(sscanf(params,"i",BizPreis))return SendClientMessage(playerid,COLOR_GREY,"Benutze: '/sellss [Preis]");
    for(new i = 0; i < MAX_LSbizSkinShop; i++)
    {
    if(IsPlayerInRangeOfPoint(playerid, 3.0, LSbizSkinShopInfo[i][bLSbizSkinShop_EnterX], LSbizSkinShopInfo[i][bLSbizSkinShop_EnterY], LSbizSkinShopInfo[i][bLSbizSkinShop_EnterZ]))
    {
    new query[256]; mysql_format(handle, query, sizeof(query), "SELECT * FROM lsbizskinshop WHERE LSbizSkinShop_Besitzer = '%e'", Spielername);
    mysql_pquery(handle, query, "CheckLSbizSkinShopForSellSS", "d", "d", "d", playerid, i, BizPreis);
    }
    }
    return 1;
    }


    forward CheckLSbizSkinShopForSellSS(playerid, i, BizPreis);
    public CheckLSbizSkinShopForSellSS(playerid, i, BizPreis)
    {
    if(cache_get_row_count() != 0)
    {
    if(LSbizSkinShopInfo[i][bLSbizSkinShop_Kaufbar] != 0) return 1;
    LSbizSkinShopWirdKauflich(i, BizPreis);
    ReloadLSbizSkinShop();
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY, "Du bist nicht der Besitzer dieses Skin-Shop's!");
    }
    return 1;
    }



    Hier soll abgefragt werden, ob der Spieler, der den Befehl sendet um den Skin-Shop zum kaufen, der Besitzer vom Skin-Shop ist.
    Es funktioniert nicht und ich habe keine Ahnung wie ich das machen soll, ich habe halt experimentiert.

    ocmd:buyss(playerid, params[])
    {
    new Spielername[24];
    GetPlayerName(playerid, Spielername, sizeof(Spielername));
    for(new i = 0; i < MAX_LSbizSkinShop; i++)
    {
    if(IsPlayerInRangeOfPoint(playerid, 3.0, LSbizSkinShopInfo[i][bLSbizSkinShop_EnterX], LSbizSkinShopInfo[i][bLSbizSkinShop_EnterY], LSbizSkinShopInfo[i][bLSbizSkinShop_EnterZ]))
    {
    new query[256]; mysql_format(handle, query, sizeof(query), "SELECT * FROM lsbizskinshop WHERE LSbizSkinShop_Besitzer = '%e'", Spielername);
    mysql_pquery(handle, query, "CheckLSbizSkinShopForBuySS", "d", "i", "s", playerid, i, Spielername);
    }
    }
    return 1;
    }


    forward CheckLSbizSkinShopForBuySS(playerid, i, Spielername[]);
    public CheckLSbizSkinShopForBuySS(playerid, i, Spielername[])
    {
    if(cache_get_row_count() != 0)
    {
    if(LSbizSkinShopInfo[i][bLSbizSkinShop_Kaufbar] != 1) return 1;
    new SpielerGeld = CallRemoteFunction("FS1_GetPlayerMoney", "d", playerid);
    if(SpielerGeld < LSbizSkinShopInfo[i][bLSbizSkinShop_Preis]) return SendClientMessage(playerid, COLOR_GREY, "Du hast nicht genügend Geld um diesen Skin Shop zu kaufen!");
    LSbizSkinShopWirdUnkauflich(i);
    UpdateLSbizSkinShopBesitzer(i, Spielername);
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY, "Du bist nicht der Besitzer dieses Skin-Shop's!");
    }
    return 1;
    }



    Hier soll abgefragt werden, ob der Spieler, der den Befehl sendet um den Skin-Shop nicht mehr zum verkauf anzubieten, der Besitzer vom Skin-Shop ist.
    Es funktioniert nicht und ich habe keine Ahnung wie ich das machen soll, ich habe halt experimentiert.

    ocmd:unsellss(playerid, params[])
    {
    new Spielername[24];
    GetPlayerName(playerid, Spielername, sizeof(Spielername));
    for(new i = 0; i < MAX_LSbizSkinShop; i++)
    {
    if(IsPlayerInRangeOfPoint(playerid, 3.0, LSbizSkinShopInfo[i][bLSbizSkinShop_EnterX], LSbizSkinShopInfo[i][bLSbizSkinShop_EnterY], LSbizSkinShopInfo[i][bLSbizSkinShop_EnterZ]))
    {
    new query[256]; mysql_format(handle, query, sizeof(query), "SELECT * FROM lsbizskinshop WHERE LSbizSkinShop_Besitzer = '%e'", Spielername);
    mysql_pquery(handle, query, "CheckLSbizSkinShopForUnSellSS", "d", "d", playerid, i);
    }
    }
    return 1;
    }


    forward CheckLSbizSkinShopForUnSellSS(playerid, i);
    public CheckLSbizSkinShopForUnSellSS(playerid, i)
    {
    if(cache_get_row_count() != 0)
    {
    if(LSbizSkinShopInfo[i][bLSbizSkinShop_Kaufbar] != 0) return 1;
    LSbizSkinShopWirdUnkauflich(i);
    ReloadLSbizSkinShop();
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY, "Du bist nicht der Besitzer dieses Skin-Shop's!");
    }
    return 1;
    }

  • 1)
    Achso. Ja, wie du sieht habe ich bis auf das return nichts geändert. Wenn es geht, dann passt das so.


    2)
    mysql_pquery(handle, query, "CheckLSbizSkinShopForSellSS", "d", "d", "d", playerid, i, BizPreis);
    zu:
    mysql_pquery(handle, query, "CheckLSbizSkinShopForSellSS", "ddd", playerid, i, BizPreis);


    Gleich bei den anderen mysql_pqueries.


    Außerdem kannst du nach dem mysql_pquery ein return 1 bzw. einen break setzen, da der Spieler ja nur nahe einem Laden sein kann, daher ist es nicht notwendig die Schleife weiterlaufen zu lassen.

  • Okay, das scheint funktioniert mehr oder weniger..


    Nur wird bei /buyss nicht abgefragt ob der Spieler bereits einen Skin-Shop besitzt, also kann ein Spieler alle Skin-Shops kaufen.
    Jeder Spieler soll aber nur einen Skin-Shop besitzen können. Des weiteren muss ich '/sellss [Preis]' und '/unsellss'
    zweimal eingeben, damit dar Eintrag in der Datenbank und somit das Label geändert wird.



    So sieht das bei mir aus:

    Spoiler anzeigen
    ocmd:buyss(playerid, params[])
    {
    new Spielername[24];
    GetPlayerName(playerid, Spielername, sizeof(Spielername));
    for(new i = 0; i < MAX_LSbizSkinShop; i++)
    {
    if(IsPlayerInRangeOfPoint(playerid, 3.0, LSbizSkinShopInfo[i][bLSbizSkinShop_EnterX], LSbizSkinShopInfo[i][bLSbizSkinShop_EnterY], LSbizSkinShopInfo[i][bLSbizSkinShop_EnterZ]))
    {
    new query[256]; mysql_format(handle, query, sizeof(query), "SELECT * FROM lsbizskinshop WHERE LSbizSkinShop_Besitzer = '%e'", Spielername);
    mysql_pquery(handle, query, "CheckLSbizSkinShopForBuySS", "dds", playerid, i, Spielername);
    return 1;
    }
    }
    return 1;
    }

    Spoiler anzeigen
    ocmd:sellss(playerid, params[])
    {
    new BizPreis, Spielername[24];
    GetPlayerName(playerid, Spielername, sizeof(Spielername));
    if(sscanf(params,"i",BizPreis))return SendClientMessage(playerid,COLOR_GREY,"Benutze: '/sellss [Preis]");
    for(new i = 0; i < MAX_LSbizSkinShop; i++)
    {
    if(IsPlayerInRangeOfPoint(playerid, 3.0, LSbizSkinShopInfo[i][bLSbizSkinShop_EnterX], LSbizSkinShopInfo[i][bLSbizSkinShop_EnterY], LSbizSkinShopInfo[i][bLSbizSkinShop_EnterZ]))
    {
    new query[256]; mysql_format(handle, query, sizeof(query), "SELECT * FROM lsbizskinshop WHERE LSbizSkinShop_Besitzer = '%e'", Spielername);
    mysql_pquery(handle, query, "CheckLSbizSkinShopForSellSS", "ddd", playerid, i, BizPreis);
    return 1;
    }
    }
    return 1;
    }

    Spoiler anzeigen
    ocmd:unsellss(playerid, params[])
    {
    new Spielername[24];
    GetPlayerName(playerid, Spielername, sizeof(Spielername));
    for(new i = 0; i < MAX_LSbizSkinShop; i++)
    {
    if(IsPlayerInRangeOfPoint(playerid, 3.0, LSbizSkinShopInfo[i][bLSbizSkinShop_EnterX], LSbizSkinShopInfo[i][bLSbizSkinShop_EnterY], LSbizSkinShopInfo[i][bLSbizSkinShop_EnterZ]))
    {
    new query[256]; mysql_format(handle, query, sizeof(query), "SELECT * FROM lsbizskinshop WHERE LSbizSkinShop_Besitzer = '%e'", Spielername);
    mysql_pquery(handle, query, "CheckLSbizSkinShopForUnSellSS", "dd", playerid, i);
    return 1;
    }
    }
    return 1;
    }

    Spoiler anzeigen
    forward CheckLSbizSkinShopForSellSS(playerid, i, BizPreis);
    public CheckLSbizSkinShopForSellSS(playerid, i, BizPreis)
    {
    if(cache_get_row_count() != 0)
    {
    if(LSbizSkinShopInfo[i][bLSbizSkinShop_Kaufbar] == 0)
    {
    LSbizSkinShopWirdKauflich(i, BizPreis);
    ReloadLSbizSkinShop();
    }
    }
    else return SendClientMessage(playerid, COLOR_GREY, "Du bist nicht der Besitzer dieses Skin-Shop's!");
    return 1;
    }

    Spoiler anzeigen
    forward CheckLSbizSkinShopForBuySS(playerid, i, Spielername[]);
    public CheckLSbizSkinShopForBuySS(playerid, i, Spielername[])
    {
    if(cache_get_row_count() != 0)
    {
    if(LSbizSkinShopInfo[i][bLSbizSkinShop_Kaufbar] != 0)
    {
    new SpielerGeld = CallRemoteFunction("FS1_GetPlayerMoney", "d", playerid);
    if(SpielerGeld < LSbizSkinShopInfo[i][bLSbizSkinShop_Preis]) return SendClientMessage(playerid, COLOR_GREY, "Du hast nicht genügend Geld um diesen Skin Shop zu kaufen!");
    UpdateLSbizSkinShopBesitzer(i, Spielername);
    LSbizSkinShopWirdUnkauflich(i);
    ReloadLSbizSkinShop();
    }
    }
    else return SendClientMessage(playerid, COLOR_GREY, "Du bist bereits Besitzer eines Skin-Shop's!");
    return 1;
    }

    Spoiler anzeigen
    forward CheckLSbizSkinShopForUnSellSS(playerid, i);
    public CheckLSbizSkinShopForUnSellSS(playerid, i)
    {
    if(cache_get_row_count() != 0)
    {
    if(LSbizSkinShopInfo[i][bLSbizSkinShop_Kaufbar] != 0)
    {
    LSbizSkinShopWirdUnkauflich(i);
    ReloadLSbizSkinShop();
    }
    }
    else return SendClientMessage(playerid, COLOR_GREY, "Du bist nicht der Besitzer dieses Skin-Shop's!");
    return 1;
    }

    Spoiler anzeigen
    stock LSbizSkinShopWirdUnkauflich(LSbizSkinShopID)
    {
    new query[256];
    mysql_format(handle, query, sizeof(query), "UPDATE lsbizskinshop SET LSbizSkinShop_Kaufbar = '0' WHERE LSbizSkinShop_ID = %i ", LSbizSkinShopInfo[LSbizSkinShopID][bLSbizSkinShop_ID]);
    mysql_pquery(handle, query);
    return 1;
    }

    Spoiler anzeigen
    stock LSbizSkinShopWirdKauflich(LSbizSkinShopID, BizPreis)
    {
    new query[256];
    mysql_format(handle, query, sizeof(query), "UPDATE lsbizskinshop SET LSbizSkinShop_Kaufbar = '1', LSbizSkinShop_Preis = %i WHERE LSbizSkinShop_ID = %i", BizPreis, LSbizSkinShopInfo[LSbizSkinShopID][bLSbizSkinShop_ID]);
    mysql_pquery(handle, query);
    return 1;
    }

    Spoiler anzeigen
    stock UpdateLSbizSkinShopBesitzer(LSbizSkinShopID, Besitzer[])
    {
    new query[256];
    mysql_format(handle, query, sizeof(query), "UPDATE lsbizskinshop SET LSbizSkinShop_Besitzer = '%s' WHERE LSbizSkinShop_ID=%i", Besitzer, LSbizSkinShopInfo[LSbizSkinShopID][bLSbizSkinShop_ID]);
    mysql_pquery(handle, query);
    return 1;
    }

    Spoiler anzeigen
    stock ReloadLSbizSkinShop()
    {
    for(new i = 0; i < MAX_LSbizSkinShop; i++)
    {
    DestroyDynamic3DTextLabel(LSbizSkinShopInfo[i][bLSbizSkinShop_Label]);
    DestroyDynamicPickup(LSbizSkinShopInfo[i][bLSbizSkinShop_Pickup]);
    }
    mysql_pquery(handle, "SELECT * FROM lsbizskinshop", "LoadLSbizSkinShop");
    return 1;
    }

  • 1)
    Beim Kauf-Callback:
    if(cache_get_row_count() != 0)
    zu:
    if(cache_get_row_count() == 0)


    2)
    Ich verstehe nicht, warum zwei mal eingeben? Geht das dann überhaupt noch? Der müsste dann doch schon verkauft sein.
    Du musst zwei mal hintereinander /sellss eingeben, damit er verkauft ist?

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