[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
  • Schade, es muss wirklich einer im Fahrzeug sein, sonst wäre das zu geil würde es SetVehicleGravity geben.
    Da jemand im Fahrzeug sitzen muss wird das nicht gehen, manchmal hat man so gute Ideen und man kann sie nicht umsetzten.
    Trotzdem ein sehr großes Dankeschön das du mir alles erklärt hast.

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

  • Moin Leuts,


    ich hab mal eine Frage...



    Funktioniert nicht wirklich ... Wenn ich Manuell unter OnGameModeInit:


    Code
    printf("%s", GetNameFromDB(1));

    kommt der richtige Name bei raus, wenn ich allerdings...



    Code
    GetNameFromDB(bInfo[i][biz_owner])



    nehme, dann funktioniert das mit dem Namen nicht. Letzendlich steht hinter dem bInfo[i][biz_owner] auch eine 1...


    MfG
    XonarZ

  • Nutze mysql_query anstatt mysql_pquery. Empfohlen ist das aber nicht, auf Grund der Performance

    Wenn ich das mit mysql_query mache, dann findet er die Biz namen nicht mehr^^


    Mysql Log:


    Das geht bis invalid row index '21' (sind ja 22 Einträge)



    Ich hoffe das dies jetzt keine "Große" Scripting Frage wird ...


    MfG
    XonarZ

  • Das ist doch jetzt ein ganz anderer Code. Wie stehen diese in Verbindung miteinander?

    Ganz Einfach, der Besitzer wird als Integer Gespeichert (Die Datenbank ID vom User). Ich möchte nämlich den Namen nicht als String speichern aus dem Grund, wenn sich jemand bsp. als "Niemand" Registriert und ich frage ab ob der String = Name ist, dann gehört diesem JEDE Biz bzw. ist überall Teilhaber. Somit möchte ich mit der Datenbank ID vom User arbeiten.


    Ich lade erst die Bizzen und da bei OnLoadBiz der Name aus der Datenbank (GetNameFromDB) aufgerufen wird um den Namen des eingetragenen Integers abzufragen Sprich welcher Name steckt hinter der Datenbank ID bsp. 1


    MfG
    XonarZ

  • Ganz Einfach, der Besitzer wird als Integer Gespeichert (Die Datenbank ID vom User). Ich möchte nämlich den Namen nicht als String speichern aus dem Grund, wenn sich jemand bsp. als "Niemand" Registriert und ich frage ab ob der String = Name ist, dann gehört diesem JEDE Biz bzw. ist überall Teilhaber. Somit möchte ich mit der Datenbank ID vom User arbeiten.
    Ich lade erst die Bizzen und da bei OnLoadBiz der Name aus der Datenbank (GetNameFromDB) aufgerufen wird um den Namen des eingetragenen Integers abzufragen Sprich welcher Name steckt hinter der Datenbank ID bsp. 1


    MfG
    XonarZ

    Das lässt sich deutlich einfacher mit einem LEFT JOIN verwirklichen. Dann kannst du dir das zusätzliche ermitteln des Namens sparen. Müsste in etwa so aussehen:



    SQL
    SELECT biz_tabelle.*, user.username FROM biz_tabelle LEFT JOIN user ON user.id = biz_tabelle.biz_owner

    user.username musst du noch an deinen Spaltennamen anpassen + per cache_get_value_name() dir den username holen.

  • Das lässt sich deutlich einfacher mit einem LEFT JOIN verwirklichen. Dann kannst du dir das zusätzliche ermitteln des Namens sparen. Müsste in etwa so aussehen:

    Ich habs nun so:



    Code
    new query[512];
    			mysql_format(handle, query, sizeof(query), "SELECT * FROM geschaefte LEFT JOIN user ON geschaefte.biz_owner = user.id");
    			mysql_query(handle, query);
    			cache_get_value_name(0, "name", inhaber, MAX_PLAYER_NAME);


    Als ergebnis kommt allerdings "NULL" Raus ... woran könntes das liegen ? Ich hab mir den Query mal printen lassen:


    Code
    1 // <- das ist die Owner ID sprich in der user tabelle user.id 1 = Mein Name
    [13:45:54] SELECT * FROM geschaefte LEFT JOIN user ON geschaefte.biz_owner = user.id

    Ich arbeite in PHP selten (vielleicht sollte ich das mal ändern) mit LEFT JOIN daher ist das neuland für mich.


    Poste bitte den Code dazu, sonst ist das Problem nicht nachvollziehbar.

    Welchen genau meinst du ? von OnLoadBiz?:



  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • @XonarZ: Das Statement hat weniger mit PHP, sondern mehr etwas mit SQL / mySQL zu tun :).


    Den Query den du oben ausgibst muss auch an eine andere Stelle hin. Nämlich dort, wo der Query für OnLoadBiz() aufgerufen bzw. gesendet wird. Irgendwo muss ja ein Code-ähnlicher Teil wie:



    Code
    mysql_format(handle, query, sizeof(query), "SELECT * FROM geschaefte");
    	mysql_pquery(handle, query, "OnLoadBiz");

    sein, dort den Query mit den oberen ersetzen. Dann kannst du, wie deine anderen Werte gemütlich per cache_get_value_name*() aus den einzelnen rows ziehen.

  • noch ne idee?

    Dein Problem musst du schon etwas konkretisieren. Was ist immer 0? cache_get_row_count() oder gibt OnCarKeyCountCheck() immer 0 zurück? Schon mal versucht den Query manuell per phpMyAdmin auszuführen und zu schauen, ob und wie viele Zeilen du zurückbekommst? Alternativ, versuch mal die Funktion cache_num_rows() zu verwenden (weiß nicht, ob es diese Funktion bei deiner MySQL BlueG Version gibt).

  • Interior ( Ein & Ausgänge ) Probleme

    Sobald ein Spier das Ballas Interior betritt, welches derzeit ( noch "alle" die ID & Koordinaten vom CJ Interior besitzen, ) spawnt der Spieler beim heraus gehen an der "Grove Street" Base.
    Er soll ja "eigentlich" an dem Ballas Icon ( Draußen ) Spawnen, wie es im Code deklariert ist. !!!!!

    Muss ich überall noch die VirtuellenWelten auf 0 setzen, oder soll ich das System wie Mr.Monat als "Enum" System schreiben ?
    @Jeffry Villeicht kannst du mir ja helfen ? :D

  • Muss ich überall noch die VirtuellenWelten auf 0 setzen

    Ja, sonst sehen sich die Spieler danach nicht mehr.


    Außerdem, und daher der Fehler, musst du zusätzlich beim jeweiligen Ausgang, die virtuelle Welt abfragen.
    Beispiel:
    else if(IsPlayerInRangeOfPoint(playerid,2.0,2495.9133,-1692.0834,1014.7422)) // Grove Street Ausgang
    zu:
    else if(IsPlayerInRangeOfPoint(playerid,2.0,2495.9133,-1692.0834,1014.7422) && GetPlayerVirtualWorld(playerid) == 1) // Grove Street Ausgang



    soll ich das System wie Mr.Monat als "Enum" System schreiben ?

    Das wäre natürlich schöner und gegebenenfalls dynamisch aufbaubar, bei den bisher drei Ein-/Ausgängen aber auch nicht wirklich notwendig. Je mehr es werden, desto besser wäre es.

  • Danke dir, hat Funktioniert, jedoch finde ich es so, bei vielen Interiors und Systemen sehr umständlich. Dennoch hat es mir geholfen warum es nicht funktioniert hat.


    Werde mehrere Systeme mal als Enum anfangen und schauen wie meine Fortschritte werden ;)
    Schonmal Danke für deine Hilfe komme sicherlich nochmal auf dich zurück.



    besser ja

    Habe mal ein Shop System angefangen, viel Übersichtlicher mit Enums und weniger Code..
    Danke euch für eure Hilfe.

  • Beitrag von Fernandez_ ()

    Dieser Beitrag wurde vom Autor aus folgendem Grund gelöscht: done ().
  • Hier der Code noch mal ein bisschen anders geschrieben, kannst an einigen Stellen auf einiges verzichten.


    Zudem solltest du versuchen keine globalen Strings zu verwenden.



    Habe direkt mal eine mögliche Lösung im Code angegeben, über inputtext kannst du dann die Datenbankid abfragen.


    Hier mal, was inputtext für den jeweiligen Dialog Typ enthält: https://wiki.sa-mp.com/wiki/Dialog_Styles


    Man kann es auch anders lösen, z.B. indem du das temporär in PVars zwischenspeicherst o.ä.


    Aber so ist es eigentlich am einfachsten :)

    ast2ufdyxkb1.png


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