Du kannst Code sparen, indem du nur einmal die Keyabfrage machst und in dieser die IsPlayerInRangeOfPoint-Abfragen.
Damit sollte dann auch dein Problem behoben sein, dass du es nur bei einem eingeben kannst.
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(newkeys & KEY_SECONDARY_ATTACK )
{
if(!IsPlayerInRangeOfPoint(playerid,1.0,2265.5400,1675.8618,1090.4453))
{
SetPlayerInterior(playerid,0);
SetPlayerVirtualWorld(playerid,9);
SetPlayerPos(playerid,2268.7078,1675.7773,94.9219);
}
else if(!IsPlayerInRangeOfPoint(playerid,1.0,2266.0137,1619.4340,1090.4453))
{
SetPlayerInterior(playerid,0);
SetPlayerVirtualWorld(playerid,9);
SetPlayerPos(playerid,2269.3811,1619.5103,94.9219);
}
else if(!IsPlayerInRangeOfPoint(playerid,1.0,2268.7078,1675.7773,94.9219))
{
SetPlayerInterior(playerid,1);
SetPlayerVirtualWorld(playerid,9);
SetPlayerPos(playerid,2265.5400,1675.8618,1090.4453);
}
else if(!IsPlayerInRangeOfPoint(playerid,1.0,2269.3811,1619.5103,94.9219))
{
SetPlayerInterior(playerid,0);
SetPlayerVirtualWorld(playerid,9);
SetPlayerPos(playerid,2266.0137,1619.4340,1090.4453);
}
}
return 1;
}
26 Error's
- Deniz0801
- Geschlossen
- Erledigt
-
-
Dein Code funktioniert so eigentlich gar nicht...da du nach dem ersten return den Code unterbrichst...
Zudem sind deine permanenten if-Abfragen für den key völlig unnötig...schreibs doch einfach so:
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(newkeys & KEY_SECONDARY_ATTACK ) {
if(IsPlayerInRangeOfPoint(playerid,1.0,2265.5400,1675.8618,1090.4453)) {
SetPlayerInterior(playerid,0);
SetPlayerVirtualWorld(playerid,9);
SetPlayerPos(playerid,2268.7078,1675.7773,94.9219);
} else if(IsPlayerInRangeOfPoint(playerid,1.0,2266.0137,1619.4340,1090.4453)) {
SetPlayerInterior(playerid,0);
SetPlayerVirtualWorld(playerid,9);
SetPlayerPos(playerid,2269.3811,1619.5103,94.9219);
} else if(IsPlayerInRangeOfPoint(playerid,1.0,2268.7078,1675.7773,94.9219)) {
SetPlayerInterior(playerid,1);
SetPlayerVirtualWorld(playerid,9);
SetPlayerPos(playerid,2265.5400,1675.8618,1090.4453);
} else if(IsPlayerInRangeOfPoint(playerid,1.0,2269.3811,1619.5103,94.9219)) {
SetPlayerInterior(playerid,0);
SetPlayerVirtualWorld(playerid,9);
SetPlayerPos(playerid,2266.0137,1619.4340,1090.4453);
}
}
return 1;
}//Edit: Scott_Mitchell:
Dein Code ist falsch...die ! stimmen nichtmfg.
-
Ich habe auch nur seinen Code genommen und "angepasst".
Wenn er sich mit PAWN auseinandersetzen möchte, sollte er seinen eigenen Fehler schon selbst bemerken und somit auch, dass "!" eine Negierung ist und abgefragt wird, ob er NICHT in dieser Range ist. -
Ich habe auch nur seinen Code genommen und "angepasst".
Wenn er sich mit PAWN auseinandersetzen möchte, sollte er seinen eigenen Fehler schon selbst bemerken und somit auch, dass "!" eine Negierung ist und abgefragt wird, ob er NICHT in dieser Range ist.
Schau dir mal seinen Code genauer anEr hat die ! für IsPlayerInRangeOfPoint verwendet um herauszufinden, ob er nicht in dieser Range ist und dann ein return benutzt um den Code zu beenden.
Wenn es jetzt nur 1ne Abfrage gewesen wäre, dann hätte das auch wunderbar funktioniert...
Doch bei mehreren ist das natürlich so falschmfg.
-
Danke an Kaliber und Scott_Mitchell, geht nun.
Gruß.
/close
-
breadfish.de
Hat das Thema geschlossen.