Форум Pawn.Wiki - Воплоти мечту в реальность!: Проверка Игрока В Радиусе - Форум Pawn.Wiki - Воплоти мечту в реальность!

Перейти к содержимому

Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

Проверка Игрока В Радиусе Оценка: -----

#1
Пользователь офлайн   Romzes 

  • ( ^_^ )
  • Вставить ник
  • Раскрыть информацию
Чтобы проверить игрока в радиусе, нам нужно написать в любом месте скрипта такую
функцию:
public PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z)
{
if(IsPlayerConnected(playerid))
{
new Float:oldposx, Float:oldposy, Float:oldposz;
new Float:tempposx, Float:tempposy, Float:tempposz;
GetPlayerPos(playerid, oldposx, oldposy, oldposz);
tempposx = (oldposx -x);
tempposy = (oldposy -y);
tempposz = (oldposz -z);
if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) &&
((tempposz < radi) && (tempposz > -radi)))
{
return 1;
}
}
return 0;
}

Также в начале скрипта ее нужно объявить. Так делается с любой новой автовызываемой
функцией. У каждой новой автовызываемой функции обязательно должен быть свой forward.
forward PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z);

В отличие от проверки в зоне или кубе тут достаточно получить 1 раз координату и
вручную вписать радиус. Написав автовызываемую функцию PlayerToPoint мы можем ставить
такие условия:
if(PlayerToPoint(3.0,playerid, 72.1256, 1544.2145, 15.7742))
{
}

Эту проверку можно поместить, например, внутри команды.
Вот в принципе и все!

Автор Cloud
2

#2
Пользователь офлайн   xkluz1v 

  • Прохожий
  • Вставить ник
  • Раскрыть информацию
Мне вот нада что бы когда вводиш каманду /buy она работола только в определенном месте , что я не так делаю?? Помогите пож-ста.

public OnPlayerCommandText(playerid, cmdtext[])
{
if(strcmp("/buy", cmdtext, true, 10) == 0)if(PlayerToPoint(3.0,playerid, 1809.4683,-1570.9761,13.4654))
{
ShowPlayerDialog(playerid, 1, DIALOG_STYLE_LIST,"~r~??????", "[1]HotDog-50$\n[2]Lays-10$\n[3]Colla-5$","??????","??????");
return 1;
}
return 0;
}

Мод компелируеться , но каманда не работает.
Поставлю
+

Сообщение отредактировал xkluz1v: 29 декабря 2011 - 01:05

0

#3
Пользователь офлайн   Silver 

  • Местный
  • Вставить ник
  • Раскрыть информацию
if(strcmp(cmdtext,"/buy",true) == 0)
{
if(PlayerToPoint(3.0,playerid, 1809.4683,-1570.9761,13.4654))
{
    ShowPlayerDialog(playerid, 1, DIALOG_STYLE_LIST,"~r~??????", "[1]HotDog-50$\n[2]Lays-10$\n[3]Colla-5$","??????","??????"); 
    return 1;                                                            
}                                              
return 0;
}

Сообщение отредактировал Silver: 29 декабря 2011 - 01:25

4

#4
Пользователь офлайн   xkluz1v 

  • Прохожий
  • Вставить ник
  • Раскрыть информацию
Спс работает. А вот и +
1

#5
Пользователь офлайн   Mike 

  • Профессионал
  • Вставить ник
  • Раскрыть информацию
очень хорошая вещь, но она не использует таймеров, и будет лучше ее использовать с помощью stock
3

#6
Пользователь офлайн   alisa 

  • Прохожий
  • Вставить ник
  • Раскрыть информацию
Да молодец очень хорошо всем пригодится....держи +
2

#7
Пользователь офлайн   razor2211 

  • Прохожий
  • Вставить ник
  • Раскрыть информацию
А чем стандартная функция IsPlayerInRangeOfPoint вам не угодила?
0

Поделиться темой:


Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей


Яндекс.Метрика