hier?....
Nein...einfach oben kurz unter der Eingabe von dem Befehl
hier?....
Nein...einfach oben kurz unter der Eingabe von dem Befehl
Nein...einfach oben kurz unter der Eingabe von dem Befehl
welchen Befehl es ist ein Dialog
if(dialogid == DIALOG_AUTOHAUS)
{
//new FreeSlot = -1;
new FreeSlot;
// HIER ?
if(!response){
ForAllPlayers(i){
if(IsPlayerConnected(i)){
SetVehicleParamsForPlayer(Kaufliste[Spectating[playerid]][Carid], i, 0, 0);
}}
RemovePlayerFromVehicle(playerid);
}
..
Sag es ihm doch einfach wie, anstatt fünf mal hin und her zu posten...
@PeeteeTV:
if(preis <= PlayerInfo[playerid][pCash] && PlayerInfo[playerid][pCarLimit] == 0)
Zu
printf("cash %d / limit %d", PlayerInfo[playerid][pCash], PlayerInfo[playerid][pCarLimit]);
if(preis <= PlayerInfo[playerid][pCash] && PlayerInfo[playerid][pCarLimit] == 0)
Was wird geprintet, wenn du den Dialog ab schickst?
[22:56:40] Fahrzeugspeicherung: Beginning Spawn.
[22:56:40] Fahrzeugspeicherung: End Spawn.
[22:57:32] cash 25594360 / limit 1
...
limit 1
Ja..aus dem Grund kannst du kein Auto kaufen.
if(preis <= PlayerInfo[playerid][pCash] && PlayerInfo[playerid][pCarLimit] == 0)
Schreib die Zeile so:
if(preis <= PlayerInfo[playerid][pCash] && PlayerInfo[playerid][pCarLimit] == 1)
Dann gehts
mfg.
if(preis <= PlayerInfo[playerid][pCash] && PlayerInfo[playerid][pCarLimit] == 0)
Ich möchte noch erwähnen bevor ich das ändere unzwar wenn ich mich beim Server regestriere wird das Auto schon also irgendein random auto ohne daten in die db gespeichert
und dann wenn ich das auto hab und verkaufe hab ich das auto was von anfang an erstellt wurde und dann kann ich irgendwie keine mehr kaufen meinst du das hat damit zutun?
Kaliber:
Das macht keinen Sinn. Dann kann er sich ja unendlich viele Fahrzeuge kaufen, wobei immer das zuletzt erstellte wieder überschrieben wird.
Wie du siehst, steht im dialog drin, dass PlayerInfo[playerid][pCarLimit] auf 1 gesetzt wird, wenn ein Fahrzeug gekauft wird, wenn du dann abfragst ob es 1 ist, dann kann man sich kein Fahrzeug kaufen wenn man keins hat, und wenn man eines hat, dann kann man sich eins kaufen. Das macht keinen Sinn, da letzteres nie erreicht wird.
Außerdem war ein paar Zeilen drunter die Abfrage ob es 1 ist nochmal drin, sprich es hätte ohnehin nicht funktioniert, gezahlt hätte er zwar, aber das wars auch.
Problem ist bei dem Code den er verwendet, dass er voller Fehler ist, und daher die Variablen z.T. nicht korrekt zurückgesetzt werden.
Deshalb machen wir es hier auch mal wie beim Problem zuvor, dass wir die Position des Fahrzeugs das er angeblich bereits besitzt abfragen, und wenn die 0 ist (wie im Problem zuvor), dann kann er sich ein neues Fahrzeug kaufen, ansonsten nicht.
Schreibe es so. Wenn es nicht geht, poste bitte den print und sage uns welche Meldung im Chat erscheint.
[09:30:00] preis: 80000 / cash: 10030001 / 0.000000/0.000000/0.000000
[09:30:26] preis: 80000 / cash: 9950001 / 1198.775146/-1834.026977/13.115944
[09:30:42] preis: 80000 / cash: 9850001 / 1198.775146/-1834.026977/13.115944
das kam und es funktioniert
habe noch ein Problem mit dem /Carkey wenn ich carkey mache kommt keine reaktion hier der code
if(strcmp("/carkey", cmd, true) == 0)
{
if(MaxVeh[playerid] > 1)
{
PlayerCarkey[playerid] += 1;
if(CarKey[playerid] == MaxVeh[playerid])
{
CarKey[playerid] = 0;
}
if(Carlist[playerid][CarKey[playerid]][Typ] != -1)
{
new index = -1;
for(new i=0; i<sizeof(Kaufliste); i++)
{
if(Kaufliste[i][Modelid] == Carlist[playerid][CarKey[playerid]][Typ])
{
index = i;
break;
}
}
if(index == -1) format(string, sizeof(string), "Du nimmst deinen %dten Auto-Schlüssel, für deinen <unbekannt> !", PlayerCarkey[playerid]+1);
else format(string, sizeof(string), "Du nimmst deinen %dten Auto-Schlüssel, für deinen %s !", PlayerCarkey[playerid]+1, Kaufliste[index][Name]);
}
else
{
format(string, sizeof(string), "Du nimmst deinen %dten Auto-Schlüssel !",PlayerCarkey[playerid]+1);
}
SendClientMessage(playerid,COLOR_YELLOW,string);
}
return 1;
}
//edit 9:46
unzwar wenn ich ingame /carsell mache löscht das auto sich nicht in der db
müsste ich sowas machen wie DELETE from `usercars´ oder so?
lg
Alles anzeigenDa gar keine Reaktion kommt wird es wohl an der Abfrage hier liegen, mach die mal weg.
if(MaxVeh[playerid] > 1)
Zu
//if(MaxVeh[playerid] > 1)
Geht es dann?
Zu deinem Edit:
Ja.
jetzt geht der carkey unendlich hoch aber er geht glaub ich aber er nimmt keinen carkey an wenn ich in anderes auto sitze steht schon habe ein fahrzeug
und von DELETE nur sqlid oder auch AH_Typ usw?
und von DELETE nur sqlid oder auch AH_Typ usw?
SQLID ist der Primary Key, das reicht, da der den Datensatz (Tupel) eindeutig identifiziert.
Jetzt muss ich einmal nachfragen:
Wie viele Fahrzeuge darf denn ein Spieler haben? Laut deinem /buycar war es 1 Fahrzeug. Ist das richtig, dass man maximal 1 Fahrzeug haben darf?
SQLID ist der Primary Key, das reicht, da der den Datensatz (Tupel) eindeutig identifiziert.
Jetzt muss ich einmal nachfragen:
Wie viele Fahrzeuge darf denn ein Spieler haben? Laut deinem /buycar war es 1 Fahrzeug. Ist das richtig, dass man maximal 1 Fahrzeug haben darf?
3
eigentlich unzwar die carkeys kauft man bei einem gewissen Harald.
/kaufen
dann kauft man +1 carkey aber das funtzt nicht so ganz am besten 3
if(strcmp("/carkey", cmd, true) == 0)
{
CarKey[playerid] += 1;
if(CarKey[playerid] >= 3)
{
CarKey[playerid] = 0;
}
if(Carlist[playerid][CarKey[playerid]][Typ] != -1)
{
new index = -1;
for(new i=0; i<sizeof(Kaufliste); i++)
{
if(Kaufliste[i][Modelid] == Carlist[playerid][CarKey[playerid]][Typ])
{
index = i;
break;
}
}
if(index == -1) format(string, sizeof(string), "Du nimmst deinen %dten Auto-Schlüssel !",CarKey[playerid]+1);
else format(string, sizeof(string), "Du nimmst deinen %dten Auto-Schlüssel, für deinen %s !", CarKey[playerid]+1, Kaufliste[index][Name]);
}
else
{
format(string, sizeof(string), "Du nimmst deinen %dten Auto-Schlüssel !",CarKey[playerid]+1);
}
SendClientMessage(playerid,COLOR_YELLOW,string);
return 1;
}
Ggf. musst du deinen Kaufen-Befehl dann anpassen.
Alles anzeigenif(strcmp("/carkey", cmd, true) == 0)
{
PlayerCarkey[playerid] += 1;
if(CarKey[playerid] >= 3)
{
CarKey[playerid] = 0;
}
if(Carlist[playerid][CarKey[playerid]][Typ] != -1)
{
new index = -1;
for(new i=0; i<sizeof(Kaufliste); i++)
{
if(Kaufliste[i][Modelid] == Carlist[playerid][CarKey[playerid]][Typ])
{
index = i;
break;
}
}
if(index == -1) format(string, sizeof(string), "Du nimmst deinen %dten Auto-Schlüssel !",PlayerCarkey[playerid]+1);
else format(string, sizeof(string), "Du nimmst deinen %dten Auto-Schlüssel, für deinen %s !", PlayerCarkey[playerid]+1, Kaufliste[index][Name]);
}
else
{
format(string, sizeof(string), "Du nimmst deinen %dten Auto-Schlüssel !",PlayerCarkey[playerid]+1);
}
SendClientMessage(playerid,COLOR_YELLOW,string);
return 1;
}
Sorry, habe komplett übersehen, dass du da zwei verschiedene Variablen hast. Schreibe es so, das verhindert auch gleich Fehler:
[pwn]if(strcmp("/carkey", cmd, true) == 0)
{
CarKey[playerid] += 1;
if(CarKey[playerid] >= 3)
{
CarKey[playerid] = 0;
}
PlayerCarkey[playerid] = CarKey[playerid];
if(Carlist[playerid][CarKey[playerid]][Typ] != -1)
{
new index = -1;
for(new i=0; i<sizeof(Kaufliste); i++)
{
if(Kaufliste[i][Modelid] == Carlist[playerid][CarKey[playerid]][Typ])
{
index = i;
break;
}
}
if(index == -1) format(string, sizeof(string), "Du nimmst deinen %dten Auto-Schlüssel !",CarKey[playerid]+1);
else format(string, sizeof(string), "Du nimmst deinen %dten Auto-Schlüssel, für deinen %s !", CarKey[playerid]+1, Kaufliste[index][Name]);
}
else
{
format(string, sizeof(string), "Du nimmst deinen %dten Auto-Schlüssel !",CarKey[playerid]+1);
}
SendClientMessage(playerid,COLOR_YELLOW,string);
return 1;
}[/pwn]
Alles anzeigenSorry, habe komplett übersehen, dass du da zwei verschiedene Variablen hast. Schreibe es so, das verhindert auch gleich Fehler:
[pwn]if(strcmp("/carkey", cmd, true) == 0)
{
CarKey[playerid] += 1;
if(CarKey[playerid] >= 3)
{
CarKey[playerid] = 0;
}
PlayerCarkey[playerid] = CarKey[playerid];
if(Carlist[playerid][CarKey[playerid]][Typ] != -1)
{
new index = -1;
for(new i=0; i<sizeof(Kaufliste); i++)
{
if(Kaufliste[i][Modelid] == Carlist[playerid][CarKey[playerid]][Typ])
{
index = i;
break;
}
}
if(index == -1) format(string, sizeof(string), "Du nimmst deinen %dten Auto-Schlüssel !",CarKey[playerid]+1);
else format(string, sizeof(string), "Du nimmst deinen %dten Auto-Schlüssel, für deinen %s !", CarKey[playerid]+1, Kaufliste[index][Name]);
}
else
{
format(string, sizeof(string), "Du nimmst deinen %dten Auto-Schlüssel !",CarKey[playerid]+1);
}
SendClientMessage(playerid,COLOR_YELLOW,string);
return 1;
}[/pwn]
Kann nun kein Fahrzeug kaufen da ich schon eines bei dem anderen besitze aber habe /carkey gemacht
hier nochma code
if(dialogid == DIALOG_AUTOHAUS)
{
//new FreeSlot = -1;
new FreeSlot;
if(!response)
{
ForAllPlayers(i)
{
if(IsPlayerConnected(i))
{
SetVehicleParamsForPlayer(Kaufliste[Spectating[playerid]][Carid], i, 0, 0);
}
}
RemovePlayerFromVehicle(playerid);
}
if(response)
{
new preis = Kaufliste[Spectating[playerid]][Preis];
if(PlayerInfo[playerid][pKreditkarte] == 1 && PlayerInfo[playerid][pKreditkartebenutzen] == 1)
{
if(Kaufliste[Spectating[playerid]][Autolevel]-1 >= PlayerInfo[playerid][pLevel])
{
format(string, sizeof(string), "Du hast nicht das Benötigte Level für das Fahrzeug (benötigt: %d)", Kaufliste[Spectating[playerid]][Autolevel]);
SendClientMessage(playerid, COLOR_ERRORTEXT, string);
ForAllPlayers(i)
{
if(IsPlayerConnected(i))
{
SetVehicleParamsForPlayer(Kaufliste[Spectating[playerid]][Carid], i, 0, 0);
}
}
RemovePlayerFromVehicle(playerid);
return 1;
}
if(preis < PlayerInfo[playerid][pBank])
{
PlayerInfo[playerid][pKreditkartenkosten] += preis;
SendClientMessage(playerid,COLOR_YELLOW,"Du hast erfolgreich mit deiner Kreditkarte bezahlt, der Betrag wird beim Payday abgebucht.");
}
else
{
format(string, sizeof(string), "Du hast nicht genug Geld für das Auto (benötigt: $%i)", preis);
SendClientMessage(playerid, COLOR_ERRORTEXT, string);
ForAllPlayers(i)
{
if(IsPlayerConnected(i))
{
SetVehicleParamsForPlayer(Kaufliste[Spectating[playerid]][Carid], i, 0, 0);
}
}
RemovePlayerFromVehicle(playerid);
return 1;
}
}
else
{
if(Kaufliste[Spectating[playerid]][Autolevel]-1 >= PlayerInfo[playerid][pLevel])
{
format(string, sizeof(string), "Du hast nicht das Benötigte Level für das Fahrzeug (benötigt: %d)!", Kaufliste[Spectating[playerid]][Autolevel]);
SendClientMessage(playerid, COLOR_ERRORTEXT, string);
ForAllPlayers(i)
{
if(IsPlayerConnected(i))
{
SetVehicleParamsForPlayer(Kaufliste[Spectating[playerid]][Carid], i, 0, 0);
}
}
RemovePlayerFromVehicle(playerid);
return 1;
}
new Float:x, Float:y, Float:z;
GetVehiclePos(Carlist[playerid][FreeSlot][Carid], x, y, z);
printf("preis: %d / cash: %d / %f/%f/%f", preis, PlayerInfo[playerid][pCash], x, y, z);
if(x != 0.0 || y != 0.0 || z != 0.0)
{
SendClientMessage(playerid, COLOR_ERRORTEXT, "Du hast bereits ein Fahrzeug.");
ForAllPlayers(i)
{
if(IsPlayerConnected(i))
{
SetVehicleParamsForPlayer(Kaufliste[Spectating[playerid]][Carid], i, 0, 0);
}
}
RemovePlayerFromVehicle(playerid);
return 1;
}
if(preis <= PlayerInfo[playerid][pCash])
{
GivePlayerMoneys(playerid, -preis);
}
else
{
format(string, sizeof(string), "Du hast nicht genug Geld für das Auto (benötigt: $%i)!", preis);
SendClientMessage(playerid, COLOR_ERRORTEXT, string);
ForAllPlayers(i)
{
if(IsPlayerConnected(i))
{
SetVehicleParamsForPlayer(Kaufliste[Spectating[playerid]][Carid], i, 0, 0);
}
}
RemovePlayerFromVehicle(playerid);
return 1;
}
}
for(new i=0; i<MaxVeh[playerid]; i++)
{
if(Carlist[playerid][i][Typ] == -1)
{
FreeSlot=i;
break;
}
}
/*if(PlayerInfo[playerid][pCarLimit] == 1)
{
SendClientMessage(playerid,COLOR_RED,"Du hast bereits die maximale Anzahl an Privatfahrzeugen erreicht (1).");
return 1;
}*/
/*if(FreeSlot == -1)
{
SendClientMessage(playerid,COLOR_RED,"Du hast bereits die maximale Anzahl an Privatfahrzeugen erreicht.");
return 1;
}*/
new autohaus = Kaufliste[Spectating[playerid]][Autohaus];
Carlist[playerid][FreeSlot][Typ] = Spectating[playerid];
Carlist[playerid][FreeSlot][pos_x] = Autospawns[autohaus][pos_x];
Carlist[playerid][FreeSlot][pos_y] = Autospawns[autohaus][pos_y];
Carlist[playerid][FreeSlot][pos_z] = Autospawns[autohaus][pos_z];
Carlist[playerid][FreeSlot][z_angle] = Autospawns[autohaus][z_angle];
Carlist[playerid][FreeSlot][SpawnSaveX] = Autospawns[autohaus][pos_x];
Carlist[playerid][FreeSlot][SpawnSaveY] = Autospawns[autohaus][pos_y];
Carlist[playerid][FreeSlot][SpawnSaveZ] = Autospawns[autohaus][pos_z];
Carlist[playerid][FreeSlot][SpawnSaveRot] = Autospawns[autohaus][z_angle];
Carlist[playerid][FreeSlot][Status] = 0;
Carlist[playerid][FreeSlot][Lock] = 0;
Carlist[playerid][FreeSlot][Carid] = CreateTunedCar(playerid, FreeSlot);
Carlist[playerid][FreeSlot][Meter] = 0;
Kilometerstand[Carlist[playerid][FreeSlot][Carid]] = 0.00;
Gas[Carlist[playerid][FreeSlot][Carid]] = GasDaten[GetVehicleModel(Carlist[playerid][FreeSlot][Carid])-400][Tankvolumen];
SetPlayerCheckpoint(playerid,Carlist[playerid][FreeSlot][pos_x],Carlist[playerid][FreeSlot][pos_y],Carlist[playerid][FreeSlot][pos_z],10.0);
ForAllPlayers(i)
{
if(IsPlayerConnected(i))
{
SetVehicleParamsForPlayer(Kaufliste[Spectating[playerid]][Carid], i, 0, 0);
}
}
TogglePlayerControllable(playerid,1);
RemovePlayerFromVehicle(playerid);
PlayerInfo[playerid][pCarLimit] = 1;
SendClientMessage(playerid,COLOR_GREEN,"Du hast dir erfolgreich das Fahrzeug gekauft.");
SendClientMessage(playerid,COLOR_GREEN,"Du kannst dein Fahrzeug mit (/park) parken.");
if(Kaufliste[Spectating[playerid]][Autohaus] == 2)
{
BizInfo[14][bTill] += (preis/100)*15;
ExtortionBiz(14, (preis/100)*10);
BizInfo[14][bProducts]--;
}
if(Kaufliste[Spectating[playerid]][Autohaus] == 0)
{
SBizInfo[17][sbTill] += (preis/100)*15;
ExtortionSBiz(17, (preis/100)*10);
SBizInfo[17][sbProducts]--;
}
if(Kaufliste[Spectating[playerid]][Autohaus] == 1)
{
SBizInfo[18][sbTill] += (preis/100)*15;
ExtortionSBiz(18, (preis/100)*10);
SBizInfo[18][sbProducts]--;
}
if(Kaufliste[Spectating[playerid]][Autohaus] == 3)
{
SBizInfo[19][sbTill] += (preis/100)*25;
ExtortionSBiz(19, (preis/100)*10);
SBizInfo[19][sbProducts]--;
}
Spectating[playerid] = -1;
}
return 1;
}
Ändere mal
new FreeSlot;
zu:
new FreeSlot = CarKey[playerid];
Möglicherweise reicht das schon.
Ändere mal
new FreeSlot;
zu:
new FreeSlot = CarKey[playerid];
Möglicherweise reicht das schon.
hab 3 autos nun gekauft doch wenn ich carinfo mach kommt das hier
und nur das letzte auto wird in sql gespeichert
Poste bitte jeweils die aktuelle Version, einmal vom CarInfo Befehl und einmal vom Speichern der Fahrzeuge.
Poste bitte jeweils die aktuelle Version, einmal vom CarInfo Befehl und einmal vom Speichern der Fahrzeuge.
if(strcmp("/carinfo", cmd, true) == 0)
{
new TurStatus[90],Cars = 0,str9[1000],str[258],str8[258],Var = 0,status[50];
for(new h = 0; h < MaxVeh[playerid]; h++)
{
printf("h: %d / playerid: %d / Typ: %d", h, playerid, Carlist[playerid][h][Carid]);
if(Carlist[playerid][h][Carid] != -1)
{
new Float:x, Float:y, Float:z;
GetVehiclePos(Carlist[playerid][h][Carid], x, y, z);
printf("Pos: %f / %f / %f | Model: %d", x, y, z, GetVehicleModel(Carlist[playerid][h][Carid]));
if(x == 0.0 && y == 0.0 && z == 0.0) continue;
if(Carlist[playerid][h][Lock] == 0)
{
TurStatus = "{21DD00}Aufgeschlossen";
}
else
{
TurStatus = "{FF0000}Abgeschlossen";
}
if(Motorschaden[Carlist[playerid][h][Carid]] != 0)
{
status = "{FF0000}Motorschaden";
Var = 1;
}
if(Var == 0)
{
if(CarAbgeschleppt[Carlist[playerid][h][Carid]] == 1)
{
status = "{FF0000}Abgeschleppt";
}
else
{
status = "{21DD00}Fahrtüchtig";
}
}
format(str8,sizeof(str8),"{FFFFFF}Slot: %d | Fahrzeugname: %s | Fahrzeugtür: %s{FFFFFF} | Fahrzeugstatus: %s\n",h,Kaufliste[Carlist[playerid][h][Typ]][Name],TurStatus,status);
printf("str8: %s", str8);
strcat(str9, str8);
Cars++;
}
}
format(str,sizeof(str),"Du hast %d Fahrzeuge.",Cars);
ShowPlayerDialog(playerid,542,DIALOG_STYLE_MSGBOX,str,str9,"Bestätigen","");
return 1;
}
stock CreatePrivatfahrzeug(playerid)
{
new query[1000];
for(new h = 0; h < MaxVeh[playerid]; h++){
format(query, sizeof(query), "INSERT INTO `usercars` (`SQLID`, `Slot`, `AH_Typ`) VALUES ('%d', '%d','-1')", PlayerInfo[playerid][pSQLID], h);
mysql_query(query);
}
return true;
}
forward PlayerCarConnect(playerid);
public PlayerCarConnect(playerid){
if(IsPlayerNPC(playerid)) return 1;
new string[258],playername[MAX_PLAYER_NAME];
GetPlayerName(playerid, playername, sizeof(playername));
for(new h = 0; h < MaxVeh[playerid]; h++)
{
format(string, sizeof(string),"SELECT * FROM `usercars` WHERE `SQLID` = '%d' AND `Slot` = '%d'", PlayerInfo[playerid][pSQLID], h);
self_mysql_queryEx(string);
mysql_store_result();
new val[ 256 ], Variable;
while(mysql_fetch_row_format(string,"|"))
{
self_mysql_get_field("AH_Typ", val); Carlist[playerid][h][Typ] = strval( val );
self_mysql_get_field("AH_X", val); Carlist[playerid][h][pos_x] = strval( val );
self_mysql_get_field("AH_Y", val); Carlist[playerid][h][pos_y] = strval( val );
self_mysql_get_field("AH_Z", val); Carlist[playerid][h][pos_z] = strval( val );
self_mysql_get_field("AH_Rot", val); Carlist[playerid][h][z_angle] = strval( val );
self_mysql_get_field("AH_Status", val); Carlist[playerid][h][Status] = strval( val );
self_mysql_get_field("AH_Lock", val); Carlist[playerid][h][Lock] = strval( val );
self_mysql_get_field("AH_Paintjob", val); Carlist[playerid][h][Paintjob] = strval( val );
self_mysql_get_field("AH_Farbe1", val); Carlist[playerid][h][Farbe1] = strval( val );
self_mysql_get_field("AH_Farbe2", val); Carlist[playerid][h][Farbe2] = strval( val );
self_mysql_get_field("AH_mod1", val); Carlist[playerid][h][mod1] = strval( val );
self_mysql_get_field("AH_mod2", val); Carlist[playerid][h][mod2] = strval( val );
self_mysql_get_field("AH_mod3", val); Carlist[playerid][h][mod3] = strval( val );
self_mysql_get_field("AH_mod4", val); Carlist[playerid][h][mod4] = strval( val );
self_mysql_get_field("AH_mod5", val); Carlist[playerid][h][mod5] = strval( val );
self_mysql_get_field("AH_mod6", val); Carlist[playerid][h][mod6] = strval( val );
self_mysql_get_field("AH_mod7", val); Carlist[playerid][h][mod7] = strval( val );
self_mysql_get_field("AH_mod8", val); Carlist[playerid][h][mod8] = strval( val );
self_mysql_get_field("AH_mod9", val); Carlist[playerid][h][mod9] = strval( val );
self_mysql_get_field("AH_mod10", val); Carlist[playerid][h][mod10] = strval( val );
self_mysql_get_field("AH_mod11", val); Carlist[playerid][h][mod11] = strval( val );
self_mysql_get_field("AH_mod12", val); Carlist[playerid][h][mod12] = strval( val );
self_mysql_get_field("AH_mod13", val); Carlist[playerid][h][mod13] = strval( val );
self_mysql_get_field("AH_mod14", val); Carlist[playerid][h][mod14] = strval( val );
self_mysql_get_field("AH_mod15", val); Carlist[playerid][h][mod15] = strval( val );
self_mysql_get_field("AH_mod16", val); Carlist[playerid][h][mod16] = strval( val );
self_mysql_get_field("AH_mod17", val); Carlist[playerid][h][mod17] = strval( val );
self_mysql_get_field("AH_SpawnSaveX", val); Carlist[playerid][h][SpawnSaveX] = strval( val );
self_mysql_get_field("AH_SpawnSaveY", val); Carlist[playerid][h][SpawnSaveY] = strval( val );
self_mysql_get_field("AH_SpawnSaveZ", val); Carlist[playerid][h][SpawnSaveZ] = strval( val );
self_mysql_get_field("AH_SpawnSaveRot", val); Carlist[playerid][h][SpawnSaveRot] = strval( val );
self_mysql_get_field("AH_TankVolumen", val); Carlist[playerid][h][TankVolumen] = strval( val );
self_mysql_get_field("AH_Meter", val); Carlist[playerid][h][Meter] = strval( val );
self_mysql_get_field("AH_Kilometer", val); Carlist[playerid][h][KiloMeter] = strval( val );
self_mysql_get_field("AH_Abgeschleppt", val); Carlist[playerid][h][AH_Abgeschleppt] = strval( val );
self_mysql_get_field("AH_Abgeschlepptname", val); strmid(Carlist[playerid][h][AH_Abgeschlepptname], val, 0, strlen(val), 255);//Carlist[playerid][h][AH_Abgeschlepptname] = strval( val );
self_mysql_get_field("AH_Abgeschlepptzeit", val); strmid(Carlist[playerid][h][AH_Abgeschlepptzeit], val, 0, strlen(val), 255);//Carlist[playerid][h][AH_Abgeschlepptzeit] = strval( val );
self_mysql_get_field("AH_AbgeschlepptPreis", val); Carlist[playerid][h][AH_Abgeschlepptpreis] = strval( val );
self_mysql_get_field("AH_Motorschaden", val); Carlist[playerid][h][AH_Motorschaden] = strval( val );
self_mysql_get_field("AH_Neon", val); Variable = strval( val );
mysql_free_result();
}
if(Carlist[playerid][h][Typ] != -1 && Carlist[playerid][h][Status] == 0)
{
Carlist[playerid][h][Carid] = CreateTunedCar(playerid, h);
NeonObject[Carlist[playerid][h][Carid]][3] = Variable;
if(NeonObject[Carlist[playerid][h][Carid]][3] != -1)
{
NeonObject[Carlist[playerid][h][Carid]][1] = CreateDynamicObjectEx(NeonObject[Carlist[playerid][h][Carid]][3], 0, 0, 0, 0, 0, 0);
NeonObject[Carlist[playerid][h][Carid]][2] = CreateDynamicObjectEx(NeonObject[Carlist[playerid][h][Carid]][3], 0, 0, 0, 0, 0, 0);
AttachDynamicObjectToVehicle(NeonObject[Carlist[playerid][h][Carid]][1], Carlist[playerid][h][Carid], -0.8, 0.0, -0.70, 0.0, 0.0, 0.0);
AttachDynamicObjectToVehicle(NeonObject[Carlist[playerid][h][Carid]][2], Carlist[playerid][h][Carid], 0.8, 0.0, -0.70, 0.0, 0.0, 0.0);
}
}
}
return 1;
}
forward PlayerCarUpdate(playerid);
public PlayerCarUpdate(playerid)
{
if(IsPlayerNPC(playerid)) return 1;
new playername[MAX_PLAYER_NAME];
GetPlayerName(playerid, playername, sizeof(playername));
for(new h = 0; h < MaxVeh[playerid]; h++)
{
new endstring[4000];
new var[129];
format(endstring, sizeof(endstring), "UPDATE `usercars` SET ");
format(var, sizeof(var), "`AH_Typ`='%d', ", Carlist[playerid][h][Typ]);
strcat(endstring, var);
format(var, sizeof(var), "`AH_X`='%f', ", Carlist[playerid][h][pos_x]);
strcat(endstring, var);
format(var, sizeof(var), "`AH_Y`='%f', ", Carlist[playerid][h][pos_y]);
strcat(endstring, var);
format(var, sizeof(var), "`AH_Z`='%f', ", Carlist[playerid][h][pos_z]);
strcat(endstring, var);
format(var, sizeof(var), "`AH_Rot`='%f', ", Carlist[playerid][h][z_angle]);
strcat(endstring, var);
format(var, sizeof(var), "`AH_Kilometer`='%f', ", Kilometerstand[Carlist[playerid][h][Carid]]);
strcat(endstring, var);
format(var, sizeof(var), "`AH_Status`='%d', ", Carlist[playerid][h][Status]);
strcat(endstring, var);
format(var, sizeof(var), "`AH_Lock`='%d', ", Carlist[playerid][h][Lock]);
strcat(endstring, var);
format(var, sizeof(var), "`AH_Paintjob`='%d', ", Carlist[playerid][h][Paintjob]);
strcat(endstring, var);
format(var, sizeof(var), "`AH_Farbe1`='%d', ", Carlist[playerid][h][Farbe1]);
strcat(endstring, var);
format(var, sizeof(var), "`AH_Farbe2`='%d', ", Carlist[playerid][h][Farbe2]);
strcat(endstring, var);
format(var, sizeof(var), "`AH_mod1`='%d', ", Carlist[playerid][h][mod1]);
strcat(endstring, var);
format(var, sizeof(var), "`AH_mod2`='%d', ", Carlist[playerid][h][mod2]);
strcat(endstring, var);
format(var, sizeof(var), "`AH_mod3`='%d', ", Carlist[playerid][h][mod3]);
strcat(endstring, var);
format(var, sizeof(var), "`AH_mod4`='%d', ", Carlist[playerid][h][mod4]);
strcat(endstring, var);
format(var, sizeof(var), "`AH_mod5`='%d', ", Carlist[playerid][h][mod5]);
strcat(endstring, var);
format(var, sizeof(var), "`AH_mod6`='%d', ", Carlist[playerid][h][mod6]);
strcat(endstring, var);
format(var, sizeof(var), "`AH_mod7`='%d', ", Carlist[playerid][h][mod7]);
strcat(endstring, var);
format(var, sizeof(var), "`AH_mod8`='%d', ", Carlist[playerid][h][mod8]);
strcat(endstring, var);
format(var, sizeof(var), "`AH_mod9`='%d', ", Carlist[playerid][h][mod9]);
strcat(endstring, var);
format(var, sizeof(var), "`AH_mod10`='%d', ", Carlist[playerid][h][mod10]);
strcat(endstring, var);
format(var, sizeof(var), "`AH_mod11`='%d', ", Carlist[playerid][h][mod11]);
strcat(endstring, var);
format(var, sizeof(var), "`AH_mod12`='%d', ", Carlist[playerid][h][mod12]);
strcat(endstring, var);
format(var, sizeof(var), "`AH_mod13`='%d', ", Carlist[playerid][h][mod13]);
strcat(endstring, var);
format(var, sizeof(var), "`AH_mod14`='%d', ", Carlist[playerid][h][mod14]);
strcat(endstring, var);
format(var, sizeof(var), "`AH_mod15`='%d', ", Carlist[playerid][h][mod15]);
strcat(endstring, var);
format(var, sizeof(var), "`AH_mod16`='%d', ", Carlist[playerid][h][mod16]);
strcat(endstring, var);
format(var, sizeof(var), "`AH_mod17`='%d', ", Carlist[playerid][h][mod17]);
strcat(endstring, var);
format(var, sizeof(var), "`AH_SpawnSaveX`='%f', ", Carlist[playerid][h][SpawnSaveX]);
strcat(endstring, var);
format(var, sizeof(var), "`AH_SpawnSaveY`='%f', ", Carlist[playerid][h][SpawnSaveY]);
strcat(endstring, var);
format(var, sizeof(var), "`AH_SpawnSaveZ`='%f', ", Carlist[playerid][h][SpawnSaveZ]);
strcat(endstring, var);
format(var, sizeof(var), "`AH_SpawnSaveRot`='%f', ", Carlist[playerid][h][SpawnSaveRot]);
strcat(endstring, var);
format(var, sizeof(var), "`AH_TankVolumen`='%f', ", Gas[Carlist[playerid][h][Carid]]);
strcat(endstring, var);
format(var, sizeof(var), "`AH_Meter`='%d', ", Carlist[playerid][h][Meter]);
strcat(endstring, var);
format(var, sizeof(var), "`AH_Neon`='%d', ", NeonObject[Carlist[playerid][h][Carid]][3]);
strcat(endstring, var);
format(var, sizeof(var), "`AH_Abgeschleppt`='%d', ", CarAbgeschleppt[Carlist[playerid][h][Carid]]);
strcat(endstring, var);
format(var, sizeof(var), "`AH_Abgeschlepptname`='%s', ", CarAbgeschlepptName[Carlist[playerid][h][Carid]]);
strcat(endstring, var);
format(var, sizeof(var), "`AH_Abgeschlepptzeit`='%s', ", CarAbgeschlepptZeit[Carlist[playerid][h][Carid]]);
strcat(endstring, var);
format(var, sizeof(var), "`AH_AbgeschlepptPreis`='%d', ", CarAbgeschlepptPreis[Carlist[playerid][h][Carid]]);
strcat(endstring, var);
format(var, sizeof(var), "`AH_Motorschaden`='%d' ", Motorschaden[Carlist[playerid][h][Carid]]);
strcat(endstring, var);
format(var, sizeof(var), "WHERE `SQLID`='%d' AND `Slot`='%d'", PlayerInfo[playerid][pSQLID], h);
strcat(endstring, var);
mysql_query(endstring);
}
return 1;
}
forward PlayerCarDisconnect(playerid);
public PlayerCarDisconnect(playerid)
{
if(IsPlayerNPC(playerid)) return 1;
PlayerCarUpdate(playerid);
for(new h = 0; h < MaxVeh[playerid]; h++)
{
if(Carlist[playerid][h][Carid] != -1)
{
Carlist[playerid][h][TankVolumen] = Gas[Carlist[playerid][h][Carid]];
Carlist[playerid][h][KiloMeter] = Kilometerstand[Carlist[playerid][h][Carid]];
DestroyVehicleSelfmade(Carlist[playerid][h][Carid]);
Carlist[playerid][h][Carid] = -1;
}
}
if(Spectating[playerid] != -1)
{
ForAllPlayers(i)
{
SetVehicleParamsForPlayer(Kaufliste[Spectating[playerid]][Carid],i,0,0);
}
Spectating[playerid] = -1;
}
return 1;
}
soo