Awesome | Дата: Суббота, 25.02.2012, 05:47 | Сообщение # 1 |
 Генерал-майор
Группа: Проверенные
Сообщений: 70
Награды: 14
Репутация: 25
Статус: Offline
| Проверка игрока в зоне. Чтобы проверить игрока в зоне, нам нужно написать в любом месте скрипта такую функцию:
Code public IsPlayerInArea(playerID, Float:data[4]) { new Float:X, Float:Y, Float:Z; GetPlayerPos(playerID, X, Y, Z); if(X >= data[0] && X <= data[2] && Y >= data[1] && Y <= data[3]) { return 1; } return 1; }
Также в начале скрипта ее нужно объявить. Так делается с любой новой автовызываемой функцией. У каждой новой автовызываемой функции обязательно должен быть свой forward. Code forward IsPlayerInArea(playerID, Float:data[4]);
Теперь мы можем ставить такие условия: Code if(IsPlayerInArea(playerid,-36.5483,-57.9948,-17.2655,-49.2967)) { }
Эту проверку можно поместить, например, внутри команды. Теперь о том, как правильно получить все 4 координаты, указанные в скобках функции. Синтаксис условия такой: Code if(IsPlayerInArea(playerid,Xmin,Ymin,Xmax,Ymax))
Итак, встаем в левый нижний угол создаваемой вами зоны, получаем координаты командой save. Далее встаем в правый верхний угол и снова получаем координаты. Допустим, мы уже получили вот такие координаты: Code AddPlayerClass(0,2021.0109,1343.0779,10.8130,256.6816,0,0,0,0,0,0); AddPlayerClass(0,2038.6593,1343.9640,10.3990,180.1545,0,0,0,0,0,0);
Нужные нам координаты, т.е. это все координаты X и Y. Берем из этих координат минимальную X-координату - 2021.0109. Ставим ее первой в скобках, затем через запятую минимальную Y-координату - 1343.0779. Дальше то же самое, но уже максимальные координаты. Должно получиться так: Code if(IsPlayerInArea(playerid, 2021.0109, 1343.0779, 2038.6593, 1343.9640))
Вот в принципе и все!
я вернулся
|
|
| |