Du musst natürlich noch Speichern bzw Abfragen ob das Gebiet ein Besitzer hat, solange du das nicht machst, ist es immer kaufbar.
Gebiete kaufbar
- Blackshadowscript
- Geschlossen
- Erledigt
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
-
-
phN ich glaube kaum das du dir alle beiträge angesehen hast. Ich lass die Gebiete in ein Enum und das Enum lass ich dann in den sInfo abspeichern.
-
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. -
phN wie mach ich das denn nun das es auch im System gespeichert ist?
-
Du musst die Gebiete, wie einen Spieler nur in einer anderen Tabelle, auch speichern (bei Änderung) und laden (beim Server-Start) lassen.
-
also muss ich eine extra tabele machen wo nur die gebiete drin sind mit MinX MinY und so?
-
Genau.
-
Ich habe folgendes:
Weiter bin ich nicht
-
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: -
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. -
breadfish.de
Hat das Thema geschlossen.