Also wo muss jetzt das hin
if(fracVehicle[i][e_modelID] == 0) continue;
Und wegen den #define Frac_Vehicle 1 Was soll ich da machen 20 20 hab ich 20 in der Datenbank
Also wo muss jetzt das hin
if(fracVehicle[i][e_modelID] == 0) continue;
Und wegen den #define Frac_Vehicle 1 Was soll ich da machen 20 20 hab ich 20 in der Datenbank
Im LoadFracVehicles_Data public.
Nach:
//Fahrzeug existiert noch nicht, es wird jetzt in die Datenbank geschrieben.
Die Fahrzeuge die dir da erstellt worden sind kannst du löschen, wenn du das dann eingefügt hast, werden sie nicht mehr erstellt.
Diese
//Fahrzeug ...
Habe ich gelöscht
Vor der INSERT INTO Query-Zeile in dem LoadFracVehicles_Data public.
Ansonsten, wenn du nicht weißt welche ich meine, poste dein LoadFracVehicles_Data public.
ICh habe es. Mein Problem ist das ich wenn ich in ein Fraktionsauto steige. Nicht rausgeworfen werden. Ich bin in einer anderen Fraktion
Poste bitte dein OnPlayerEnterVehicle.
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
for(new i=0; i<FRAC_VEHICLES; i++)
{
if(fracVehicle[i][e_vID] == vehicleid)
{
if(SpielerInfo[playerid][pFraktion] != fracVehicle[i][e_fracID])
{
TogglePlayerControllable(playerid, false);
TogglePlayerControllable(playerid, true);
SendClientMessage(playerid, COLOR_RED, "Du bist nicht in der Fraktion, die dieses Fahrzeug verwenden darf.");
}
break;
}
}
return 1;
}
Hier Jeffry:
//edit1 Jeffry: eingefügt
Debugge es bitte so:
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
for(new i=0; i<FRAC_VEHICLES; i++)
{
printf("%d == %d", fracVehicle[i][e_vID], vehicleid);
if(fracVehicle[i][e_vID] == vehicleid)
{
printf("Frak: %d | vehFrak: %d", SpielerInfo[playerid][pFraktion], fracVehicle[i][e_fracID]);
if(SpielerInfo[playerid][pFraktion] != fracVehicle[i][e_fracID])
{
printf("Kommt nicht rein.");
TogglePlayerControllable(playerid, false);
TogglePlayerControllable(playerid, true);
SendClientMessage(playerid, COLOR_RED, "Du bist nicht in der Fraktion, die dieses Fahrzeug verwenden darf.");
}
break;
}
}
return 1;
}
Dann poste was im Log steht, wenn du ein solches Fahrzeug betrittst.
[17:54:57] ===============================
[17:54:57] sscanf plugin loaded.
[17:54:57] Version: 2.8.1
[17:54:57] (c) 2012 Alex "Y_Less" Cole
[17:54:57] ===============================
[17:54:57] Loaded.
[17:54:57] Loaded 3 plugins.
[17:54:57]
[17:54:57] Filterscripts
[17:54:57] ---------------
[17:54:57] Loaded 0 filterscripts.
[17:54:57] MySQL: Die Verbindung wurde erfolgreich hergestellt.
[17:54:57]
------------------------------------------------
[17:54:57] Das Script ist eigentum von us
[17:54:57] ------------------------------------------------
[17:54:57] Number of vehicle models: 0
[17:55:18] Incoming connection: 127.0.0.1:64312
[17:55:18] [join] Crabbitor has joined the server (0:127.0.0.1)
[17:56:01] 0 == 1
[17:56:01] 0 == 1
[17:56:01] 0 == 1
[17:56:01] 0 == 1
[17:56:01] 0 == 1
[17:56:01] 0 == 1
[17:56:01] 0 == 1
[17:56:01] 0 == 1
[17:56:01] 0 == 1
[17:56:01] 0 == 1
[17:56:01] 0 == 1
[17:56:01] 0 == 1
[17:56:01] 0 == 1
[17:56:01] 0 == 1
[17:56:01] 0 == 1
[17:56:01] 0 == 1
[17:56:01] 0 == 1
[17:56:01] 0 == 1
[17:56:01] 0 == 1
[17:56:01] 0 == 1
[17:56:12] 0 == 1
[17:56:12] 0 == 1
[17:56:12] 0 == 1
[17:56:12] 0 == 1
[17:56:12] 0 == 1
[17:56:12] 0 == 1
[17:56:12] 0 == 1
[17:56:12] 0 == 1
[17:56:12] 0 == 1
[17:56:12] 0 == 1
[17:56:12] 0 == 1
[17:56:12] 0 == 1
[17:56:12] 0 == 1
[17:56:12] 0 == 1
[17:56:12] 0 == 1
[17:56:12] 0 == 1
[17:56:12] 0 == 1
[17:56:12] 0 == 1
[17:56:12] 0 == 1
[17:56:12] 0 == 1
Alles anzeigen
Du hast keine erstellten Fraktionsfahrzeuge. Alle Indizes sind auf 0.
Wie erstellst du denn dieses Fahrzeug, in das du einsteigst?
Mit deinem Befehl /addfraktionscar 1 411 1 1 habe ich gemacht
ocmd:addfraktionscar(playerid,params[])
{
new fid,vid,mid,color1,color2, Float:x,Float:y,Float:z,Float:a;
GetPlayerPos(playerid,x,y,z);
GetPlayerFacingAngle(playerid,a);
if(sscanf(params,"dddd",fid,mid,color1,color2)) return SendClientMessage(playerid,-1,"Benutze: /addfraktionscar [Fraktionsid] [Model] [Farbe1] [Farbe2]");
fracVehicle[fid][e_vID] = CreateVehicle(mid,x,y,z,a,color1,color2,-1);
new query[256];
format(query, sizeof(query), "INSERT INTO FracVehicles (ModelID, PosX, PosY, PosZ, PosA, Color1, Color2, FracID) VALUES ('%d', '%d', '%f', '%f', '%f', '%f', '%d', '%d', '%d')",
mid, x, y, z, a, color1, color2, fid);
mysql_tquery(Handle, query);
LoadFracVehicles();
SendClientMessage(playerid,-1,"Du hast ein Fraktionsauto erstellt!");
return 1;
}
Der Befehl muss dann so aussehen. Du hast die Vehicle-ID nicht richtig zu geordnet.
EDIT:
Obwohl du "ID" gar nicht abspeichern musst, könntest du das aus der Query auch entfernen. (Habe ich nun gemacht!)
Was geht da nicht?
Wenn ich das im Fraktionsauto eingebe Komm das es kein Fraktionsauto ist. Wenn ich es auserhalb eingebe kommt auch das glecihe.
Teste es mal so:
COMMAND:delfraktionscar(playerid,params[])
{
new vid;
if(!strlen(params))
{
if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid,-1,"Du bist in keinem Fahrzeug!");
vid = GetPlayerVehicleID(playerid);
}
else
{
vid = strval(params);
if(!GetVehicleModel(vid)) return SendClientMessage(playerid,-1,"Dieses Fahrzeug existiert nicht!");
}
new idx = -1;
for(new i=0; i<FRAC_VEHICLES; i++)
{
if(fracVehicle[i][e_vID] == vid)
{
idx = i;
break;
}
}
if(idx==-1) return SendClientMessage(playerid,-1,"Das Fahrzeug ist kein Fraktionsfahrzeug!");
if(fracVehicle[idx][e_modelID] == 0) return SendClientMessage(playerid,-1,"Das Fahrzeug ist kein Fraktionsfahrzeug!");
new query[256];
format(query, sizeof(query), "DELETE FROM FracVehicles WHERE ID = %d", idx);
mysql_tquery(handle, query);
DestroyVehicle(fracVehicle[idx][e_vID]);
LoadFracVehicles();
SendClientMessage(playerid,-1,"Fraktionsfahrzeug entfernt!");
return 1;
}
COMMAND:delfraktionscar(playerid,params[])
{
new vid;
if(!strlen(params))
{
if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid,-1,"Du bist in keinem Fahrzeug!");
vid = GetPlayerVehicleID(playerid);
}
else
{
vid = strval(params);
if(!GetVehicleModel(vid)) return SendClientMessage(playerid,-1,"Dieses Fahrzeug existiert nicht!");
}
for(new i;i<FRAC_VEHICLES;i++)
{
if(vid == fracVehicle[i][e_vID])
{
new query[256];
format(query, sizeof(query), "DELETE FROM FracVehicles WHERE ID = %d", vid);
mysql_tquery(handle, query);
DestroyVehicle(vid);
LoadFracVehicles();
SendClientMessage(playerid,-1,"Fraktionsfahrzeug entfernt!");
return 1;
}
}
return SendClientMessage(playerid,-1,"Das Fahrzeug ist kein Fraktionsfahrzeug!");
}
Dann könnte er das ganze auch gleich so schreiben, wenn ich mich nicht irre
Ja, das ist das Gleiche, macht keinen Unterscheid.
Nur:
format(query, sizeof(query), "DELETE FROM FracVehicles WHERE ID = %d", vid);
zu:
format(query, sizeof(query), "DELETE FROM FracVehicles WHERE ID = %d", i);