-
Sziasztok van 20 Atmem és azt hogy tudom ellenõrizni hogy a játékos ott van e??
mert ha így csinálnám:
if(IsPlayerInRangeOfPoint(playerid,1.0,2032.0376,1319.3666,10.8203) || IsPlayerInRangeOfPoint(playerid,1.0, 2158.7371,939.8642,10.8203) || IsPlayerInRangeOfPoint(playerid,1.0, 2183.2349,2161.5310,10.8203) || IsPlayerInRangeOfPoint(playerid,1.0,2086.3616,2047.7804,11.0579))
Sztem nem így csinálnátok meg hosszú idõ egyesével.
Van szebb megoldás?
-
Egy újabb iffel., maximum le kell másolnod még egyszer, hogy mi történjen, ha a közelében van a játékos a pontnak. Vagy a lefuttatandó dolgokat beleteszed egy saját függvénybe, amit a többi if alatt meghívsz, és akkor nem kell másolgatni, és egy helyen tudod szerkeszteni az egészet. Vagy esetleg rövidíted az IsPlayerInRangeOfPoint parancsot egy saját függvénnyel, és akkor talán ki fog férni egy sorba is.
-
\"Vagy a lefuttatandó dolgokat beleteszed egy saját függvénybe, amit a többi if alatt meghívsz, és akkor nem kell másolgatni, és egy helyen tudod szerkeszteni az egészet\"
írsz egy rövid példát?
-
if(isplayer atmnél van e cucc)
{
ATMEztCsinalja();
}
else if(betelt a sor itt van még több isplayerpoint cucckombó)
{
ATMEztCsinalja();
}
stock ATMEztCsinalja();
{
shówdialog(atm, list, \"pénz berak\\npénz kivesz\");
}
Megfelel, vagy ne hülyéskedjem el? :D
-
hhmmmm lehet rájöttem egy jobb megoldásra de nem biztos.
new Float:atmpoz[]=
{x,y,z},
{x,y,z},
{x,y,z}
CMD:Atm(playerid,params[])
{
for(new i=0; i<sizeof(atmpoz); i++)
{
if(IsPlayerInRangeOfPoint(playerid, 1.0, atmpoz[0], atmpoz[1] atmpoz[2])
{
break;
}
}
stb stb
return 1;
}
igy sikerülne ??
Nem teszteltem meg csak hírtelen felindulásból írtam.
-
Hmm, ez is jó megoldás, és talán még egyszerûbb is. Csináld így, praktikus, grat :D Viszont ha történik valami akkor is, amikor nincs a játékos egyik ATM közelében sem, iktass be egy változót, amelynek az értékét a átváltod, ha van találat, ha meg nincs, nem vált az érték, és azt ellenõrizve fut le az a másik dolog.
-
Köszi tippet eszembe volt amugy :)) azért nagyon köszi:)
szerk: Ja még annyi hogy a for ban lévõ ugy mond megszámoló nem playerides ugye??
-
Ha az i változóra gondolsz, szerintem felesleges playeridsre tenni, én mindig sima változóként használom.
-
hhmmmm lehet rájöttem egy jobb megoldásra de nem biztos.
new Float:atmpoz[]=
{x,y,z},
{x,y,z},
{x,y,z}
CMD:Atm(playerid,params[])
{
for(new i=0; i<sizeof(atmpoz); i++)
{
if(IsPlayerInRangeOfPoint(playerid, 1.0, atmpoz[0], atmpoz[1] atmpoz[2])
{
break;
}
}
stb stb
return 1;
}
igy sikerülne ??
Nem teszteltem meg csak hírtelen felindulásból írtam.
az irány jó csak kicsit pontosítani kell :)
new Float:ATMPos[][3] =
{x,y,z},
{x,y,z},
{x,y,z};
kihelyezném saját függvénybe az ellenõrzést:
stock IsPlayerNearAtm(playerid)
{
for(new i = 0; i < sizeof(ATMPos); i++)
{
if(IsPlayerInRangeOfPoint(playerid, 3.0, ATMPos[0], ATMPos[1] ATMPos[2]) { return true; }
}
return false;
}
szükség esetén minimális módosítással azt is letudod kérdezni melyik ATM mellett áll...
-
ment a plusz :))) köszi:)