Hallo leute, ich habe mal ein paar Fragen bezüglich des Haussystems das ich grad versuch zu erstellen mit dem Tutorial von Jeffry
[URL = [ SCRIPTING ] [jTuT] Fraktions-Fahrzeug-System mit MySQL R39-2]Hier[/URL]
Gut, ich bekomme schonmal keine Warns/Errors, jedoch gibt es für mich paar sachen die ich nicht verstehe und im Thread vom Tutorial das zu posten, würde unschön aussehen.
Jeffry:
Ich habe das jetzt so gemacht, man kann ein Haus erstellen mit /Createhouse [IntID] [Virtuelle Welt] [Level] [Preis]
Mein Enum sieht so aus:
{
Besitzer[34],
Float:PosX,//Position an der man steht(später der eingang)
Float:PosY,
Float:PosZ,
Float:IntX,(Position des Interior da wo man beim reingehen spawn)
Float:IntZ,
Float:IntY,
IntID,
VID,
Lock,
Kaufpreis,
Mietpreis,
Level,
Gekauft
}
So aber jetzt möchte ich es so haben, das wenn man bsp die Interior ID 5 eingibt(Mad Dogg Villa) das die IntX/Y/Z Daten bzw Koordinaten dann halt auch davon in die Datenbank eingetragen werden, also das ich sie beim Command nicht eingeben muss.
Hier mal mein Command:
{
// if(MAX_HOUSE-1) != 0) return SendClientMessage(playerid, error, "Es können keine weiteren Häuser erstellt werden.");//Hier würde er mir 4 Errors anzeigen
new Int, V, hLv, hPreis;
if(sscanf(params,"dddd",Int, V, hLv, hPreis))return SendClientMessage(playerid,info,"/Createhouse [IntID] [Virtuelle Welt] [Level] [Preis]");
if(SpielerInfo[playerid][pAdmin] < 5) return SendClientMessage(playerid, error, "Du bist kein Admin!");
for(new i=0; i<MAX_HOUSE; i++)
{
new Float:Pos[3];
GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
hInfo[i][PosX] = Pos[0];
hInfo[i][PosY] = Pos[1];
hInfo[i][PosZ] = Pos[2];
hInfo[i][IntID] = Int;
hInfo[i][VID] = V;
hInfo[i][Level] = hLv;
hInfo[i][Kaufpreis] = hPreis;
hInfo[i][Mietpreis] = 0;
hInfo[i][Gekauft] = 0;
hInfo[i][Lock] = 0;
format(hInfo[i][Besitzer], 34, "Besitzer: Niemand");
new query[256];
format(query, sizeof(query), "INSERT INTO House (ID, Besitzer, Level, PosX, PosY, PosZ, IntX,IntY,IntZ, IntID, VID, Lock, Mietpreis, Kaufpreis, Gekauft) VALUES ('%s', '%d', '%f', '%f', '%f', '%f', '%f', '%f', '%d', '%d', '%d', '%d', '%d', '%d')",
i, hInfo[i][Besitzer], hInfo[i][Level], hInfo[i][PosX], hInfo[i][PosY], hInfo[i][PosZ], hInfo[i][IntX], hInfo[i][IntY], hInfo[i][IntZ], hInfo[i][IntID], hInfo[i][VID], hInfo[i][Lock], hInfo[i][Mietpreis], hInfo[i][Kaufpreis], hInfo[i][Gekauft], i);
mysql_tquery(handle, query);
return SendClientMessage(playerid, 0x00FF00FF, "Haus wurde erfolgreich gespeichert.");
}
return 1;
}
Hier einmal die Errors:
C:\Users\Tobi\Desktop\samp037_svr_RC3_win32\gamemodes\newrl.pwn(5021) : error 029: invalid expression, assumed zero
C:\Users\Tobi\Desktop\samp037_svr_RC3_win32\gamemodes\newrl.pwn(5021) : warning 215: expression has no effect
C:\Users\Tobi\Desktop\samp037_svr_RC3_win32\gamemodes\newrl.pwn(5021) : error 001: expected token: ";", but found ")"
C:\Users\Tobi\Desktop\samp037_svr_RC3_win32\gamemodes\newrl.pwn(5021) : error 029: invalid expression, assumed zero
C:\Users\Tobi\Desktop\samp037_svr_RC3_win32\gamemodes\newrl.pwn(5021) : fatal error 107: too many error messages on one line
Zeile:
if(MAX_HOUSE-1) != 0) return SendClientMessage(playerid, error, "Es können keine weiteren Häuser erstellt werden.");
Gut, nun zu Nr 2:
Der /deltehouse Command soll so aufgebaut sein, dass wenn man in der Nähe eines erstellten Haus steht(3.0 Radius) dies dann gelöscht wird.
Leider hab ich bis jetzt nur eine Abfrage ob er in der Nähe ist, leider weiß ich nicht wie ich dann genau dieses Haus lösche..
Command sieht momentan so aus:
{
new Float:dPos[3];
GetPlayerPos(playerid, dPos[0],dPos[1],dPos[2]);
if(SpielerInfo[playerid][pAdmin] < 5) return SendClientMessage(playerid, error, "Du bist kein Admin!");
for(new i=0; i<MAX_HOUSE; i++)
{
if(IsPlayerInRangeOfPoint(playerid, 3.0, hInfo[i][PosY],hInfo[i][PosX],hInfo[i][PosZ]))
{
hInfo[i][PosX] = 0;
hInfo[i][PosY] = 0;
hInfo[i][PosZ] = 0;
hInfo[i][IntX] = 0;
hInfo[i][IntY] = 0;
hInfo[i][IntZ] = 0;
hInfo[i][IntID] = 0;
hInfo[i][VID] = 0;
hInfo[i][Level] = 0;
hInfo[i][Kaufpreis] = 0;
hInfo[i][Mietpreis] = 0;
hInfo[i][Gekauft] = 0;
hInfo[i][Lock] = 0;
format(query, sizeof(query), "DELETE FROM House WHERE ID = '%d'", i);
mysql_tquery(handle, query);
return SendClientMessage(playerid, erfolg, "Haus wurde erfolgreich gelöscht.");
}
else {
SendClientMessage(playerid, error, "Du bist nicht in der Nähe eines Hauses!");
}
}
return 1;
}
//Edit: Was ich gerade gemerkt habe, es wird garkein Haus in der Tabelle angelegt
{
new rows;
rows = cache_num_rows();
for(new i=0; i<rows; i++)
{
//Fahrzeug existiert in der Datenbank, wir laden die Daten jetzt aus dem Cache.
cache_get_field_content(0, "Besitzer", hInfo[i][Besitzer],handle,34);
hInfo[i][Level] = cache_get_field_content_int(i, "Level");
hInfo[i][PosX] = cache_get_field_content_float(i, "PosX");
hInfo[i][PosY] = cache_get_field_content_float(i, "PosY");
hInfo[i][PosZ] = cache_get_field_content_float(i, "PosZ");
hInfo[i][IntX] = cache_get_field_content_float(i, "IntX");
hInfo[i][IntY] = cache_get_field_content_float(i, "IntY");
hInfo[i][IntZ] = cache_get_field_content_float(i, "IntZ");
hInfo[i][IntID] = cache_get_field_content_int(i, "IntID");
hInfo[i][VID] = cache_get_field_content_int(i, "VID");
hInfo[i][Lock] = cache_get_field_content_int(i, "Lock");
hInfo[i][Mietpreis] = cache_get_field_content_int(i, "Mietpreis");
hInfo[i][Kaufpreis] = cache_get_field_content_int(i, "Kaufpreis");
hInfo[i][Gekauft] = cache_get_field_content_int(i, "Gekauft");
if(i == MAX_HOUSE-1) return print("Es können keine weiteren Häuser geladen werden, Limit wurde erreicht.");
}
return 1;
}
LoadHouse()
{
CreateHouseTable();
mysql_tquery(handle, "SELECT * FROM Hausdaten ORDER BY ID ASC", "LoadHouse_Data");
return 1;
}
forward SaveAllHouses();
public SaveAllHouses()
{
new query[256];
for(new i=0; i<MAX_HOUSE; i++)
{
format(query, sizeof(query), "UPDATE House SET Besitzer = '%s', Level = '%d', PosX = '%f', PosY = '%f', PosZ = '%f', IntX = '%f', IntY = '%f',IntZ = '%f',IntID = '%d', VID = '%d', Lock = '%d', Mietpreis = '%d', Kaufpreis = '%d', Gekauft = '%d' WHERE ID = '%d'",
hInfo[i][Besitzer], hInfo[i][Level], hInfo[i][PosX], hInfo[i][PosY], hInfo[i][PosZ], hInfo[i][IntX], hInfo[i][IntY], hInfo[i][IntZ], hInfo[i][IntID], hInfo[i][VID], hInfo[i][Lock], hInfo[i][Mietpreis], hInfo[i][Kaufpreis], hInfo[i][Gekauft], i);
mysql_tquery(handle, query);
}
return 1;
}
Hier ist doch alles richtig oder?
Falls ihr irgendwas nicht verstanden habt könnt ihr das ja ins Thread schreiben, oder falls ihr weitere Fehler seht..
Ich wäre euch dafür sehr dankbar.
Jede hilfe kann ich gebrauchen
Ich danke schon mal im vorraus !
Mit freundlichen Grüßen