IsPlayerInArea

Započeo Trawis, Septembar 01, 2009, 15:33:05 POSLE PODNE

prethodna tema - sledeća tema

0 članova i 1 gost pregledaju ovu temu.

Trawis

evo kao Å¡to naslov kaze, pa ako bi mi mogo neko detaljnije objasnit kako da snimim pozicije one min_x min_y max_x max_y, to me zbunjuje i onda sve zeznem  :(
Unaprijed Hvala  :)

Ovo je veoma korisna komanda koja moze u mnogim situacijama posluzit... Primjerice meni veoma dobro dosla kada sam pravio granice... Da bi ste mogli radit sa ovom komandom morate je razumit...

Prvo sto trebate uradit jeste ovaj dio kopirati pri dnu vase skripte:

IsPlayerInArea(playerid, Float:minx, Float:maxx, Float:miny, Float:maxy)
{
       new Float:x, Float:y, Float:z;
       GetPlayerPos(playerid, x, y, z);
       if (x > minx && x < maxx && y > miny && y < maxy) return 1;
       return 0;
}


Netreba vam public niti stock samo je ovako stavite... Slijedeca stvar sto trebate uradit jeste ubaciti ovu komandu pod OnPlayerCommandText:


if (strcmp("/pos", cmdtext, true, 10) == 0)
{
     new string1[256];
     new Float:X,Float:Y,Float:Z;
     GetPlayerPos(playerid,X,Y,Z);
     format(string1,sizeof(string1),"Position = X: %.0f , Y: %.0f , Z: %.0f",X,Y,Z);
     SendClientMessage(playerid,0x33FF33AA,string1);
     return 1;
}


E sada dolazi pitanje kako kreirati prostor (area)... Ovaj prostor najvise vam lici na pravokutnik. Da vam objasnim kako radi

                   Sjever         max x/y
         --------------------
        |                           |
        |                           |
        |                           |
        |                           |
        |                           |
        |                           |
        |                           |
         --------------------
min x/y           Jug


Reciom da zelite ovakvu povrsinu kreirati i neku komandu ako igrac udje u ovaj prostor... Morate shvatit kako to radi.

Prvo otidjete u recimo u ovaj kut gdje pise min x/y i upisete /pos. Izbacit ce vam se X, Y i Z kordinate. Vama netreba Z jer ova komanda IsPlayerInArea nema granice u visini. Zapisete x y kordinate na papir. Idite po dijagonali prema max x y i kada ste zadovoljni duzinom opet ukucajte /pos. Sada morate vidit koja je manja a koja veca velicina. Znaci min x je onaj x koji je manji, a max x je onaj koji je veci. Isto tako sa Y uradite. Ako to zamjenite necete dobit pravokutnik vec neku povrsinu dragicijeg oblika. E sada dolazi malo da shvatite kako ovo radi... Vi kada otvorite mapu u GTA ona je ovako okrenuta odnosno orjentirana... Kao neki kordinatni sustav, ustvari sve kordinate koji vi sacuvate i jesu kordinatni sustav i ovdje postoji tocka gdje su i X i Y u nul tocki (gdje se sjeku x i y os).


Znaci da bi ste kreirali neku povrsinu, morate prvo otici u jedan kut (min x/y) i upisati /pos i zapisati kordinate. Onda idete dijagonalom (bijela crta) dokle vi zelite da vam bude povrsina i opet /pos i zapisete kordinate. E sada vidite koja je veca X kordinata a koja manja. Koja je manja uzimate je za minx. Isto tako sa Y. Zasto sam dva pravokutnika nacrtao? Jer mogu biti dva slucaja. 1 slucaj kada X predstavlja sirinu a Y duzinu i drugi slucaj kada Y predstavlja sirinu a X duzinu. Sve zavisi od toga kako ste rotirani. I napomena nemozete nikad ovakav prostor kreirati:


Znaci stranice vaseg prostora moraju biti paralene sa X i Y osi...

E sada kada ste sigurni da ste dobili dobar prostor i kordinate i imate ih zapisane. Sada kreirate fukciju u vasem GameModu. Otvorite vas game mode i ubacujte slijedece podatke.


forward ImeFunkcije();Gdje su i sve ostale forward funkcije

SetTimer("ImeFunckije", 1000, 1); Pod OnGameModeInIt

Sada dolazi na red pisanje funcije...

Pri dnu vase skripte upisite

public ImeFunkcije()
{
   for(new i = 0; i < MAX_PLAYERS; i++) //loop tj. komanda vrijedi za svih 200 slotova
   {
       if(IsPlayerInArea(i, minx, maxx, miny, maxy)) //upisite vase kordinate koje ste sacuvali preko /pos komande
       {
                  //e sad ovdje dolazi funkcija koja ce se desit kada igrac udje u prostor koji ste vi zabiljezili, ja cu staviti bezveze da se ispise neki tekst
                   GameTextForPlayer(i, "Usli ste u prostor koji je obiljezen", 5000, 1); // ovo je samo primjer
       }
   }
   return 1;
}


I to je to... Mozete bilo sta ubacivati ovdje pod funkcije. Mozete staviti da igrac dobije wanted kao sto sam ja pravio, da igrac umre, da dobije neko oruzje, da ga porta negdje uglavnom bilo sta.

Eto nadam se da sam vam barem malo pomogao sa ovom funkcijom.




Neznam tko je napravio TUT al vidjo sam ga na CH sad na GF forumu
Poslednja Izmena: Septembar 01, 2009, 15:49:27 POSLE PODNE od [CH]pliva♫♪

[NUDIM ]
Gang-Rush server TDM besplatno


Chrome

dujma ti je to pravio  ;)

i kad stavis stock onda se kompajla samo kad je koristena a kad stavis bez icega onda se misli upotrijebiti pa ce ti doc warning..

Trawis

e hvala puno thumbsup odo probat pa javim  :)

hvala :P ko da ste znali sta radim :P pokusavao sam tako da napravim prostor iz koga se nemoze pobeci :P

Trawis

hvala puno uspio sam sve radi  thumbsup  :)
LOCK
Poslednja Izmena: Septembar 01, 2009, 18:38:40 POSLE PODNE od [EF]Trawis