TextDraw Autohaus-System, aber wie?

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
  • Vielen Dank, da hätte ich eigentlich von selber drauf kommen müssen, aber wat sollet.
    Endlich funktioniert alles wie es soll, ich habe nur noch eine Art "Bug".
    Ich kann mit den Pfeilen einfach weiterklicken obwohl ich beim letzten Fahrzeug bin, was das ganze Menü etwas verbuggt.
    Kann ich das irgendwie vorbeugen?

  • Pardon, klar.

  • Vor:
    ahID[playerid]++;
    das einfügen:
    if(ahID[playerid]+1 >= sizeof(SportAutos) || SportAutos[ahID[playerid]][autohaus] != SportAutos[ahID[playerid]+1][autohaus]) return 1;
    Sprich wenn man am Ende des Arrays angekommen ist, oder wenn das nächste Fahrzeug einem anderen Autohaus angehört, passiert nichts.

  • Ich schulde dir ein Bier Jeffry.


    Gibt es eigentlich einen Weg bei dem TextDrawPreview eine Art Platzhalter einzubauen?
    Wenn man in das PickUp für den TextDraw läuft, wird nämlich noch das unbearbeitete TextDraw angezeigt

    Einmal editiert, zuletzt von rgnbgnhnd ()

  • Genau, weil derzeit wird nur das "Raw-Textdraw" angezeigt


  • Genau.
    Was willst du stattdessen sehen? Das erste Fahrzeug aus der Liste zu dem entsprechenden Autohaus?


    Übrigens:
    Du kannst die Pfeile und Boxen (alle Textdraws die sich niemals in Farbe/Text/... ändern) auch als normale Textdraws (nicht PlayerTextdraw) erstellen. Wenn du viele Systeme mit Textdraws hast, kommst du sonst eventuell schneller an das Limit.

  • Zitat von Jeffry

    Du kannst die Pfeile und Boxen auch als normale Textdraws erstellen.

    Jo, das werde ich noch machen.



    Zitat von Jeffry

    Was willst du stattdessen sehen? Das erste Fahrzeug aus der Liste zu dem entsprechenden Autohaus?

    Richtig, es soll das 1. Fahrzeug (411) angezeigt werden, mit entsprechenden Daten

  • Füge dort dann noch das hier hinzu:
    for(ahID[playerid] = 0; ahID[playerid] < sizeof(SportAutos); ahID[playerid]++) if(SportAutos[ahID[playerid]][autohaus] == 0) break;
    PlayerTextDrawSetPreviewModel(playerid,AutoHB1[playerid],SportAutos[ahID[playerid]][cmodelid]);
    PlayerTextDrawShow(playerid,AutoHB1[playerid]);
    PlayerTextDrawSetPreviewModel(playerid,AutoHB2[playerid],SportAutos[ahID[playerid]][cmodelid]);
    PlayerTextDrawShow(playerid,AutoHB2[playerid]);
    PlayerTextDrawSetString(playerid,AutoHPreis[playerid],SportAutos[ahID[playerid]][cpreis]);
    new str[32];
    format(str,sizeof(str),"Preis: $%d",SportAutos[ahID[playerid]][cpreis]);
    PlayerTextDrawSetString(playerid,AutoHPreis[playerid],str);
    format(str,sizeof(str),"%s",getVehicleName(SportAutos[ahID[playerid]][cmodelid]));
    PlayerTextDrawSetString(playerid,AutoHName[playerid],str);


    Zur Erklärung, neu ist nur diese Zeile, den Rest habe ich von oben kopiert:
    for(ahID[playerid] = 0; ahID[playerid] < sizeof(SportAutos); ahID[playerid]++) if(SportAutos[ahID[playerid]][autohaus] == 0) break;
    Diese Zeile sucht das erste Auto des Autohauses.
    Die Autohaus-ID musst du hier angeben:
    ... if(SportAutos[ahID[playerid]][autohaus] == /*HIER*/) break;
    Im Beispiel steht dort die 0 (für das erste Autohaus).


    Falls du nur ein Autohaus hast, zum Beispiel zu Anfang für die Tests, reicht es anstatt der Schleife:
    ahID[playerid] = 0;
    Das geht aber nur, wenn du nur ein Autohaus hast, da ist das erste Auto ja immer das erste in der Liste.

  • Jeffry, ich schulde dir nun 2 Bier.


    Ich werde nun die Autoerstell-Funktion einbauen(die habe ich mir schon vorbereitet).
    Danach werde ich mich wohl wieder melden wegen den mehreren Autohäusern, da ich dort höchstwahrscheinlich auch noch ein bisschen Erklärungsbedarf hab.

  • Ich hab wohl einen MySQL-Syntax Error


    SQL
    [20:01:32] [ERROR] CMySQLQuery::Execute[carSavedToDB] - (error #1064) You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''0.000' at line 1

    in carSavedToDB ist folgendes:


    Code
    CarInfo[carid][db_id]=cache_insert_id(handle);

    Einmal editiert, zuletzt von rgnbgnhnd ()

  • Code
    new query[128];
    	format(query,sizeof(query),"INSERT INTO autos (besitzer,model,x,y,z,r,farbe1,farbe2,neon) VALUES ('%i'),('%i'),('%f'),('%f'),('%f'),('%f'),('%i'),('%i'),('%i')",PlayerInfo[playerid][p_id],CarInfo[carid][model],CarInfo[carid][c_x],CarInfo[carid][c_y],CarInfo[carid][c_z],CarInfo[carid][c_r],CarInfo[carid][farbe1],CarInfo[carid][farbe2],CarInfo[carid][cneon]);
    	mysql_function_query(handle,query,true,"carSavedToDB","i",carid);
  • Mache es so:
    new query[256];
    format(query,sizeof(query),"INSERT INTO autos (besitzer,model,x,y,z,r,farbe1,farbe2,neon) VALUES ('%i','%i','%f','%f','%f','%f','%i','%i','%i')",PlayerInfo[playerid][p_id],CarInfo[carid][model],CarInfo[carid][c_x],CarInfo[carid][c_y],CarInfo[carid][c_z],CarInfo[carid][c_r],CarInfo[carid][farbe1],CarInfo[carid][farbe2],CarInfo[carid][cneon]);


    Zum einen war das Query zu klein (erhöht auf 256) und zum anderen mussten die Werte alle in eine Klammer, sonst legt das Query für jeden Wert eine neuen Datensatz an, und die Werte stehen nur bei "besitzer" drin.

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