Beiträge von Litpa

    Nunja, du hast nicht ganz unrecht. Das Problem ist nur, ich habe eine Datenbank, ich habe die Daten alle richtig eingetragen etc.
    Ich glaube ich muss mein MYSQL_CONNECT im Script umschreiben. Edit kommt gleich ^^


    /edit: Klappt nun, musste es über MYSQL_CONNECT machen. Der ganze Scheiß mit Debug vom RC5 hat den Server nicht zum laufen gebracht.
    Trz. danke für die Hilfe! :)

    Guten Tag,


    ich bekomme meinen Server nicht gestartet.
    Er spuckt mir folgenden Log aus:



    [15:05:50] Loaded.
    [15:05:50] Loaded 2 plugins.


    [15:05:50]
    [15:05:50] Filterscripts
    [15:05:50] ---------------
    [15:05:50] Loaded 0 filterscripts.


    [15:05:50] <-| [MYSQL] Es konnte keine Verbindung zur Datenbank hergestellt werden!
    [15:05:50] <-| [MYSQL] Es wird erneut versucht eine Verbindung zur Datenbank herzustellen!
    [15:05:50] <-| [MYSQL] Es konnte keine Verbindung zur Datenbank hergestellt werden!
    [15:05:50] <-| [MYSQL] Der Server wird nun beendet!
    [15:05:50]
    ----------------------------------
    [15:05:50] Blank Gamemode by your name here
    [15:05:50] ----------------------------------


    [15:05:50] Number of vehicle models: 0
    [15:05:50] --- Server Shutting Down.
    [15:05:50] plugin.mysql: Unloading plugin...
    [15:05:50] plugin.mysql: Plugin unloaded.
    [15:05:50]


    *** Streamer Plugin v2.6.1 by Incognito unloaded ***



    Ich bitte um Hilfe :wacko:


    Liebe Grüße.

    Ok, das verstehe ich nun ein wenig.


    Und wie mache ich das bei den Spielerdaten? Da hab ich endlos von den stocks.. :/

    stock LoadPlayer(playerid)
    {
    GetPlayerName(playerid, sSpieler[playerid][Name], MAX_PLAYER_NAME);
    sSpieler[playerid][Level] = mysql_GetInt("accounts", "Level", "Name", sSpieler[playerid][Name]);
    sSpieler[playerid][Adminlevel] = mysql_GetInt("accounts", "Adminlevel", "Name", sSpieler[playerid][Name]);
    sSpieler[playerid][Geld] = mysql_GetInt("accounts", "Geld", "Name", sSpieler[playerid][Name]);
    sSpieler[playerid][Bank] = mysql_GetInt("accounts", "Bank", "Name", sSpieler[playerid][Name]);
    sSpieler[playerid][Geschlecht] = mysql_GetInt("accounts", "Geschlecht", "Name", sSpieler[playerid][Name]);
    sSpieler[playerid][Wohnhaft] = mysql_GetInt("accounts", "Wohnhaft", "Name", sSpieler[playerid][Name]);
    //....


    //Wo kommt dieser Teil hin? In das OnPlayerCommand?
    new query[88];
    mysql_format(handle, query, sizeof(query), "SELECT `Abgeschlossen` FROM `autosystem` WHERE `Besitzer` = '%e'", playerName);
    mysql_tquery(handle, query, "OnSelectLockStatus", "ii", playerid, 2); // wofür steht hier das playerid und die 2? Und wo bleibt es zum Schluss?


    forward OnSelectLockStatus(playerid, vehicleIdx);
    public OnSelectLockStatus(playerid, vehicleIdx) {
    new rows,
    fields;


    cache_get_data(rows, fields);
    if(rows > 0) {
    Autos[playerid][vehicleIdx][Abgeschlossen] = cache_get_row_int(0, 0); //Wofür steht das 0,0 ?
    }


    // Hier Rest des Scripts.
    }


    Und ist es bei den Floats und Strings das selbe Prinzip?

    Ok, wenn man die stocks nicht verwenden sollte, darf ich ziemlich viel in meinem Script umschreiben.
    Habe bis jetzt immer mit denen gearbeitet.


    bsp. hier:
    Autos[playerid][2][Abgeschlossen] = mysql_GetInt("autosystem", "Abgeschlossen", "Besitzer", string);


    Sollte ich dann da mit mysql_format arbeiten ? Oder was empfehlt ihr mir?

    Also soll ich ohne stocks arbeiten?


    @Music4You. Ich bin mir sicher ich kann gut scripten. Doch im MySQL Bereich bin ich nicht seit langem. Deshalb brauche ich Hilfe..

    Das ist bei jedem stock drinne.
    Hier als Beispiel:



    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);
    mysql_format(dbhandle, query, 128, "SELECT `%s` FROM `%s` WHERE `%s` = '%s'", Field, Table, Where, Is);
    mysql_tquery(dbhandle, query, "", ""); //MYSQL_FIX
    mysql_store_result();
    new sqlint = cache_get_row_float();
    mysql_free_result();
    return sqlint;
    }


    Soll ich das dann zu dem machen?:



    stock mysql_GetInt(Table[], Field[], Where[], Is[])
    {
    new query[128];
    mysql_format(dbhandle, query, 128, "SELECT `%s` FROM `%s` WHERE `%s` = '%s'", Field, Table, Where, Is);
    mysql_tquery(dbhandle, query, "", ""); //MYSQL_FIX
    mysql_store_result();
    new sqlint = cache_get_row_float();
    mysql_free_result();
    return sqlint;
    }

    Vielen Dank, das wäre gefixt! :)


    Muss nun nur noch: mysql_ping, mysql_fetch_int, mysql_real_escape_string und mysql_fetch_float umschreiben.
    Weiß jemand da wie das geht?

    Was ist mit "Deine Verbidung", "true" und "Dein Public wo es Geladen wird" gemeint ?


    Ich muss umsteigen, weil auf meinem Anbieter R5 nicht funktioniert.
    Kannst du mir sonst ein anderes Plugin empfehlen?



    /edit: PermanenT: Mein query hat doch gar nichts mit einem Public zu tun :o

    Guten Tag,


    ich möchte mein Server von MySQL R5 auf R34 umschreiben.
    Ich habe nur ein kleines Problem.


    mysql_query muss zu mysql_tquery.
    Jedoch hat es ein ganz anderes Format.


    Kann mir jemand anhand eines Beispieles zeigen wie ich

    format(query, sizeof(query), "SELECT * FROM autosystem WHERE Besitzer = '%s_2'", sSpieler[playerid][Name]);
    mysql_query(query);


    Zu mysql_tquery umschreibe?



    Hoffe jemand kann mir helfen.
    Liebe Grüße.

    Zitat

    Use this function to free result after using mysql_store_result().


    Also benutzt man das nach dem Else.
    Ok, das hab ich nun..


    Nur irgendwie funktioniert es nicht.
    Ich hab nun folgendes:

    mysql_query("show columns from autosystem like '%s_0'", sSpieler[playerid][Name]);
    mysql_store_result();
    if (mysql_num_rows() > 1)
    {
    mysql_query("show columns from autosystem like '%s_1'", sSpieler[playerid][Name]);
    mysql_store_result();
    if (mysql_num_rows() > 1)
    {
    SendClientMessage(playerid,Rot ,"Sie besitzen bereits 2 Fahrzeuge.");
    TogglePlayerControllable(playerid,1);
    RemovePlayerFromVehicle(playerid);
    }
    else
    {
    AutoKaufen(playerid,1);
    }
    mysql_free_result();
    }
    else
    {
    AutoKaufen(playerid,0);
    }
    mysql_free_result();


    Wenn ich mir ein Fahrzeug kaufe, wird es auf Name_0 gespeichert. Ich möchte nun das wenn es schon ein Fahrzeug unter Name_0 gibt, das er auf Name_1 geschrieben wird.
    Und wenn beides vorhanden ist, soll man kein Fahrzeug mehr kaufen können.


    Jedoch kann ich mir endlos viele kaufen. Sie werden immer jeweils auf Name_0 gespeichert.



    Hoffe jemand weiß die Lösung.


    Mit freundlichen Grüßen
    Litpa


    mysql_query("show columns from Autosystem like 'Auto1'");
    if (mysql_num_rows($result) > 0)
    {
    //Existiert
    }
    mysql_free_result();


    Ich werde es testen, danke :)
    Und wenn ich eine Else abfragen drinnen haben möchte. Soll ich es unter dem mysql_free_result(); schreiben?


    //edit:

    undefined Symbol: $result

    Danke schon mal an alle! :)


    Der stock schaut sehr toll aus, jedoch bekomme ich in dieser Zeile:

    if(!strcmp(Spielername,Name,true))return SendClientMessage(i,Farbe,Nachricht);

    Diesen Error:
    error 035: argument type mismatch (argument 2)