[SAMMELTHREAD] Kleine Scripting Fragen

Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
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
  • @deklaN: Das beantwortet nur eine meiner zwei Fragen...


    Die Andere war, wie du das zuweist bzw welchen Wert die Variable hat.


    Kannst es dir ja mal printen lassen (da wo du das TextDraw erstellst und wo du es nutzt jeweils printen lassen und vergleichen).


    printf("%d", _:MSGTextdrawPlayer[playerid]);

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Hallo!


    Ich hab ein Problem bei meinem Loginsystem, und zwar steht da immer as das Passwort falsch ist obwohl ich es richtig eingebe. Ich denk es liegt an der Registerfunktion.


    Was ist da falsch?


    MfG


    Allrounder18

  • Bei der Registrierung wird dein Passwort nicht gehasht?


    Steht das denn in Klartext in der Datenbank? (Oh nooooo :/ )


    Generell ist aber auch von MD5 abzuraten: https://breadfish.de/index.php…ren-genauer-erkl%C3%A4rt/

    Das Passwort sollt sehrwohl gehast werden. Oder was hab ich vergessen?


    Edit: Ich hab jetzt mal bcrypt verwendet, jedoch wie mach ich das? Ich hab jetzt ma die Aleitug be deiem Lin befolgt, jedoch weiß ich nicht wie es weitergeht.

  • Das Passwort sollt sehrwohl gehast werden. Oder was hab ich vergessen?

    Steht es denn gehasht in der Datenbank? Kannste doch einfach testen.



    Edit: Ich hab jetzt mal bcrypt verwendet, jedoch wie mach ich das? Ich hab jetzt ma die Aleitug be deiem Lin befolgt, jedoch weiß ich nicht wie es weitergeht.

    Dann lass es jetzt erstmal so, aktuell habe ich keine Zeit oder experimentiere etwas rum, oder evlt ist jemand so nett und erläutert das etwas ^^


    Wo genau hängst du denn? :)

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Danke, es hat geklappt. ich hab einfach das Insert dingens bei Register vergessen.


    Edit: Ich möchte, dass bei Server Restart ein Passwort gesetzt wird.
    Funktioniert das so oder muss ich es anders mahen? Kann ich den Timer lassen oder ist der unnötig?
    Bei OnGamemodeIit steht dann SendRconCommand("password 0");


    Code
    ocmd:restart(playerid)
    {
        SendRconCommand("password ****");
        SetTimer("Restart",100, false);
        Kick(playerid);
        return SendRconCommand("gmx");
    }
  • Was genau machst du da?
    Du setzt ein Passwort, jedoch gleichzeitig lässt du den Server Restarten, wenn der Server neu startet, kann dazwischen (während des Restarts) eh keiner drauf connecten.
    Was macht der Timer?


    Wenn du nicht direkt den Server neustarten lässen möchtest, dann setzt in deinem restart Befehl "SendRconCommand("password 123"); und führe den Timer nach X Zeit aus und lass dort dann den rcon gmx durchführen.
    Ansonsten wenn du ihn direkt neu starten möchtest bei Befehl Eingabe, kannst du das Passwort weg lassen.

  • @Allrounder18


    Habe gerade dein Edit gelesen könntest auch mit params arbeiten aber hier z.b:
    Du hast vergessen alle Spieler rauszuwefen, habe die Arbeit mal für dich erledigt.

    wm2c6p1.png
    Ich weiß, dass ich weiß, dass ich nichts weiß.

  • Code
    for(new id = 0; id < MAX_PLAYERS; id++)


    am besten zu


    Code
    for(new id = 0, j = GetPlayerPoolSize(); id < j; id++) //Besser als MAX_PLAYERS. Hab ich am eigenen Leib erfahren ^^


    GetPlayerPoolSize() nimmt nämlich die größte playerID und loopt nur durch die IDs darunter.



    Code
    ocmd:restart(playerid, params[]) //Hast hier das params[] vergessen


    @Allrounder18

    MfG. Adrian

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • C
    for(new id = 0, j = GetPlayerPoolSize(); id < j; id++)

    am besten zu


    C
    foreach(Player,id) //Besser als GetPlayerPoolSize(). Hab ich am eigenen Leib erfahren ^^

    Hier kannst du dir die Abfrage sparen, ob der Spieler connected ist, dazu lopped er nur die Spieler die Online sind.

    wm2c6p1.png
    Ich weiß, dass ich weiß, dass ich nichts weiß.

  • Hallö!


    Ich habe von nem Kollegen ne .map Datei bekommen. Wo muss ich diese einfügen, damit sie auf dem Server läuft?! Ich raff das irgendwie nicht, da ich immer mit CreateDynamicObject's gearbeitet habe.

  • Beitrag von Maho ()

    Dieser Beitrag wurde von seegras aus folgendem Grund gelöscht: Kontext? Evtl. denjenigen per @Username erwähnen für den deine Antwort gedacht war ().
  • Hab auch ein Problem. Kennzeichen aus der Datenbank laden funktioniert nur beim ersten gespawnten Auto?! Alle danach bekommen " NULL " als Kennzeichen?!
    Muss ich an den String irgendwie MAX VEHICLES dranbauen?



    public OnPlayerCarsLoad()
    {
    new num_fields,num_rows;
    cache_get_data(num_rows,num_fields,dbhandle);
    if(!num_rows)return 1;
    for(new i=0; i<num_rows; i++)
    {
    new id=getFreeCarID();
    cInfo[id][carmodel]=cache_get_field_content_int(i,"model",dbhandle);
    cInfo[id][c_x]=cache_get_field_content_float(i,"x",dbhandle);
    cInfo[id][c_y]=cache_get_field_content_float(i,"y",dbhandle);
    cInfo[id][c_z]=cache_get_field_content_float(i,"z",dbhandle);


    [b] new tmp_LicensePlate[16];
    cache_get_field_content(id, "LicensePlate", tmp_LicensePlate, dbhandle);
    strmid(cInfo[id][plate], tmp_LicensePlate, 0, sizeof(tmp_LicensePlate),sizeof(tmp_LicensePlate));[/b]
    [b]
    [/b][b] SetVehicleNumberPlate(cInfo[id][id_x],tmp_LicensePlate);
    [/b]
    }
    return 1;
    }


  • Nabend.
    Hab nen neues MySQL Plugin installiert. Allerdings bekomme ich jetzt paar Errors..


    Hier die Stellen im Skript:
    stock mysql_GetString(Table[], Field[], Where[], Is[]){new query[128], Get[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();mysql_fetch_row(Get);return Get;}stock mysql_ReturnPasswort(xName[]){new query[130], Get[130];mysql_real_escape_string(xName, xName);format(query, 128, "SELECT Passwort FROM Accounts WHERE Name = '%s'", xName);mysql_query(query);mysql_store_result();mysql_fetch_row(Get);mysql_free_result();return Get;}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;}stock GetPlayerAdmin(playerid){new Adminrank[80];switch(Spieler[playerid][Admin]){case 0:Adminrank = "Spieler";case 1:Adminrank = "Unterstützer";case 2:Adminrank = "Helfer";case 3:Adminrank = "Programmierer";case 4:Adminrank = "Koordinationsverwaltung";}return Adminrank;}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 = '%.1f' WHERE %s = '%s'", Table, Field, To, Where, Where2);mysql_query(query);return true;}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;}


    Bitte um Hilfe! Vielen Dank und liebe Grüße!

    Nachdem du dein MySQL geupdatet hast, musst du alles so umschreiben, so das es auf der neuen Version läuft.
    Schau dir die Hilfe von @Jeffry mal an, falls du es auf der R40+ geupdatet hast.
    Ansonsten kannst du auch im Wiki mal nachschauen.