Yoa hi,
ich wollte grade mein Autohaus testen jedoch wenn ich jetzt ein Auto betrete oder
eins Spawn und das betrete kommt immer Du bist kein Beamter der Bundespolizei
Hier der Code:
public OnPlayerStateChange(playerid, newstate, oldstate)
{
if(newstate == PLAYER_STATE_DRIVER)
{
new vehicleid = GetPlayerVehicleID(playerid);
if(GetPlayerVehicleID(playerid) == PolizeiFahrzeug(vehicleid))
{
if(pInfo[playerid][team] != 1)
{
SendClientMessage(playerid,COLOR_GRAD2,"Du bist kein Beamter der Bundespolizei!");
RemovePlayerFromVehicle(playerid);
}
}
else if(GetPlayerVehicleID(playerid) == SaniFahrzeug(vehicleid))
{
if(pInfo[playerid][team] != 2)
{
SendClientMessage(playerid,COLOR_GRAD2,"Du bist kein Beamter Notärtzte/Sanitäter!");
RemovePlayerFromVehicle(playerid);
}
}
else if(GetPlayerVehicleID(playerid) == CamorasFahrzeug(vehicleid))
{
if(pInfo[playerid][team] != 3)
{
SendClientMessage(playerid,COLOR_GRAD2,"Du bist kein Mitglied der „Blood Angel„ Gang!");
RemovePlayerFromVehicle(playerid);
}
}
else if(GetPlayerVehicleID(playerid) == BlackHandFahrzeug(vehicleid))
{
if(pInfo[playerid][team] != 4)
{
SendClientMessage(playerid,COLOR_GRAD2,"Du bist kein Mitglied der „Black Hand„ Mafia!");
RemovePlayerFromVehicle(playerid);
}
}
else if(GetPlayerVehicleID(playerid) == NewsFahrzeug(vehicleid))
{
if(pInfo[playerid][team] != 5)
{
SendClientMessage(playerid,COLOR_GRAD2,"Du bist kein Mitglied der Newsreporter!");
RemovePlayerFromVehicle(playerid);
}
}
else if(GetPlayerVehicleID(playerid) == FahrschulFahrzeug(vehicleid) || fahrstunde[playerid] == false)
{
if(pInfo[playerid][team] != 6)
{
SendClientMessage(playerid,COLOR_GRAD2,"Du bist kein Mitglied der Fahrschule oder du nimmst grade keine Fahrstunde");
RemovePlayerFromVehicle(playerid);
}
}
}
return 1;
}
Ich hoffe einer weis weiter und kann mir helfen.
mfg
Egal welches Auto werde rausgeworfen
- lollipop
- Geschlossen
- Erledigt
-
-
Es wäre interessant zu wissen, wie deine PolizeiFahrzeug-Funktion aussieht. Außerdem könnte man es noch ein wenig verbessern:
new vehicleid = GetPlayerVehicleID(playerid);
if(GetPlayerVehicleID(playerid)
Warum nutzt du dann nicht die Variable?
Außerdem kann man alles in eine Abfrage machen, das ist kürzer, hat aber den selben Effekt.
if(GetPlayerVehicleID(playerid) == PolizeiFahrzeug(vehicleid) && pInfo[playerid][team] != 1)
{
SendClientMessage(playerid,COLOR_GRAD2,"Du bist kein Beamter der Bundespolizei!");
RemovePlayerFromVehicle(playerid);
} -
Das buggt tortzdem rum.
jetzt habe ich das etwas anders gemacht:
public OnPlayerStateChange(playerid, newstate, oldstate)
{
if(newstate == PLAYER_STATE_DRIVER)
{
new veh = GetPlayerVehicleID(playerid);
for(new v=0; v<sizeof(Kaufliste); v++)
{
if(veh == Kaufliste[v][aId])
{
new string[250];
format(string, (sizeof string), "Fahrzeugname: %s\nPreis: %d\nReperaturskosten: %d",Kaufliste[v][aname],Kaufliste[v][apreis],Kaufliste[v][reperatur]);
ShowPlayerDialog(playerid,538,DIALOG_STYLE_MSGBOX,"Fahrzeugkauf",string,"Kaufen","Abbrechen");
}
}
for(new v = 0; v < sizeof(PolizeiAuto); v++)
{
if(veh == PolizeiAuto[v])
{
if(pInfo[playerid][team] != 1)
{
SendClientMessage(playerid,COLOR_RED,"Du bist kein Beamter der Bundespolizei!");
RemovePlayerFromVehicle(playerid);
}
}
}
for(new v = 0; v < sizeof(SanitaeterAuto); v++)
{
if(veh == SanitaeterAuto[v])
{
if(pInfo[playerid][team] != 2)
{
SendClientMessage(playerid,COLOR_RED,"Du bist kein Mitglied der Sanitäter!");
RemovePlayerFromVehicle(playerid);
}
}
}
for(new v = 0; v < sizeof(CamorasAuto); v++)
{
if(veh == CamorasAuto[v])
{
if(pInfo[playerid][team] != 3)
{
SendClientMessage(playerid,COLOR_RED,"Du bist kein Mitglied der las Camoras Mafia!");
RemovePlayerFromVehicle(playerid);
}
}
}
for(new v = 0; v < sizeof(BlackHandAuto); v++)
{
if(veh == BlackHandAuto[v])
{
if(pInfo[playerid][team] != 4)
{
SendClientMessage(playerid,COLOR_RED,"Du bist kein Mitglied der Black Hand Gang!");
RemovePlayerFromVehicle(playerid);
}
}
}
for(new v = 0; v < sizeof(NewsAuto); v++)
{
if(veh == NewsAuto[v])
{
if(pInfo[playerid][team] != 5)
{
SendClientMessage(playerid,COLOR_RED,"Du bist kein Mitglied der Newsreporter!");
RemovePlayerFromVehicle(playerid);
}
}
}
for(new v = 0; v < sizeof(FahrschulAuto); v++)
{
if(veh == FahrschulAuto[v])
{
if(pInfo[playerid][team] != 6 || fahrstunde[playerid] == false)
{
SendClientMessage(playerid,COLOR_GRAD2,"Du bist kein Mitglied der Fahrschule oder du nimmst grade keine Fahrstunde");
RemovePlayerFromVehicle(playerid);
}
}
}
}
return 1;
}
Wenn ich jetzt in ein Kaufbares Auto einsteige erscheint mir zwar der Dialog aber es spammt mich mit 10-20 Nachrichten voll mit Du bist kein Beamter der...
Du bist kein Mitglied....
von allem anderen halt.
Kannste mir das erklären warum das jetzt so ist und wie es richtig sein muss?//edit An sich wenn ich sagen wir in ein Autohausauto einsteige wird mir der Dialog gezeigt.
Jedoch werde ich aus dem Auto rausgeschmissen und bekomme 10-20 nachrichten von jeder Fraktion das ich nicht in der Fraktion bin.
mfg -
Return, der Retter in der Not.
Entweder je nach der letzten Funktion ein return oder einfach die Fuktion returnen, geht ebenso, da sie, wenn er erfolgreich angezeigt wird, 1 returnt/zurückgegeben. Das heißt:
// Entweder
ShowPlayerDialog(playerid,538,DIALOG_STYLE_MSGBOX,"Fahrzeugkauf",string,"Kaufen","Abbrechen");
return 1;
// Oder
return ShowPlayerDialog(playerid,538,DIALOG_STYLE_MSGBOX,"Fahrzeugkauf",string,"Kaufen","Abbrechen");Bei den Anderen musst du das gleiche machen. Außerdem würde ich String nicht immer neu erstellen, sondern lieber einmal und global (außerhalb eines Publics und am besten über dem ersten Public, in dem er genutzt wird -> ganz oben).
-
breadfish.de
Hat das Thema geschlossen.