Текущая версия SA-MP: 0.3.7


IP: 77.220.180.96:7777
  Новые сообщения · Поиск
  • Страница 1 из 1
  • 1
Модератор форума: KaTacTpOqpa  
Как узнать дистанцию между игроками
BJIADOKC Сообщение # 1  | 17:06:16
Скриптеры
Сообщений: 601
Репутация: 161
немного математики, и не оч простой код в самый конец:

Code

forward Float:GetDistanceBetweenPlayers(p1,p2);
public Float:GetDistanceBetweenPlayers(p1,p2)
{
new Float:x1,Float:y1,Float:z1,Float:x2,Float:y2,Float:z2;
if (!IsPlayerConnected(p1) || !IsPlayerConnected(p2))
{
return -1.00;
}
GetPlayerPos(p1,x1,y1,z1);GetPlayerPos(p2,x2,y2,z2);
return floatsqroot(floatpower(floatabs(floatsub(x2,x1)),2)+floatpower(floatabs(floatsub(y2,y1)),2)+floatpower(floatabs(floatsub(z2,z1)),2));
}

а вот и живой пример:

Code

forward OnPlayerUpdateNew(playerid);
public OnPlayerUpdateNew(playerid)
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(Float:GetDistanceBetweenPlayers(playerid,i) > 250) return SendClientMessage(playerid,0x00FF00AA,"Вы слишком далеко от других игроков");
}
}
SetTimer("OnPlayerUpdateNew",5000,0);
}

вышеуказанный пример выдает сообщение каждые 5 секунд, но только если игрок находится на расстоянии от других более чем в 250
расстояние измеряется в float единицах

урок от BJIADOKC


тут больше не сижу... открыл свой проект
Polcar Сообщение # 2  | 20:12:19
Руководитель проекта SM
Администраторы
Сообщений: 788
Репутация: 323
круто, есть чему поучиться biggrin



Demetrius Сообщение # 3  | 21:58:18
VIP-пользователи
Сообщений: 1192
Репутация: 158
вот это да... я нуб в скриптинге...

Sweet >>> Armin >>> Demetrius

SA:MP >> MTA:SA >> IRL
  • Страница 1 из 1
  • 1
Поиск: