Сравнение 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) --------------------------------------------- Блиин! Все, понял ошибку. Когда игроки респавнятся, то они немного над землей стоят, а потом падают. И координата меняется. Поэтому и не работает. Всем спасибо, поставлю + к репе!!
|
|
| |