Szerző Téma: Több atm  (Megtekintve 839 alkalommal)

Több atm
« Dátum: 2014. február 02. - 19:26:43 »
0 Show voters
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?

Nem elérhető Dfoglalo

  • 4069
  • Globális Moderátor
    • Profil megtekintése
Több atm
« Válasz #1 Dátum: 2014. február 02. - 19:38:35 »
0 Show voters
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.

Több atm
« Válasz #2 Dátum: 2014. február 02. - 20:15:43 »
0 Show voters
\"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?

Nem elérhető Dfoglalo

  • 4069
  • Globális Moderátor
    • Profil megtekintése
Több atm
« Válasz #3 Dátum: 2014. február 02. - 20:25:16 »
0 Show voters
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

Több atm
« Válasz #4 Dátum: 2014. február 02. - 20:38:42 »
0 Show voters
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.

Nem elérhető Dfoglalo

  • 4069
  • Globális Moderátor
    • Profil megtekintése
Több atm
« Válasz #5 Dátum: 2014. február 02. - 20:45:28 »
0 Show voters
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.

Több atm
« Válasz #6 Dátum: 2014. február 02. - 20:49:16 »
0 Show voters
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??
« Utoljára szerkesztve: 2014. február 02. - 20:54:27 írta kriszrap »

Nem elérhető Dfoglalo

  • 4069
  • Globális Moderátor
    • Profil megtekintése
Több atm
« Válasz #7 Dátum: 2014. február 03. - 03:09:43 »
0 Show voters
Ha az i változóra gondolsz, szerintem felesleges playeridsre tenni, én mindig sima változóként használom.

Nem elérhető Kovacs_Richard

  • 1743
  • HRP Fejlesztő
  • Discord: Kovacs_Richard#0321
    • Profil megtekintése
    • Hun Role Play Web
Több atm
« Válasz #8 Dátum: 2014. február 03. - 08:00:35 »
+2 Show voters
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...
Régóta nem tevékenykedem, mint SA-MP scripter.
HRP Fejlesztő.

Több atm
« Válasz #9 Dátum: 2014. február 03. - 13:51:55 »
0 Show voters
ment a plusz :))) köszi:)

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal