cache_get_field_content(0, "IP", PlayerInfo[playerid][pIP], handle, 16);
Beiträge von Jeffry
-
-
Du musst die IP mit
cache_get_field_content
auslesen, nicht mit cache_get_field_content_int.(Fehler beim Laden)
-
new Float:sxpos[MAX_PLAYERS];
new Float:sypos[MAX_PLAYERS];
new Float:szpos[MAX_PLAYERS];Und
new Menu:estm01; -
Dann hast du irgendwo im Code einen Timer laufen, der die Zeit neu setzt.
Such da mal danach (SetPlayerTime bzw. SetWorldTime) und poste was du dazu findest. -
Dann füge da drüber das ein:
COMMAND:zeit(playerid, params[])
{
new h, m;
if(sscanf(params, "dd", h, m)) return SendClientMessage(playerid, 0xFF0000FF, "Nutze: /zeit [Stunde] [Minute]");
if(h > 23 || h < 0 || m > 59 || m < 0) return SendClientMessage(playerid, 0xFF0000FF, "Ungültiger Wert");
for(new i=0; i<MAX_PLAYERS; i++) if(IsPlayerConnected(i)) SetPlayerTime(i, h, m);
return 1;
} -
Poste bitte mal einen Beispielbefehl aus deinem Code.
-
Im OnPlayerCarsLoad die Schleife zu:
for(new i=0; i<num_rows; i++)
{
cache_get_field_content(i,"besitzer",cInfo[id][besitzer],dbhandle,50);
cInfo[id][model]=cache_get_field_content_int(i,"model",dbhandle);
cInfo[id][c_x]=cache_get_field_content_float(i,"x",dbhandle);
cInfo[id][c_y]=cache_get_field_content_float(i,"y",dbhandle);
cInfo[id][c_z]=cache_get_field_content_float(i,"z",dbhandle);
cInfo[id][c_r]=cache_get_field_content_float(i,"r",dbhandle);
cInfo[id][db_id]=cache_get_field_content_int(i,"id",dbhandle);
cInfo[id][ci_tank]=cache_get_field_content_int(i,"tank",dbhandle);
cInfo[id][id_x]=CreateVehicle(cInfo[id][model],cInfo[id][c_x],cInfo[id][c_y],cInfo[id][c_z],cInfo[id][c_r],-1,-1,-1);
tank[cInfo[id][id_x]]=100;
}Und:
{507,2119.9333,1397.8513,10.6391,179.5709,6500,0,1,1"Elegant",45},
zu:
{507,2119.9333,1397.8513,10.6391,179.5709,6500,0,1,1,"Elegant",45},enum carEnum{
id_x,
model,
besitzer,
Float:c_x,
Float:c_y,
Float:c_z,
Float:c_r,
Color_1,
Color_2,
db_id,
ci_tankHatte dir das oben noch rein editiert, hast du aber wohl nicht mehr gesehen.
-
public SavePlayerCar(playerid)
{
new pname[MAX_PLAYER_NAME], path[200];
GetPlayerName(playerid, pname, sizeof(pname));
format(path, sizeof(path), "/PlayerCars/%s.ini", pname);
dini_IntSet(path, "Fahrzeugid", cInfo[playerid][id_x]);
dini_Set(path, "besitzer", cInfo[playerid][besitzer]);
dini_FloatSet(path, "x", cInfo[playerid][c_x]);
dini_FloatSet(path, "y", cInfo[playerid][c_y]);
dini_FloatSet(path, "z", cInfo[playerid][c_z]);
dini_FloatSet(path, "r", cInfo[playerid][c_r]);
return 1;
} -
new h, m;
if(sscanf(params, "dd", h, m)) return SendClientMessage(playerid, 0xFF0000FF, "Nutze: /befehl [Stunde] [Minute]");
if(h > 23 || h < 0 || m > 59 || m < 0) return SendClientMessage(playerid, 0xFF0000FF, "Ungültiger Wert");
for(new i=0; i<MAX_PLAYERS; i++) if(IsPlayerConnected(i)) SetPlayerTime(i, h, m); -
//Autohaus Cars notiz
enum autohauscarEnum{
model,
Float:c_x,
Float:c_y,
Float:c_z,
Float:c_r,
c_preis,
ah_id,
Color_1,
Color_2,
c_name[50],
c_tank,
id_x //Das hier ganz am Ende, weil du ihm keinen Wert gibst.
}cInfo[id][c_name]=cache_get_field_content(i,"name",dbhandle); //zeile 1673
zu:
cache_get_field_content(i,"name",cInfo[id][c_name],dbhandle,50); //zeile 1673Was bleibt dann an Errors übrig?
-
Hier eine Problemlösung für die OS Version : CentOS 7.1 , 6.X
Danke dir, ich habe es in den Hinweisen hinzugefügt.
Gegebenenfalls kann mir jemand der auch CentOS verwendet den Vorgang bestätigen, falls dort das Problem auch vorkam. -
Nein?

-
Da haben wir ja den Fehler.
Dort fehlt:
GetPlayerName(playerid, PlayerInfo[playerid][pName], MAX_PLAYER_NAME); -
@GorillaZ: Der Code wird nicht aufgerufen. Und die Änderung hat er gemacht.
Scene-Sector: Es geht darum, dass ich sehen will, was er selektieren kann.
Poste bitte dein OnPlayerConnect. -
public OnPlayerRequestClass(playerid)
{
//Wenn der Spieler die Class-Selection betritt prüfe, ob er bereits eingeloggt ist
if(!PlayerInfo[playerid][pLoggedIn])
{
//Wenn nicht, dann prüfe ob der Spieler ein Konto hat
//Dazu wird ein Query gesendet und ein neues Callback aufgerufen
//%e steht für einen geprüften String (sollte anstatt %s in Queries verwendet werden)
new query[128];
mysql_format(handle, query, sizeof(query), "SELECT id FROM users WHERE name = '%e'", PlayerInfo[playerid][pName]);
//Das Query wird abgesendet und die playerid an OnUserCheck übergeben
mysql_pquery(handle, query, "OnUserCheck", "d", playerid);
printf("Select Query: %s", query);
}
return 1;
}Was steht so im Server Log?
Poste bitte dein OnUserCheck dazu, und einen Screenshot der Daten aus der Datenbank.
-
Nein, das ist kein Fehler. Ich lese nur die ID aus, das reicht um herauszufinden, ob der Spieler eine Zeile hat, man braucht nicht die ganze Zeile zu selektieren.
Du nutzt ja den WHERE Teil um den Spieler zu finden.Der Code passt.
Schalte mal den Debug Modus an und poste dann was im MySQL Log steht, wenn der Fehler auftritt. -
Poste den Code von deinem OnPlayerRequestClass (dort wo du den Dialog anzeigst).
Zum OnDialogResponse:
Beim mysql_format musst du ganz hinten "inputtext" mit "buf" ersetzen. -
Dann musst du es doch über die Position machen, anders geht es dann nicht, wenn du keinen Zugriff auf den Code hast.
-
Weil du zwischen den Anführungszeichen die Bezeichnungen für den Typ hinzufügen musst (s ist String, d ist Integer, f ist Float,...).
-
Versuche es so:
if(dialogid == DIALOG_VERSICHERN)
{
new string[512];
if(response == 1)
{
for(new i=0; i<MAX_AUTOS; i++)
{
new pname[MAX_PLAYER_NAME], id;
GetPlayerName(playerid, pname, MAX_PLAYER_NAME);
if(!strcmp(CarInfo[i][Besitzer], pname) && strlen(CarInfo[i][Besitzer]) > 2 && CarInfo[i][modelID] > 0)
{
format(string, sizeof(string), "%s%s (ID: %d)\n", string, PlayerVehicle[CarInfo[i][modelID]-400], id);
id++;
}
}
if(id == 0) SendClientMessage(playerid, 0xFF0000FF, "Error: Du hast kein Fahrzeug.");
else if(listitem == 0) ShowPlayerDialog(playerid, DIALOG_VERSICHERUNG1, DIALOG_STYLE_LIST, "Welches Fahrzeug?", string, "Ok", "Abbrechen");
else if(listitem == 1) ShowPlayerDialog(playerid, DIALOG_VERSICHERUNG2, DIALOG_STYLE_LIST, "Welches Fahrzeug?", string, "Ok", "Abbrechen");
else if(listitem == 2) ShowPlayerDialog(playerid, DIALOG_VERSICHERUNG3, DIALOG_STYLE_LIST, "Welches Fahrzeug?", string, "Ok", "Abbrechen");
return 1;
}
else
{
SendClientMessage(playerid, error, "Du hast den Vorgang abgebrochen.");
}
}Du hattest das return an der falschen Stelle drin. Ich habe den Code auch gleich etwas übersichtlicher gemacht.