Gebiete kaufbar

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
  • Das ist ja schön und gut, ich sehe in deinem Kaufbefehl aber kein Abfrage ob das Gebiet einen Besitzer hat.
    Dir ist schon bewusst, das du das jedesmal kaufen kannst, wenn du die firmengebiete nicht speicherst?
    Du speicherst es lediglich für den Account und nicht für das System selbst, also kann jeder das gebiet kaufen der keins hat.

  • Der Besitzer muss in der Datenbank ein VARCHAR sein und das Objekt und Label musst du nicht speichern.


    Anschließend musst du per Query die Daten beim Server-Start laden und auslesen.
    Schau dir dazu mal dieses Tutorial an: [ SCRIPTING ] [jTuT] Fraktions-Fahrzeug-System mit MySQL R39-2
    Das behandelt zwar Fahrzeuge, aber das Laden und Speichern kannst du in etwa übernehmen. Versuche dich einfach mal daran.

  • Habe nun folgendes erst mal gemacht:


    Forwards:
    forward LadeFirma();
    forward LoadFirmaDaten();


    OnGameModeInit:
    LadeFirma();


    Publics:
    public LadeFirma()
    {
    new query[56];
    format(query, sizeof(query),"SELECT * FROM firma"); // *firma* musst du anpassen wie du deine Datenbankname benannt hast
    mysql_function_query(dbhandle, query, false, "LoadFirmaDaten", "");
    return 1;
    }
    public LoadFirmaDaten()
    {
    new num_fields, num_rows;
    cache_get_data(num_rows,num_fields,dbhandle);
    if(num_rows > 0)
    {
    for(new i = 0; i<num_rows; i++)
    {
    Firmengebiete = cache_get_field_content_float(0,"Firmengebiete[i][Firmengeleande]", dbhandle); //Falls du dbhandle nutzt lassen ansonsten anpassen!
    /*
    und so musst du die weiteren Sachen laden, so sollte eigentlich ein LadeSystem aussehen!
    Kannst aber von mir aus auch das auf Breadfish Teilen und Jeffry fragen
    ob du das so nehmen kannst ;)

    Ich schreibe so meine Lade Systeme und ich glaub das ist auch ganz einfach ;)
    */
    }
    }
    return 1;
    }


    weiter kam ich nicht und bei LoadFirmaDaten habe ich bei der Abfrage wo
    Firmengebiete = cache_get_field_content_float(0,"Firmengebiete[i][Firmengeleande]", dbhandle); //Falls du dbhandle nutzt lassen ansonsten anpassen! steht folgenden fehler:

    Code
    samplernen.p(469) : error 033: array must be indexed (variable "Firmengebiete")
  • Das Public muss so aussehen:
    public LoadFirmaDaten()
    {
    new num_fields, num_rows;
    cache_get_data(num_rows,num_fields,dbhandle);
    for(new i = 0; i<num_rows; i++)
    {
    Firmengebiete[i][f_id] = cache_get_field_content_float(i, "id", dbhandle);
    Firmengebiete[i][posX] = cache_get_field_content_float(i, "posX", dbhandle);
    Firmengebiete[i][posY] = cache_get_field_content_float(i, "posY", dbhandle);
    Firmengebiete[i][posZ] = cache_get_field_content_float(i, "posZ", dbhandle);
    /*
    ... und so weiter ...
    */
    }
    return 1;
    }


    Das Array benötigst unter den Includes, mit enum:
    #define MAX_FIRMEN 10
    enum firmenEnum {
    f_id,
    Float:posX,
    Float:posY,
    Float:posZ
    }
    new Firmengebiete[MAX_FIRMEN][firmenEnum];



    Wobei ich dazu sagen muss, dass du das nicht aus dem Tutorial hast, das ich dir gegeben habe. Hättest du damit gearbeitet, wärst du wahrscheinlich weiter gekommen.
    Ich rate dir - damit du auch verstehst was du machst - lösche den Code nochmal aus deinem Gamemode und schaue dir das Tutorial an, dann geh das durch und baue den Code so nochmal auf. Die paar Zeilen sind ja kein großes Problem, aber es geht darum, dass du es verstehst, denn es bringt - wie man sieht - nichts, wenn es dir jemand (und dazu noch falsch) macht.