Hallo alle zusammen,
ich habe gestern und heute mich mal an ein Haus System ran gesetzt und ich habe Manuel in der Datenbank Koordinaten eingefügt allerdings kommt nichts im Spiel. Das wundert mich bisschen und bräuchte dabei ein bisschen Hilfe. Code weis ich jetzt nicht welchen ich schicken soll also schick ich einfach mal erst einen wenn ich einen genauen Code schnipsel wissen wollt.
Datenbank wird nicht ausgelesen
- TheTutoFreak
- 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
-
-
Am besten den Code, wo die Häuser ausgelesen werden und erstellt werden sollen.
-
Das?
enum hInfo{
Float:h_x,
Float:h_y,
Float:h_z,
Float:ih_x,
Float:ih_y,
Float:ih_z,
hInterior,
hBesitzer[MAX_PLAYER_NAME],
hID,
hPickup,
Text3D:hText,
hPreis
}
new HouseInfo[MAX_HOUSES][hInfo];
//HäuserLaden
new query[128];
format(query,sizeof(query),"SELECT * FROM haus");
mysql_function_query(dbhandle,query,true,"OnHousesLoad","");
getFreeHouseID()
{
for(new i=0; i<sizeof(HouseInfo); i++)
{
if(HouseInfo[i][hID] == 0) return 1;
}
return 1;
}public OnHousesLoad()
{
new num_fields,num_rows;
cache_get_data(num_rows,num_fields,dbhandle);
if(!num_rows)return 1;
for(new i=0; i<num_rows; i++)
{
new id = getFreeHouseID();
HouseInfo[id][h_x] = cache_get_field_content_float(i,"h_x",dbhandle);
HouseInfo[id][h_y] = cache_get_field_content_float(i,"h_y",dbhandle);
HouseInfo[id][h_z] = cache_get_field_content_float(i,"h_z",dbhandle);
HouseInfo[id][ih_x] = cache_get_field_content_float(i,"ih_x",dbhandle);
HouseInfo[id][ih_y] = cache_get_field_content_float(i,"ih_y",dbhandle);
HouseInfo[id][ih_z] = cache_get_field_content_float(i,"ih_z",dbhandle);
HouseInfo[id][hInterior] = cache_get_field_content_int(i,"h_interior",dbhandle);
new tmp_name[MAX_PLAYER_NAME];
cache_get_field_content(i,"besitzer",tmp_name,dbhandle);
strmid(HouseInfo[id][hBesitzer],tmp_name,0,sizeof(tmp_name),sizeof(tmp_name));
HouseInfo[id][hID] = cache_get_field_content_int(i,"id",dbhandle);
new string[128];
if(!strlen(HouseInfo[id][hBesitzer]))
{
HouseInfo[id][hPickup] = CreatePickup(1273,1,HouseInfo[id][h_x],HouseInfo[id][h_y],HouseInfo[id][h_z],-1);
format(string,sizeof(string),"Zum Verkauf\nPreis: %i$\n/buyhouse",HouseInfo[id][hPreis]);
HouseInfo[id][hText] = Create3DTextLabel(string, Weis, HouseInfo[id][h_x],HouseInfo[id][h_y],HouseInfo[id][h_z], 10, 0, 1);
}
else
{
HouseInfo[id][hPickup] = CreatePickup(1239,1,HouseInfo[id][h_x],HouseInfo[id][h_y],HouseInfo[id][h_z],-1);
format(string,sizeof(string),"Besitzer: %s\nWert: %i$\n/enter",HouseInfo[id][hBesitzer],HouseInfo[id][hPreis]);
HouseInfo[id][hText] = Create3DTextLabel(string, Weis, HouseInfo[id][h_x],HouseInfo[id][h_y],HouseInfo[id][h_z], 10, 0, 1);
}
}
return 1;
} -
Guten Abend.
new query[128];
format(query,sizeof(query),"SELECT * FROM haus");
mysql_function_query(dbhandle,query,true,"OnHousesLoad","");zu
mysql_function_query(dbhandle,"SELECT * FROM haus",true,"OnHousesLoad",""); -
Guten Abend.
new query[128];
format(query,sizeof(query),"SELECT * FROM haus");
mysql_function_query(dbhandle,query,true,"OnHousesLoad","");zu
mysql_function_query(dbhandle,"SELECT * FROM haus",true,"OnHousesLoad","");
Wo ist den da der Unterschied ?TheTutoFreak: debugge mal ein bisschen lass dir num_rows, und jeweils immer die hID printen
-
Und wie genau mache ich das?
-
Debugge es so:
public OnHousesLoad()
{
printf("OnHousesLoad aufgerufen.");
new num_fields,num_rows;
cache_get_data(num_rows,num_fields,dbhandle);
printf("num_rows: %d", num_rows);
if(!num_rows)return 1;
for(new i=0; i<num_rows; i++)
{
printf("i: %d", i);
new id = getFreeHouseID();
printf("id: %d", id);
HouseInfo[id][h_x] = cache_get_field_content_float(i,"h_x",dbhandle);
HouseInfo[id][h_y] = cache_get_field_content_float(i,"h_y",dbhandle);
HouseInfo[id][h_z] = cache_get_field_content_float(i,"h_z",dbhandle);
HouseInfo[id][ih_x] = cache_get_field_content_float(i,"ih_x",dbhandle);
HouseInfo[id][ih_y] = cache_get_field_content_float(i,"ih_y",dbhandle);
HouseInfo[id][ih_z] = cache_get_field_content_float(i,"ih_z",dbhandle);
HouseInfo[id][hInterior] = cache_get_field_content_int(i,"h_interior",dbhandle);
printf("Koordinaten: %f/%f/%f", HouseInfo[id][h_x],HouseInfo[id][h_y],HouseInfo[id][h_z]);
new tmp_name[MAX_PLAYER_NAME];
cache_get_field_content(i,"besitzer",tmp_name,dbhandle);
strmid(HouseInfo[id][hBesitzer],tmp_name,0,sizeof(tmp_name),sizeof(tmp_name));
HouseInfo[id][hID] = cache_get_field_content_int(i,"id",dbhandle);
new string[128];
printf("Besitzer: %s", HouseInfo[id][hBesitzer]);
if(!strlen(HouseInfo[id][hBesitzer]))
{
HouseInfo[id][hPickup] = CreatePickup(1273,1,HouseInfo[id][h_x],HouseInfo[id][h_y],HouseInfo[id][h_z],-1);
format(string,sizeof(string),"Zum Verkauf\nPreis: %i$\n/buyhouse",HouseInfo[id][hPreis]);
HouseInfo[id][hText] = Create3DTextLabel(string, Weis, HouseInfo[id][h_x],HouseInfo[id][h_y],HouseInfo[id][h_z], 10, 0, 1);
}
else
{
HouseInfo[id][hPickup] = CreatePickup(1239,1,HouseInfo[id][h_x],HouseInfo[id][h_y],HouseInfo[id][h_z],-1);
format(string,sizeof(string),"Besitzer: %s\nWert: %i$\n/enter",HouseInfo[id][hBesitzer],HouseInfo[id][hPreis]);
HouseInfo[id][hText] = Create3DTextLabel(string, Weis, HouseInfo[id][h_x],HouseInfo[id][h_y],HouseInfo[id][h_z], 10, 0, 1);
}
printf("string: %s", string);
}
printf("Fertig.");
return 1;
}Dann poste was im Server Log steht, wenn du die Häuser laden lässt.
Gegebenenfalls auch gleich das, was im MySQL Log steht. -
server_log:
Code
Alles anzeigen---------- Loaded log file: "server_log.txt". ---------- SA-MP Dedicated Server ---------------------- v0.3.7, (C)2005-2015 SA-MP Team [12:09:31] [12:09:31] Server Plugins [12:09:31] -------------- [12:09:31] Loading plugin: mysql [12:09:31] >> plugin.mysql: R39-3 successfully loaded. [12:09:31] Loaded. [12:09:31] Loading plugin: sscanf [12:09:31] [12:09:31] =============================== [12:09:31] sscanf plugin loaded. [12:09:31] Version: 2.8.1 [12:09:31] (c) 2012 Alex "Y_Less" Cole [12:09:31] =============================== [12:09:31] Loaded. [12:09:31] Loaded 2 plugins. [12:09:31] [12:09:31] Filterscripts [12:09:31] --------------- [12:09:31] Loading filterscript 'Autos.amx'... [12:09:31] -------------------------------------- [12:09:31] |Vehicle spawner loaded! | [12:09:31] -------------------------------------- [12:09:31] Loading filterscript 'BizSystem.amx'... [12:09:31] Loaded 2 filterscripts. [12:09:31] ------------------------------------------- [12:09:31] RealLife Evolution script by TheTutoFreak [12:09:31] ------------------------------------------- [12:09:31] Number of vehicle models: 50 [12:09:59] [connection] 127.0.0.1:63500 requests connection cookie. [12:10:00] Incoming connection: 127.0.0.1:63500 id: 0 [12:10:00] [join] TheTutoFreak has joined the server (0:127.0.0.1) [12:10:04] id: 1 / Geschlossen: 0
mysql_log:Code[12:09:31] [ERROR] CMySQLConnection::Connect - (error #1045) Access denied for user 'samp'@'localhost' (using password: YES) [12:09:31] [ERROR] CMySQLConnection::Connect - (error #1045) Access denied for user 'samp'@'localhost' (using password: YES) [12:09:31] [ERROR] CMySQLConnection::Connect - (error #1045) Access denied for user 'samp'@'localhost' (using password: YES) [12:09:31] [ERROR] CMySQLConnection::Connect - (error #1045) Access denied for user 'samp'@'localhost' (using password: YES)
-
Da haben wir doch den Fehler schon.
Nimm den root Benutzer ohne Passwort:
#define db_host "127.0.0.1"
#define db_user "root"
#define db_pass ""
#define db_db "DATENBANKNAME"Das ist in 99% aller Fälle standardmäßig so eingestellt.
Dein user "samp" wird nicht die richtigen Berechtigungen haben, das ist auf localhost (dein Rechner) so eingestellt, standardmäßig zumindest.
Deshalb benutze, den root - User ohne Passwort, der hat ALLE Berechtigungen. Dem kannst du später auch, je nach Client, ein Passwort geben. -
Danke es hat geklappt.
-
-
breadfish.de
Hat das Thema geschlossen.