Beitrag von Blackshadowscript ()
Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
Gib bei OnGameModeInit loadplayercars(); ein compile neu und starte Server neu. Sollte dann gehen. Falls nicht gib loadplayercars(playerid); ein.
MFG _J0K3R_
konnte nicht gefunden werden
So wie es aussieht machst du ja die Tutorial's von MrMonatHD. Habe selbst das System von ihm aber bei mir wurde daraus ein Mietwagen System wo die Besitzer nicht geladen werden mussten.
Wer mir das gerade nochmal genau angucken und dir dann nochmal antworten.
*Habe nochmals geguckt, lösche aus OnGameModeInit das was ich gesagt habe was du hinschreiben sollt(loadplayercars();) Schreibe stattdessen bei OnPlayerConnect loadplayercars(playerid); hin.(Nicht getestet weis nicht ob es funktioniert)
Falls dass nicht funk gib loadplayercars(); bei OnPasswortResponse ein(wenn Passwort richtig ist)(auch nicht getestet)
Wie ich schon sagte habe ich eine andere Form dieses Systems daher weis ich nicht genau ob es Funktioniert.
MFG _J0K3R_
*#edit Neue Lösung
Das ist nicht von MrMonatHD ich habe es ohne tutorial gemacht
OK hab mir nur gedacht da bei dem das System rig genauso aussieht
Dort wo der Spieler sich richtig eingeloggt hat (sprich => Kennwort korrekt), schreibe das hin:
loadplayercars(playerid);
Das Callback muss so aussehen, funktioniert es dann?
public OnPlayerCarsLoad(playerid)
{
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=getFreeCarID();
AutoInfo[id] [model]=cache_get_field_content_int(i,"Besitzer",dbhandle);
AutoInfo[id][Besitzer]=cache_get_field_content_int(i,"model",dbhandle);
AutoInfo[id][c_x]=cache_get_field_content_float(i,"c_x",dbhandle);
AutoInfo[id][c_y]=cache_get_field_content_float(i,"c_y",dbhandle);
AutoInfo[id][c_z]=cache_get_field_content_float(i,"c_z",dbhandle);
AutoInfo[id][c_r]=cache_get_field_content_float(i,"c_r",dbhandle);
AutoInfo[id] [db_id]=cache_get_field_content_int(i,"id",dbhandle);
AutoInfo[id][Fahrzeugid]=CreateVehicle(AutoInfo[id][model],AutoInfo[id][c_x],AutoInfo[id][c_y],AutoInfo[id][c_z],AutoInfo[id][c_r],-1,-1,-1);
}
return 1;
}
Autos werden in der db abgespeichert aber nicht wieder ausgelesen.
Mein Code:
Enum:
enum AutoSystemEnum{
Fahrzeugid,
Besitzer[MAX_PLAYER_NAME],
model,
Float:c_x,
Float:c_y,
Float:c_z,
Float:c_r,
db_id
}
new AutoInfo[50] [AutoSystemEnum];
meine public auto:
for(new i=0; i<=sizeof (AutoInfo); i++)
{
if(AutoInfo [i] [Fahrzeugid]==0)continue;
if(AutoInfo[i] [Besitzer]!=sInfo[playerid] [db_id])continue;
GetVehiclePos(AutoInfo[i][Fahrzeugid],AutoInfo[i][c_x],AutoInfo[i][c_y],AutoInfo[i][c_z]);
GetVehicleZAngle(AutoInfo[i] [Fahrzeugid],AutoInfo[i][c_r]);
new query[128];
format(query,sizeof(query),"UPDATE Autos SET x='%f',y='%f',z='%f',r='%f' WHERE db_id='%i' ",AutoInfo[i] [c_x],AutoInfo[i] [c_y],AutoInfo[i] [c_z],AutoInfo[i] [c_r],AutoInfo[i] [db_id]);
mysql_function_query(dbhandle,query,false," "," ");
DestroyVehicle(AutoInfo[i] [Fahrzeugid]);
AutoInfo[i] [Fahrzeugid]=0;
break;
}
Auto erstellen/Auto löschen:
ocmd:autosetzen(playerid,params[])
{
if(!isAdmin(playerid,8)) return SendClientMessage(playerid,helbau,"Du hast nicht die passende Rechte dafür!");
new mID,pID;
if(sscanf(params,"ui",pID,mID))return SendClientMessage(playerid,helbau,"Benutze: /autosetzen [playerid] [model]");
if(mID<400||mID>611)return SendClientMessage(playerid,rot,"Ungültige Modelid!");
new Float:X,Float:Y,Float:Z,Float:R;
GetPlayerPos(pID,X,Y,Z);
GetPlayerFacingAngle(pID,R);
new string[128], string1[128];
format(string, sizeof(string), "INSERT INTO Autos (Besitzer, model, x, y, z, r) VALUES ('%i', '%i', '%f', '%f', '%f', '%f')",pID,mID,X,Y,Z,R);
format(string1, sizeof(string1), "Du hast erfolgreich das Auto mit der Model ID %d erstellt!", mID);
SendClientMessage(playerid, grün, string1);
CreateVehicle(mID, X, Y, Z, R, -1, -1, -1);
mysql_function_query(dbhandle,string,false," "," ");
return 1;
}
ocmd:autoentfernen(playerid,params[])
{
if(!isAdmin(playerid,8))return SendClientMessage(playerid,helbau,"Du hast nicht die passende Rechte dafür!");
if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid,grün,"Sie befinden sich in kein Fahrzeug/Zug!");
DestroyVehicle(GetPlayerVehicleID(playerid));
return 1;
}
Die Abfrage fürs laden der Autos aus der DB:
public OnPlayerCarsLoad(playerid)
{
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=getFreeCarID();
AutoInfo[id] [model]=cache_get_field_content_int(i,"Besitzer",dbhandle);
AutoInfo[id][Besitzer]=cache_get_field_content_int(i,"model",dbhandle);
AutoInfo[id][c_x]=cache_get_field_content_float(i,"c_x",dbhandle);
AutoInfo[id][c_y]=cache_get_field_content_float(i,"c_y",dbhandle);
AutoInfo[id][c_z]=cache_get_field_content_float(i,"c_z",dbhandle);
AutoInfo[id][c_r]=cache_get_field_content_float(i,"c_r",dbhandle);
AutoInfo[id] [db_id]=cache_get_field_content_int(i,"id",dbhandle);
AutoInfo[id][Fahrzeugid]=CreateVehicle(AutoInfo[id][model],AutoInfo[id][c_x],AutoInfo[id][c_y],AutoInfo[id][c_z],AutoInfo[id][c_r],-1,-1,-1);
}
return 1;
}
loadplayercars(playerid)
{
new query[128];
format(query,sizeof(query),"SELECT * FROM Autos WHERE Besitzer='%i' ",sInfo[playerid] [db_id]);
mysql_function_query(dbhandle,query,true,"OnPlayerCarsLoad","i"playerid);
return 1;
}
public OnPasswordResponse(playerid)
{
new num_fields,num_rows;
cache_get_data(num_rows,num_fields,dbhandle);
if(num_rows==1) //Passwort richtig
{
sInfo[playerid][eingeloggt] = 1;
SendClientMessage(playerid,helbau,"Du hast dich erfolgreich eingeloggt!");
sInfo[playerid][level] = cache_get_field_content_int(0,"level",dbhandle);
SetPlayerScore(playerid,sInfo[playerid][level]);
sInfo[playerid][Adminlevel] = cache_get_field_content_int(0,"Adminlevel",dbhandle);
SetPlayerMoney(playerid,cache_get_field_content_int(0,"money",dbhandle));
sInfo[playerid] [db_id] = cache_get_field_content_int(0,"id",dbhandle);
loadplayercars(playerid);
ich weiss leider nicht wo da der fehler ist wieso die in der db abgespeichert werden aber nicht wieder ausgelesen