Wie ermittel ich nochmal den Besitzer eines Fahrzeug für das Motor System?
Frage zum ermitteln von Fahrzeugbesitzer
- TobiSagu
- 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
-
-
Du gehst jeden Spieler durch fragst ab ob er im Fahrzeug ist [wiki]IsPlayerInVehicle[/wiki] und dann entweder [wiki]GetPlayerVehicleSeat[/wiki] nutzen 0 ist der Fahrer oder nutzt [wiki]GetPlayerState[/wiki] PLAYER_STATE_DRIVER.
-
Alles klar, das ist geschafft.
Ein Fehler habe ich derzeit allerdings noch. Er zeigt mir an das der Motor angeschaltet wird. In wirklichkeit wird die Abfrage nicht ausgeführt und der Motor bleibt aus
Code
Alles anzeigenocmd:motor(playerid,params[]) { #pragma unused params if(!IsPlayerInAnyVehicle(playerid) || GetPlayerState PLAYER_STATE_DRIVER)return 1; new vehicleid; if(EventCar[GetPlayerVehicleID(playerid)] && !adminduty[playerid]) return ErrorMsg(playerid, "Das ist ein Eventfahrzeug."); if(GetPlayerState(playerid)!=PLAYER_STATE_DRIVER)return 1; if(GetVehicleModel(vehicleid)==481||GetVehicleModel(vehicleid)==509||GetVehicleModel(vehicleid)==510) { return 1; } new engine,lights,alarm,doors,bonnet,boot,objective; GetVehicleParamsEx(vehicleid,engine,lights,alarm,doors,bonnet,boot,objective); if(engine==1) { engineOff(vehicleid); GameTextForPlayer(playerid,"~w~Motor ~r~ausgeschaltet",1500,4); } else { if(tank[vehicleid]>0) { if(istkaputt[vehicleid]==0) { engineOn(vehicleid); GameTextForPlayer(playerid,"~w~Motor ~g~angeschaltet",1500,4); } else { SendClientMessage(playerid,COLOR_GRAD2,"Der Motor ist kaputt."); } } else { SendClientMessage(playerid,COLOR_GRAD2,"ACHTUNG: Kein Benzin!"); } } return 1; }
-
Dann poste mal deine engineOn Funktion
-
Code
Alles anzeigenstock engineOn(vehicleid) { if(vehicleid==INVALID_VEHICLE_ID)return 1; lightOn(vehicleid); if(IsTrailerAttachedToVehicle(vehicleid)) { lightOn(GetVehicleTrailer(vehicleid)); } new engine,lights,alarm,doors,bonnet,boot,objective; GetVehicleParamsEx(vehicleid,engine,lights,alarm,doors,bonnet,boot,objective); SetVehicleParamsEx(vehicleid,1,lights,alarm,doors,bonnet,boot,objective); return 1; }
ich merke das der Motor auch beim eigenen Fahrzeug nicht angeht. Das muss iwie amvom
Code
Alles anzeigenocmd:motor(playerid,params[]) { #pragma unused params if(!IsPlayerInAnyVehicle(playerid))return 1; new vehicleid,Vehicle; vehicleid=GetPlayerVehicleID(playerid); if(vehicleid==INVALID_VEHICLE_ID)return 1; if(Vehicle != INVALID_VEHICLE_ID) if(EventCar[GetPlayerVehicleID(playerid)] && !adminduty[playerid]) return ErrorMsg(playerid, "Das ist ein Eventfahrzeug."); if(GetPlayerState(playerid)!=PLAYER_STATE_DRIVER)return 1; if(GetVehicleModel(vehicleid)==481||GetVehicleModel(vehicleid)==509||GetVehicleModel(vehicleid)==510) { return 1; } new engine,lights,alarm,doors,bonnet,boot,objective; GetVehicleParamsEx(vehicleid,engine,lights,alarm,doors,bonnet,boot,objective); if(engine==1) { engineOff(vehicleid); GameTextForPlayer(playerid,"~w~Motor ~r~ausgeschaltet",1500,4); } else { if(tank[vehicleid]>0) { if(istkaputt[vehicleid]==0) { engineOn(vehicleid); GameTextForPlayer(playerid,"~w~Motor ~g~angeschaltet",1500,4); } else { SendClientMessage(playerid,COLOR_GRAD2,"Der Motor ist kaputt."); } } else { SendClientMessage(playerid,COLOR_GRAD2,"ACHTUNG: Kein Benzin!"); } } return 1; }
-
lösch das mal du hast doch schon eine abfrage oder nich
if(Vehicle != INVALID_VEHICLE_ID)
-
Oh danke. Da habe ich versehentlich eines doppelt abgefragt. Allerdings ist das noch nicht alles. Der Motor kann immernoch von jeder Person gestartet werden obwohl es nicht sein Fahrzeug ist
-
du benutzt bestimmt mrm oder? da kann man einfach abfragen ob der jenige der besitzer ist oder nicht
das könnte dir glaube ich helfen:PlayerAuto[i][vkey]
-
Ja ich nutze das MRM Gamemode.
Also bist du der meinung einen neuen Befehl zu erstellen ?
-
ja und mit dem oberen was ich gepostet habe könntest du was anfangen
edit: der code ließt den besitzer aus
-
-
if(strcmp(PlayerAuto[i][vkey],SpielerName(playerid),true))return SendClientMessage(playerid,COLOR_LIGHTRED,"Dieses Auto gehört nicht dir!");
-
if(strcmp(PlayerAuto[i][vkey],SpielerName(playerid),true))return SendClientMessage(playerid,COLOR_LIGHTRED,"Dieses Auto gehört nicht dir!");
Scheint nicht zuklappen. Musste es ein wenig umschreiben damit es passt
Code
Alles anzeigenocmd:motor(playerid,params[]) { #pragma unused params if(!IsPlayerInAnyVehicle(playerid))return 1; new vehicleid,i; vehicleid=GetPlayerVehicleID(playerid); if(vehicleid==INVALID_VEHICLE_ID)return 1; if(EventCar[GetPlayerVehicleID(playerid)] && !adminduty[playerid]) return ErrorMsg(playerid, "Das ist ein Eventfahrzeug."); if(GetVehicleModel(vehicleid)==481||GetVehicleModel(vehicleid)==509||GetVehicleModel(vehicleid)==510) { return 1; } new engine,lights,alarm,doors,bonnet,boot,objective; GetVehicleParamsEx(vehicleid,engine,lights,alarm,doors,bonnet,boot,objective); { if(strcmp(PlayerAuto[i][vkey],SpielerName(playerid),true))return SendClientMessage(playerid,COLOR_LIGHTRED,"Dieses Auto gehört nicht dir!"); { if(engine==1) { engineOff(vehicleid); GameTextForPlayer(playerid,"~w~Motor ~r~ausgeschaltet",1500,4); } else { if(tank[vehicleid]>0) { if(istkaputt[vehicleid]==0) { engineOn(vehicleid); GameTextForPlayer(playerid,"~w~Motor ~g~angeschaltet",1500,4); } else { SendClientMessage(playerid,COLOR_GRAD2,"Der Motor ist kaputt."); } } else { SendClientMessage(playerid,COLOR_GRAD2,"ACHTUNG: Kein Benzin!"); } } }} return 1; }
-
besteht das problem weiterhin?
-
Ja das Problem besteht weiterhin
-
Speicherst du in PlayerAuto[i][vkey] den Spielername dem das Fahrzeug gehört? Die Bezeichnung scheint mir nicht passend.
Wenn nein, wo speicherst du den Besitzer des Fahrzeugs, und wie? -
Habs nun wie folgt erledigt
Code
Alles anzeigenocmd:motore(playerid,params[]) { #pragma unused params new vehicleid,engine; if(!IsPlayerInAnyVehicle(playerid)) { vehicleid=GetNearestVehicle(playerid,6,true); } else { vehicleid=GetPlayerVehicleID(playerid); } for(new i=1; i<sizeof(PlayerAuto); i++) { if(!strcmp(SpielerName(playerid),PlayerAuto[i][vkey],true)&&PlayerAuto[i][vmodel]!=0&&PlayerAuto[i][id_x]==vehicleid||!strcmp(SpielerName(playerid),PlayerAuto[i][key1],true)&&strlen(PlayerAuto[i][key1])&&PlayerAuto[i][vmodel]!=0&&PlayerAuto[i][id_x]==vehicleid||!strcmp(SpielerName(playerid),PlayerAuto[i][key2],true)&&strlen(PlayerAuto[i][key2])&&PlayerAuto[i][vmodel]!=0&&PlayerAuto[i][id_x]==vehicleid ||!strcmp(SpielerName(playerid),PlayerAuto[i][key3],true)&&strlen(PlayerAuto[i][key3])&&PlayerAuto[i][vmodel]!=0&&PlayerAuto[i][id_x]==vehicleid||!strcmp(SpielerName(playerid),PlayerAuto[i][key4],true)&&strlen(PlayerAuto[i][key4])&&PlayerAuto[i][vmodel]!=0&&PlayerAuto[i][id_x]==vehicleid||!strcmp(SpielerName(playerid),PlayerAuto[i][key5],true)&&strlen(PlayerAuto[i][key5])&&PlayerAuto[i][vmodel]!=0&&PlayerAuto[i][id_x]==vehicleid) { if(engine==1) { engineOff(vehicleid); GameTextForPlayer(playerid,"~w~Motor ~r~ausgeschaltet",1500,4); } else { engineOn(vehicleid); GameTextForPlayer(playerid,"~w~Motor ~g~angeschaltet",1500,4); } } } return 1; }
-
Funktioniert es dann so wie du es möchtest?
Wenn ja, dann sehe ich trotzdem noch einen Fehler, und zwar weist du der Variable "engine" in dem Befehl nie einen Wert zu, sprich du kannst den Motor nicht mehr ausschalten. Das musst du noch via GetVehicleParamsEx abfragen. -
Ohja. Ist mir garnicht aufgefallen. Vielleicht kannst du mir aber noch bei einer Sache helfen.
Nun soll der Besitzer sein Fahrzeug starten können. Allerdings soll der User auch die Fraktionsfahrzeuge starten können in der Fraktion in die er ist. Zurzeit habe ich es so aufgebaut
Code
Alles anzeigenocmd:motor(playerid,params[]) { #pragma unused params if(!IsPlayerInAnyVehicle(playerid))return 1; new vehicleid,i; vehicleid=GetPlayerVehicleID(playerid); if(vehicleid==INVALID_VEHICLE_ID)return 1; if(EventCar[GetPlayerVehicleID(playerid)] && !adminduty[playerid]) return ErrorMsg(playerid, "Das ist ein Eventfahrzeug."); if(GetVehicleModel(vehicleid)==481||GetVehicleModel(vehicleid)==509||GetVehicleModel(vehicleid)==510) { return 1; } new engine,lights,alarm,doors,bonnet,boot,objective; GetVehicleParamsEx(vehicleid,engine,lights,alarm,doors,bonnet,boot,objective); { if(!strcmp(SpielerName(playerid),PlayerAuto[i][vkey],true)&&PlayerAuto[i][vmodel]!=0&&PlayerAuto[i][id_x]==vehicleid||!strcmp(SpielerName(playerid),PlayerAuto[i][key1],true)&&strlen(PlayerAuto[i][key1])&&PlayerAuto[i][vmodel]!=0&&PlayerAuto[i][id_x]==vehicleid||!strcmp(SpielerName(playerid),PlayerAuto[i][key2],true)&&strlen(PlayerAuto[i][key2])&&PlayerAuto[i][vmodel]!=0&&PlayerAuto[i][id_x]==vehicleid ||!strcmp(SpielerName(playerid),PlayerAuto[i][key3],true)&&strlen(PlayerAuto[i][key3])&&PlayerAuto[i][vmodel]!=0&&PlayerAuto[i][id_x]==vehicleid||!strcmp(SpielerName(playerid),PlayerAuto[i][key4],true)&&strlen(PlayerAuto[i][key4])&&PlayerAuto[i][vmodel]!=0&&PlayerAuto[i][id_x]==vehicleid||!strcmp(SpielerName(playerid),PlayerAuto[i][key5],true)&&strlen(PlayerAuto[i][key5])&&PlayerAuto[i][vmodel]!=0&&PlayerAuto[i][id_x]==vehicleid) { if(engine==1) { engineOff(vehicleid); GameTextForPlayer(playerid,"~w~Motor ~r~ausgeschaltet",1500,4); } else { if(tank[vehicleid]>0) { if(istkaputt[vehicleid]==0) { engineOn(vehicleid); GameTextForPlayer(playerid,"~w~Motor ~g~angeschaltet",1500,4); } else { SendClientMessage(playerid,COLOR_GRAD2,"Der Motor ist kaputt."); } } else { SendClientMessage(playerid,COLOR_GRAD2,"ACHTUNG: Kein Benzin!"); } { if(vehicleid == FraktAuto[i][id_x]) { if(!IsPlayerInFrakt(playerid,FraktAuto[i][besitzer])) { SendClientMessage(playerid, 0xFF0000FF, "Error: Du bist nicht in der Fraktion dieses Fahrzeugs."); return 1; } if(engine==1) { engineOff(vehicleid); GameTextForPlayer(playerid,"~w~Motor ~r~angeschaltet",1500,4); } if(engine==0) { engineOn(vehicleid); GameTextForPlayer(playerid, "~n~~n~~n~~n~~n~~n~~W~Motor ~g~aus!", 2000, 5); } } } } } } return 1; }
Allerdings passiert beim versuch des Starten des Motors nichts.
-
Versuche es so:
ocmd:motor(playerid,params[])
{
#pragma unused params
if(!IsPlayerInAnyVehicle(playerid))return 1;
new vehicleid=GetPlayerVehicleID(playerid);
if(vehicleid==INVALID_VEHICLE_ID)return 1;
if(EventCar[GetPlayerVehicleID(playerid)] && !adminduty[playerid]) return ErrorMsg(playerid, "Das ist ein Eventfahrzeug.");
if(GetVehicleModel(vehicleid)==481||GetVehicleModel(vehicleid)==509||GetVehicleModel(vehicleid)==510)
{
return 1;
}
new engine,lights,alarm,doors,bonnet,boot,objective;
GetVehicleParamsEx(vehicleid,engine,lights,alarm,doors,bonnet,boot,objective);
for(new i = 0; i < sizeof(PlayerAuto); i++)
{
if(!strcmp(SpielerName(playerid),PlayerAuto[i][vkey],true)&&PlayerAuto[i][vmodel]!=0&&PlayerAuto[i][id_x]==vehicleid||!strcmp(SpielerName(playerid),PlayerAuto[i][key1],true)&&strlen(PlayerAuto[i][key1])&&PlayerAuto[i][vmodel]!=0&&PlayerAuto[i][id_x]==vehicleid||!strcmp(SpielerName(playerid),PlayerAuto[i][key2],true)&&strlen(PlayerAuto[i][key2])&&PlayerAuto[i][vmodel]!=0&&PlayerAuto[i][id_x]==vehicleid
||!strcmp(SpielerName(playerid),PlayerAuto[i][key3],true)&&strlen(PlayerAuto[i][key3])&&PlayerAuto[i][vmodel]!=0&&PlayerAuto[i][id_x]==vehicleid||!strcmp(SpielerName(playerid),PlayerAuto[i][key4],true)&&strlen(PlayerAuto[i][key4])&&PlayerAuto[i][vmodel]!=0&&PlayerAuto[i][id_x]==vehicleid||!strcmp(SpielerName(playerid),PlayerAuto[i][key5],true)&&strlen(PlayerAuto[i][key5])&&PlayerAuto[i][vmodel]!=0&&PlayerAuto[i][id_x]==vehicleid)
{
if(engine==1)
{
engineOff(vehicleid);
GameTextForPlayer(playerid,"~w~Motor ~r~ausgeschaltet",1500,4);
}
else
{
if(tank[vehicleid]>0)
{
if(istkaputt[vehicleid]==0)
{
engineOn(vehicleid);
GameTextForPlayer(playerid,"~w~Motor ~g~angeschaltet",1500,4);
}
else
{
SendClientMessage(playerid,COLOR_GRAD2,"Der Motor ist kaputt.");
}
}
else
{
SendClientMessage(playerid,COLOR_GRAD2,"ACHTUNG: Kein Benzin!");
}
}
}
}
for(new i = 0; i < sizeof(FraktAuto); i++)
{
if(vehicleid == FraktAuto[i][id_x])
{
if(!IsPlayerInFrakt(playerid,FraktAuto[i][besitzer]))
{
SendClientMessage(playerid, 0xFF0000FF, "Error: Du bist nicht in der Fraktion dieses Fahrzeugs.");
return 1;
}
if(engine==1)
{
engineOff(vehicleid);
GameTextForPlayer(playerid,"~w~Motor ~r~angeschaltet",1500,4);
}
if(engine==0)
{
engineOn(vehicleid);
GameTextForPlayer(playerid, "~n~~n~~n~~n~~n~~n~~W~Motor ~g~aus!", 2000, 5);
}
break;
}
}
return 1;
}