[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
  • 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.

  • Vielen Dank, wiedermal!
    Kannst du mir noch kurz erklären, wieso "id" dazu führte, dass das erste aber sonst keins funktioniert hat? Beim Haussystem hab ich es auch mit i. Das hätte mir in einem jahr wirklich auffallen können^^ Aber dafür freu ich mich jetzt umso mehr, dass es jetzt funktioniert :D

    Zitat von Jeffry

    cache_get_field_content(i, "LicensePlate", tmp_LicensePlate, dbhandle);

  • Vielen Dank, wiedermal!
    Kannst du mir noch kurz erklären, wieso "id" dazu führte, dass das erste aber sonst keins funktioniert hat?


    Gerne!
    Das Problem mit "id" ist, dass das der Index des Arrays cInfo ist, aber nicht unbedingt auch die Zeile aus dem Datenbank Ergebnis. Wenn du zuvor schon zwei Fahrzeuge erstellt hast, steht id auf 2, i jedoch erst auf 0. Damit kommt eine Abweichung zu Stande, die dann irgendwelche oder in deinem Fall keine Werte mehr ausgibt.


    Also grob gesagt: id hat nicht zwingend den gleichen Wert wie i. Es kann die gleichen Werte haben, Voraussetzung ist dann aber, dass (in diesem Beispiel) noch kein Fahrzeug in cInfo steht, wenn die Daten eingelesen werden.

  • Wenn ich jemanden ein Textdraw anzeige (Textdrawshow...) und der Spieler disconnected,
    wird für den nächsten Spieler mit der ID das Textdraw auch angezeigt oder ist es pflicht es beim disconnect wieder zu hiden?

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

  • Wenn ich jemanden ein Textdraw anzeige (Textdrawshow...) und der Spieler disconnected,
    wird für den nächsten Spieler mit der ID das Textdraw auch angezeigt oder ist es pflicht es beim disconnect wieder zu hiden?

    https://wiki.sa-mp.com/wiki/CreatePlayerTextDraw



    enthält:


    Zitat von Wiki

    Player-textdraws are automatically destroyed when a player disconnects.


    Zu normalen Textdraws gibt's im Wiki keine Angabe, außer einem Codebeispiel (https://wiki.sa-mp.com/wiki/TextDrawHideForPlayer), jedoch braucht man es wohl nicht zu hiden, kann es aber auch einfach machen. Wäre ja jetzt nicht so aufwändig/problematisch :D

    MfG. Adrian

  • Wenn ich jemanden ein Textdraw anzeige (Textdrawshow...) und der Spieler disconnected,
    wird für den nächsten Spieler mit der ID das Textdraw auch angezeigt oder ist es pflicht es beim disconnect wieder zu hiden?

    Um die Aussage von Skeezy nochmal zu verdeutlichen auf dein Beispiel.


    Würde der Spieler disconnectet werden z.B. durch einen Kick, dann würde er die TextDraws noch weiter sehen (es sei denn du würdest sie hiden).


    Connectet ein Spieler mit der selben ID, wird das TextDraw ihm nicht automatisch angezeigt :)

    ast2ufdyxkb1.png


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

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Ich will ein Flugzeug in der Luft rumfliegen lassen, wie mache ich das?
    Welche Möglichkeiten gibt es, die nichts mit NPC zutun haben

    • SetVehiclePos
    • Ein Objekt erstellen, was aussieht wie ein Flugzeug und mit MoveObject fliegen lassen :)


    PS: [wiki]SetVehicleVelocity[/wiki] klappt leider nicht.


    Ansonsten muss man wohl NPCs nutzen :)

    ast2ufdyxkb1.png


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

  • Wie kann man abfragen, ob in dem Username vom Spieler ein Wort enthalten ist?
    Sagen wir, ich will abfragen ob der Spieler "Test" im Namen hat.

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

  • Hallöchen!


    Kurze Frage; kann mir jemand erklären, wie ich das hinbekomme, eine Sperre für normale Namen zu machen und das die Namen bei der Registration MIT einem Unterstrich ( bsp. Marc_Williams) sein MÜSSEN.


    Ich danke!

  • Kurze Frage; kann mir jemand erklären, wie ich das hinbekomme, eine Sperre für normale Namen zu machen und das die Namen bei der Registration MIT einem Unterstrich ( bsp. Marc_Williams) sein MÜSSEN.

    Unter OnPlayerConnect kannst du einfach prüfen, ob sie einen gültigen Namen haben.


    Entweder du nutzt ein dickes Plugin dafür: https://forum.sa-mp.com/showthread.php?t=247893


    oder hier mal eine Funktion dafür eben geschrieben, die folgendes beachtet:


    • Nur Buchstaben, keine Zahlen/Sonderzeichen
    • Nur ein _ (der sich nicht ganz vorne oder ganz hinten befinden kann)


    ast2ufdyxkb1.png


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

  • Unter OnPlayerConnect kannst du einfach prüfen, ob sie einen gültigen Namen haben.
    Entweder du nutzt ein dickes Plugin dafür: https://forum.sa-mp.com/showthread.php?t=247893


    oder hier mal eine Funktion dafür eben geschrieben, die folgendes beachtet:


    • Nur Buchstaben, keine Zahlen/Sonderzeichen
    • Nur ein _ (der sich nicht ganz vorne oder ganz hinten befinden kann)


    Ich danke dir.

  • Kann mir jmd helfen das zu fixxen, arbeite gerade an einer Abfrage, diese frägt ab ob das Fenster vom Auto geschlossen ist sowie ob der Spieler im selben Auto ist.
    Das Problem ist, das nur der Fahrer die Nachrichten vom Spieler der als Passagier im Auto ist sieht, der Passagier sieht keine Nachrichten vom Fahrer.


    foreach(new i : Player){if(IsPlayerInVehicle(i, vehicleid)){if(IsVehicleWindowsDown[vehicleid] == 0){format(string, sizeof(string), "[Windows Closed] %s says: %s", GetPlayerRPName(playerid), text);SendClientMessage(i, -1, string);return 0;}}


    //Edit: Nevermind habs selber gelöst ^

    Einmal editiert, zuletzt von FutureStunt ()

  • Das Problem ist, das nur der Fahrer die Nachrichten vom Spieler der als Passagier im Auto ist sieht, der Passagier sieht keine Nachrichten vom Fahrer.

    Kann man das bitte noch verwirrender formulieren?


    Rede doch mal Klartext, wer sieht was nicht und wer soll was sehen...meine Güte xD

    ast2ufdyxkb1.png


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

  • Beitrag von Colney ()

    Dieser Beitrag wurde von shoxinat0r aus folgendem Grund gelöscht: Spam ().