Заказать игровой сервер Контакты (заказать плагин/исправить ошибки/другое) Пожертвовать Поиск

[ вход ]
[ последние сообщения ]

  • Страница 1 из 1
  • 1
Сравнение 2 координат
BarD Дата: Среда, 26.02.2014, 12:38:35 | Сообщение # 1
Сообщений: 943
Репутация: 137 [ +/- ]
У меня есть 2 координаты
Код
decl Float:firstpos[MAXPLAYERS + 1][3];
GetClientAbsOrigin(client, firstpos[client]);
и
Код
decl Float:secpos[MAXPLAYERS + 1][3];
GetClientAbsOrigin(client, secpos[client]);

Как их сравнить условием:
Код
if (Они равны)
{
Код
}


Понимаю, вопрос глупый, но, все же, помогите, пожалуйста!
 
Darkeneez Дата: Среда, 26.02.2014, 13:18:27 | Сообщение # 2
Сообщений: 221
Репутация: 18 [ +/- ]
Самый примитивный способ
if (firstpos[client][0] == secpos[client][0] && firstpos[client][1] == secpos[client][1] && firstpos[client][2] == secpos[client][2])
{
}
 
BarD Дата: Среда, 26.02.2014, 17:09:17 | Сообщение # 3
Сообщений: 943
Репутация: 137 [ +/- ]
Ок, протестирую - отпишусь)
 
ThRunningMan Дата: Четверг, 27.02.2014, 09:39:56 | Сообщение # 4
Сообщений: 140
Репутация: 12 [ +/- ]
можно еще проще и даже маленько регулировать, используя функцию измерения дистанции между координатами
Код
if(GetVectorDistance(const Float:vec1[3], const Float:vec2[3]) == 0.0)

Дистанция будет равна 0 когда координаты совпадут
Можно ввести погрешность некоторую допустим чтобы не мучаться и точно не прицеливать в 0 , а ввести разницу допустим небольшу вроде 5 поинтов
Код
If(GetVectorDistance(первая координата, вторая ) == 0.0 || GetVectorDistance(первая координата, вторая) <= 5.0)


Сообщение отредактировал ThRunningMan - Четверг, 27.02.2014, 09:40:54
 
BarD Дата: Четверг, 27.02.2014, 12:08:18 | Сообщение # 5
Сообщений: 943
Репутация: 137 [ +/- ]
Вот делаю плагин для убийства АФК на респе через 10 секунд. В чем ошибка? Вроде так все работает, а если координаты подключаю, то не работает. Подскажите, пожалуйста.
Код
#include <sourcemod>
#include <cstrike>
#include <sdktools>

#pragma semicolon 1

new Float:firstpos[3];

public OnPluginStart()
{
HookEvent("player_spawn", spawn);
}

public Action:spawn(Handle:event, const String:name[], bool:dontBroadcast)
{
new client = GetClientOfUserId(GetEventInt(event, "userid"));
      GetClientEyePosition(client, firstpos);
      CreateTimer(10.0, Timer, client);
}

public Action:Timer(Handle:timer, any:client)
{
decl Float:secpos[3];
    GetClientEyePosition(client, secpos);
    if (firstpos[0] == secpos[0] && firstpos[1] == secpos[1] && firstpos[2] == secpos[2])
{
     ForcePlayerSuicide(client);
     PrintToChat(client, "\x07FF0000[Spawn Killer] \x0700FF00Вы были убиты из-за бездействия!");
}
}


Сообщение отредактировал BarD - Четверг, 27.02.2014, 12:10:23
 
Darkeneez Дата: Четверг, 27.02.2014, 19:43:12 | Сообщение # 6
Сообщений: 221
Репутация: 18 [ +/- ]
GetClientAbsOrigin попробуй это юзать
 
ThRunningMan Дата: Пятница, 28.02.2014, 05:35:33 | Сообщение # 7
Сообщений: 140
Репутация: 12 [ +/- ]
добавь дебаг проверяй координаты которые входят в условие и дальше уже сделашеь вывод, либо тут условие не проходит и нужно что-то мнеять либо что-то другое...
 
BarD Дата: Пятница, 28.02.2014, 07:16:27 | Сообщение # 8
Сообщений: 943
Репутация: 137 [ +/- ]
Цитата Darkeneez ()
GetClientAbsOrigin попробуй это юзать

Попробовал. То же самое.

Цитата ThRunningMan ()
добавь дебаг проверяй координаты которые входят в условие


Не мог бы ты показать на моем примере, как это делается? Просто я дебаги делать не умею. Заранее спасибо!

Добавлено (28.02.2014, 07:16:27)
---------------------------------------------
Блиин! Все, понял ошибку. Когда игроки респавнятся, то они немного над землей стоят, а потом падают. И координата меняется. Поэтому и не работает. Всем спасибо, поставлю + к репе!!

 
  • Страница 1 из 1
  • 1
Поиск: