PartyGameOficial 0 Odesláno: 10. Srpen, 2020 Share Odesláno: 10. Srpen, 2020 Zdravím, chtěl bych se zeptat, jak mám vytvořit: IsPlayerInArea, nebo spíše přidat, je to vlastně zóna, nechápu ty pozice. Děkuji za odpovědi Zde je kód: //---------------------------------------------------------- if( IsPlayerInArea(playerid, 1749.8782, 1813.9310, -1728.3934, -1676.0796) || IsPlayerInArea(playerid, -1994.5334, -1908.3115, 551.3755, 624.5874) || IsPlayerInArea(playerid, 2072.4409, 2242.1787, 1373.1871, 1482.8796) { if(GetPlayerWeapon(playerid) != 0) { if(GetPlayerVirtualWorld(playerid) == 0) { SetPlayerArmedWeapon(playerid,0); } } switch(GetVehicleModel(GetPlayerVehicleID(playerid))) { case 425, 432, 447, 520: { SPIB(playerid, "~r~Vojenska technika je u warpu zakazana!", 3); RemovePlayerFromVehicle(playerid); } } } //---------------------------------------------------------- Link to comment Share on other sites More sharing options...
Janik22 4 Odesláno: 10. Srpen, 2020 Share Odesláno: 10. Srpen, 2020 Rozpiš sa čo chceš spravít Link to comment Share on other sites More sharing options...
DuFF 81 Odesláno: 10. Srpen, 2020 Share Odesláno: 10. Srpen, 2020 (upraveno) Predpokladám, že ide o obdĺžnikovú (výška nás nezaujíma) zónu zadanú 2 protiľahlými bodmi. Označme tieto body A, B a príslušné súradnice týchto bodov Ax, Ay, Bx a By. Na tomto obrázku vidno zónu, ktorej Ax = 1, Ay = 2, Bx = 3 a By = 5. V tejto zóne ležia všetky body, ktorých súradnica x je väčšia alebo rovná 1 a menšia alebo rovná 3 a zároveň ich súradnica y je väčšia alebo rovná 2 a menšia alebo rovná 5. Vidíš, že v zóne ležia všetky body, ktorých súradnica x je medzi Ax a Bx a zároveň ich súradnica y je medzi Ay a By. Mohol by si teda napísať niečo takéto: Spoiler stock IsPlayerInArea(playerid, Float:Ax, Float:Bx, Float:Ay, Float:By) { new Float:x, Float:y, Float:z; GetPlayerPos(playerid, x, y, z); return Ax <= x <= Bx && Ay <= y <= By; } Tento kód má jeden problém - musíš vždy zabezpečiť, aby bolo Ax vždy menšie alebo rovné Bx a Ay vždy menšie alebo rovné By. Aby si si nemusel dávať taký veľký pozor, môžeš vo funkcii kontrolovať, či to naozaj platí a v prípade potreby argumenty vymeniť. Spoiler stock IsPlayerInArea(playerid, Float:Ax, Float:Bx, Float:Ay, Float:By) { new Float:tmp; if (Ax > Bx) { tmp = Ax; Ax = Bx; Bx = tmp; } if (Ay > By) { tmp = Ay; Ay = By; By = tmp; } new Float:x, Float:y, Float:z; GetPlayerPos(playerid, x, y, z); return Ax <= x <= Bx && Ay <= y <= By; } Edited 10. Srpen, 2020 by DuFF 3 Link to comment Share on other sites More sharing options...
PartyGameOficial 0 Odesláno: 11. Srpen, 2020 Author Share Odesláno: 11. Srpen, 2020 Děkuji, už to mám. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now