GTA Közösség - A magyar GTA fórum

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => Segítségkérés => A témát indította: kriszrap - 2014. február 02. - 19:26:43

Cím: Több atm
Írta: kriszrap - 2014. február 02. - 19:26:43
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?
Cím: Több atm
Írta: Dfoglalo - 2014. február 02. - 19:38:35
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.
Cím: Több atm
Írta: kriszrap - 2014. február 02. - 20:15:43
\"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?
Cím: Több atm
Írta: Dfoglalo - 2014. február 02. - 20:25:16
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
Cím: Több atm
Írta: kriszrap - 2014. február 02. - 20:38:42
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.
Cím: Több atm
Írta: Dfoglalo - 2014. február 02. - 20:45:28
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.
Cím: Több atm
Írta: kriszrap - 2014. február 02. - 20:49:16
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??
Cím: Több atm
Írta: Dfoglalo - 2014. február 03. - 03:09:43
Ha az i változóra gondolsz, szerintem felesleges playeridsre tenni, én mindig sima változóként használom.
Cím: Több atm
Írta: Kovacs_Richard - 2014. február 03. - 08:00:35
Idézetet írta: kriszrap date=1391369922\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"46256\" data-ipsquote-contentclass=\"forums_Topic
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...
Cím: Több atm
Írta: kriszrap - 2014. február 03. - 13:51:55
ment a plusz :))) köszi:)