Problem bei BIZ System Arrays

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
  • Hey Jungs,


    heute würde ich euch gern mal um Hilfe bei einem BIZ System, welches Ich momentan versuche umzusetzen, bitten.


    Momentan habe ich 2 Probleme:
    - beim Serverstart sollen mit einer for-Schleife von 1 bis BusinessAmountVar (wird aus Datenbank ausgelesen) die Businessinformationen geladen
    und die Pickups etc erstellt werden
    - ein 3D Text, welcher in einem Array gespeichert wurde, wird InGame nicht angezeigt


    Pastebin Link , da ich nicht raffe wie man hier alles richtig eingereiht einfügt.


    Bei dem Auslesen der Daten aus der MySQL-Datenbank erhalte ich bei allen Zeilen ab:


    "BusinessData[x][BizName] = mysql_GetString("businesses", "Name", "ID", x);"

    immer error 035: argument type mismatch (argument 4).
    Dazu kommt dann noch bei jedem "GetString" der error 047: array sizes do not match, or destination array is too small.


    Ich hoffe irgendwer von euch da draußen findet eine Lösung für die Probleme, bin trotz googlen am verzweifeln...


    LG R4azer

  • Ersetze mal alles was ID heißt zu bID.. kann evtl. sein, das ID ein fester Wert ist. Bin mir aber nicht sicher.

    Die Kritik an anderen hat noch keinem die eigene Leistung erspart.

    – Noël Coward

  • Du musst in den vierten Parameter einen String schreiben, und GetString's können nicht direkt in mehrdimensionale Arrays geschrieben werden, daher muss man format/strcat verwenden.
    public InitialiseBusinesses()
    {
    new str_x[8];
    for(new x=1; x <= BusinessAmountVar; x++)
    {
    valstr(str_x, x);
    BusinessData[x][ID] = x;
    format(BusinessData[x][BizName], 64, mysql_GetString("businesses", "Name", "ID", str_x));
    BusinessData[x][BizX] = mysql_GetFloat("businesses", "BizX", "ID", str_x);
    BusinessData[x][BizY] = mysql_GetFloat("businesses", "BizY", "ID", str_x);
    BusinessData[x][BizZ] = mysql_GetFloat("businesses", "BizZ", "ID", str_x);
    BusinessData[x][Price] = mysql_GetInt("businesses", "Price", "ID", str_x);
    BusinessData[x][Status] = mysql_GetInt("businesses", "Status", "ID", str_x);
    format(BusinessData[x][BizOwner], 64, mysql_GetString("businesses", "Owner", "ID", str_x));
    BusinessData[x][Bank] = mysql_GetInt("businesses", "Bank", "ID", str_x);
    BusinessData[x][EnterPrice] = mysql_GetInt("EnterPrice", "Price", "ID", str_x);
    /*if(!strcmp(BusinessData[x][BizOwner], "No-One"))
    {//Zu verkaufen
    BusinessData[x][BIZPickup] = CreatePickup(1272, 1, BusinessData[cbizid][BizX], BusinessData[cbizid][BizY], BusinessData[cbizid][BizZ], -1);
    format(BusinessData[cbizid][BIZ3DText],256,"Business zu verkaufen!\n\nName: %s [ID:%i]\nPreis: $%i\nEingangspreis: $%i",BusinessData[cbizid][BizName],BusinessData[cbizid][ID],BusinessData[cbizid][Price],BusinessData[cbizid][EnterPrice]);
    BusinessData[cbizid][BIZ3D] = Create3DTextLabel(BusinessData[cbizid][BIZ3DText], COLOR_ORANGE, BusinessData[cbizid][BizX], BusinessData[cbizid][BizY], BusinessData[cbizid][BizZ], 10.0, 0, 1);
    }
    else
    {//In Besitz
    BusinessData[x][BIZPickup] = CreatePickup(1273, 1, BusinessData[cbizid][BizX], BusinessData[cbizid][BizY], BusinessData[cbizid][BizZ], -1);
    format(BusinessData[cbizid][BIZ3DText],256,"Business nicht zu verkaufen!\n\nName: %s [ID:%i]\nPreis: $%i\nEingangspreis: $%i",BusinessData[cbizid][BizName],BusinessData[cbizid][ID],BusinessData[cbizid][Price],BusinessData[cbizid][EnterPrice]);
    BusinessData[cbizid][BIZ3D] = Create3DTextLabel(BusinessData[cbizid][BIZ3DText], COLOR_ORANGE, BusinessData[cbizid][BizX], BusinessData[cbizid][BizY], BusinessData[cbizid][BizZ], 10.0, 0, 1);
    }*/
    }
    return 1;
    }

  • Wow, klasse dass ihr selbst um die Uhrzeit noch so schnell antwortet 8|


    Also ich danke dir schonmal, die Errors sind nun alle weg :thumbup:


    Allerdings müsste ich noch wissen wie das jetzt mit den 3DTexts funktioniert..


    LG

  • Also der Stringcompare ist jetzt im Script auch korrigiert.


    Bei mir erscheinen die 3D Texts halt nicht, aber jetzt fällt mir gerade ein anderes Problem auf.


    Beim Abspeichern der Koordinaten des Bizzes werden die Nachkommastellen einfach weggelassen und beim auslesen kommt dann nurnoch Unsinn heraus.


    Beispielweise steht in der Datenbank: 2556 | -1082 | 67
    und hab mir das mal im Server beim laden ausgeben lassen: 1159708672.00000 | -997769216.00000 | 1116078080.00000



    Habe zudem noch im stock "mysql_GetFloat" einen Warning, was möglicherweise dazu führt (?) ( Pastebin ).


    Habe bisher noch keine Systeme mit MySQL gescriptet, und das ist alles Neuland, deswegen habe ich bei solchen Fehlern wirklich keinen Plan :S


    Bin total happy, dass es so Leute wie euch gibt ^^


    //Edit: hier noch die Zeilen des Saves
    Pastebin

  • stock mysql_GetFloat(Table[], Field[], Where[], Is[])
    zu
    forward Float:mysql_GetFloat(Table[],Field[],Where[],Is[]);
    Float:mysql_GetFloat(Tabel[],Field[],Where[],Is[])

  • Ihr seid so genial!



    Nun funktioniert alles, die Businesses werden richtig geladen und zeigen sogar die 3D Texte an :thumbup:


    Ich danke Euch vielmals! Schönen Abend oder möglicherweise gute Nacht :love: :love:

  • Übrigens, da du geschrieben hast, dass du neu in der Materie bist, rate ich dir, fange gleich mit dem richtigen System an, und nicht mit diesen Funktionen (mysql_GetString, etc).


    Die sind sehr langsam und gehen auf die Performance des Servers.


    Ich verlinke hier mal das Tutorial für die neuste und beste Version von MySQL für den Server:
    [ SCRIPTING ] [jTuT] MySQL R39-3 (Installation, XAMPP, Verwendung, Bedienung & Registrations-System)


    Wenn du damit deine Systeme von Anfang an aufbaust, dann lohnt sich das wirklich.