|
Проверка на перемещение
|
|
| maximus-vrn | Дата: Воскресенье, 06.03.2011, 18:03 | Сообщение # 1 |
|
Уверенный в себе
Группа:
Продвинутые
Сообщений: 174
Награды: 2
Город: Воронеж
Репутация: 13
Замечания: 0%
Статус: 
| Проверка должна сработать при изменении позиции игрока например на 10 метров, что в данной проверке неверно? Code GetPlayerPos(i, plocx, plocy, plocz); if (((floatcmp(plocx, x[i]) > 10) || (floatcmp(plocx, x[i]) < -10)) || ((floatcmp(plocy, y[i]) > 10) || (floatcmp(plocy, y[i]) < -10)) || ((floatcmp(plocz, z[i]) > 10) || (floatcmp(plocz, z[i]) < -10))) {
|
| |
|
|
| stepmex | Дата: Воскресенье, 06.03.2011, 21:41 | Сообщение # 2 |
|
Мастер джэдай
Группа:
Продвинутые
Сообщений: 2914
Награды: 35
Город: Е-бург
Репутация: 1032
Замечания: 0%
Статус: 
| Юзай ускорение. Если нет ускорения, а координаты изменяются то это ТП
И создал Бог женщину!.. Существо получилось злобное, но симпатичное...
|
| |
|
|
| maximus-vrn | Дата: Воскресенье, 06.03.2011, 21:58 | Сообщение # 3 |
|
Уверенный в себе
Группа:
Продвинутые
Сообщений: 174
Награды: 2
Город: Воронеж
Репутация: 13
Замечания: 0%
Статус: 
| Я не античит делаю, хотя тоже не помешало бы. Можно поподробнее про ускорение? А проверка у меня должна была срабатывать каждые 10 метров, но почему-то не работает.
|
| |
|
|
| toneysix | Дата: Воскресенье, 06.03.2011, 21:58 | Сообщение # 4 |
|
Джэдай
Группа:
I'm V.I.P.
Сообщений: 1731
Награды: 77
Город: Салават
Репутация: 1825
Замечания: 0%
Статус: 
| Это же элементарно.. Code stock GetSpeed(playerid) { new Float: posX[3]; if(IsPlayerInAnyVehicle(playerid)) GetVehicleVelocity(GetPlayerVehicleID(playerid), posX[0], posX[1], posX[2]); else GetPlayerVelocity(playerid, posX[0], posX[1], posX[2]); return floatround(floatsqroot(posX[0]*posX[0]+posX[1]*posX[1]+posX[2]*posX[2])); } Использование: if(GetSpeed(playerid) < 10) P.S: При изменение в каком тайм фрейме? Уточни, и что такое xyz, откуда оно берется?
Русскоязычныи портал о MTA/GTA-IV-MP | http://multi-theft-auto.ru
Сообщение отредактировал toneysix - Воскресенье, 06.03.2011, 22:01 |
| |
|
|
| maximus-vrn | Дата: Воскресенье, 06.03.2011, 22:03 | Сообщение # 5 |
|
Уверенный в себе
Группа:
Продвинутые
Сообщений: 174
Награды: 2
Город: Воронеж
Репутация: 13
Замечания: 0%
Статус: 
| Эта проверка стоит в таймере и при срабатывании координаты записываются в xyz, при следующим срабатывании настоящие координаты снова сравниваются с xyz.
|
| |
|
|
| toneysix | Дата: Воскресенье, 06.03.2011, 22:08 | Сообщение # 6 |
|
Джэдай
Группа:
I'm V.I.P.
Сообщений: 1731
Награды: 77
Город: Салават
Репутация: 1825
Замечания: 0%
Статус: 
| maximus-vrn тогда причем тут floatcmp? Можно обойтись обычными вычислениями, получить координаты игрока, из них вычесть координаты последней точки и также каждую проверить на расстояние.
Русскоязычныи портал о MTA/GTA-IV-MP | http://multi-theft-auto.ru
|
| |
|
|
| maximus-vrn | Дата: Воскресенье, 06.03.2011, 22:11 | Сообщение # 7 |
|
Уверенный в себе
Группа:
Продвинутые
Сообщений: 174
Награды: 2
Город: Воронеж
Репутация: 13
Замечания: 0%
Статус: 
| Я и без floatcmp пробовал, но всё равно не срабатывает.
|
| |
|
|
| toneysix | Дата: Воскресенье, 06.03.2011, 22:14 | Сообщение # 8 |
|
Джэдай
Группа:
I'm V.I.P.
Сообщений: 1731
Награды: 77
Город: Салават
Репутация: 1825
Замечания: 0%
Статус: 
| maximus-vrn floatcmp вообще не имеет параметров меньше -1 и больше 1, ты что-то напутал в корне. P.S: Code new Float: tempPos[3]; GetPlayerPos(i, tempPos[0], tempPos[1], tempPos[2]); tempPos[0] -= x[i]; tempPos[1] -= y[i]; tempPos[2] -= z[i]; if ((!(tempPos[0] < 10.0) && !(tempPos[0] > -10.0)) && (!(tempPos[1] < 10.0) && !(tempPos[1] > -10.0)) && (!(tempPos[2] < 10.0) && !(tempPos[2] > -10.0))) { // TODO } Попробуй так. P.S А не легче вообще использовать стандартную IsPlayerInRangeOfPoint? к примеру if(!IsPlayerInRangeOfPoint(i, 10.0, x[i], y[i], z[i]))
Русскоязычныи портал о MTA/GTA-IV-MP | http://multi-theft-auto.ru
Сообщение отредактировал toneysix - Воскресенье, 06.03.2011, 22:38 |
| |
|
|
| maximus-vrn | Дата: Воскресенье, 06.03.2011, 22:33 | Сообщение # 9 |
|
Уверенный в себе
Группа:
Продвинутые
Сообщений: 174
Награды: 2
Город: Воронеж
Репутация: 13
Замечания: 0%
Статус: 
| Да, с floatcmp я напутал. А что мы делаем этим tempPos[0] -= x[i]; tempPos[1] -= y[i]; tempPos[2] -= z[i]; ? Что это за знак минус перед равно?
|
| |
|
|
| toneysix | Дата: Воскресенье, 06.03.2011, 22:37 | Сообщение # 10 |
|
Джэдай
Группа:
I'm V.I.P.
Сообщений: 1731
Награды: 77
Город: Салават
Репутация: 1825
Замечания: 0%
Статус: 
| maximus-vrn это операция присвоения, вместо того, чтобы писать tempPos[0] = tempPos[0] - x[i]; можно написать tempPos[0] -= x[i]; Попробуй использовать функцию IsPlayerInRangeOfPoint, к примеру if(!IsPlayerInRangeOfPoint(i, 10.0, x[i], y[i], z[i]))
Русскоязычныи портал о MTA/GTA-IV-MP | http://multi-theft-auto.ru
|
| |
|
|
| maximus-vrn | Дата: Воскресенье, 06.03.2011, 22:57 | Сообщение # 11 |
|
Уверенный в себе
Группа:
Продвинутые
Сообщений: 174
Награды: 2
Город: Воронеж
Репутация: 13
Замечания: 0%
Статус: 
| С IsPlayerInRangeOfPoint всё оказалось проще и всё работает А вот насчёт этого Code stock GetSpeed(playerid) { new Float: posX[3]; if(IsPlayerInAnyVehicle(playerid)) GetVehicleVelocity(GetPlayerVehicleID(playerid), posX[0], posX[1], posX[2]); else GetPlayerVelocity(playerid, posX[0], posX[1], posX[2]); return floatround(floatsqroot(posX[0]*posX[0]+posX[1]*posX[1]+posX[2]*posX[2])); } я не совсем понял. GetSpeed это ускорение получается? Поставил проверку с ним в таймер с циклом и у меня эта проверка срабатывает даже если я стою.
|
| |
|
|
| toneysix | Дата: Воскресенье, 06.03.2011, 23:00 | Сообщение # 12 |
|
Джэдай
Группа:
I'm V.I.P.
Сообщений: 1731
Награды: 77
Город: Салават
Репутация: 1825
Замечания: 0%
Статус: 
| maximus-vrn смотря какое ты условие поставил, если то, которое дал выше, что если скорость игрока менее 10, то естественно сработает.
Русскоязычныи портал о MTA/GTA-IV-MP | http://multi-theft-auto.ru
|
| |
|
|
| maximus-vrn | Дата: Воскресенье, 06.03.2011, 23:09 | Сообщение # 13 |
|
Уверенный в себе
Группа:
Продвинутые
Сообщений: 174
Награды: 2
Город: Воронеж
Репутация: 13
Замечания: 0%
Статус: 
| Да, поставил меньше 10. Значит это скорость, т.е. нужно как-то узнать максимально возможную скорость и поставить в проверку? И при телепортации эта скорость будет превышена, так?
|
| |
|
|
| toneysix | Дата: Воскресенье, 06.03.2011, 23:14 | Сообщение # 14 |
|
Джэдай
Группа:
I'm V.I.P.
Сообщений: 1731
Награды: 77
Город: Салават
Репутация: 1825
Замечания: 0%
Статус: 
| maximus-vrn нет, телепортацию определяют далеко не по скорости, по скорости ты можешь определить airbreak, но, airbreak часто работает вместе с телепортом, так, что если будет частое беспрерывное изменение позиции, можно трактовать, как airbreak, но если нет скорости и все-таки координаты изменяются, то это явно тп, с помощью функции можно также написать более точный anti speed hack сравнивая макс.скорость каждой машины с полученной. P.S? Так все-таки пишешь анти-чит)
Русскоязычныи портал о MTA/GTA-IV-MP | http://multi-theft-auto.ru
Сообщение отредактировал toneysix - Воскресенье, 06.03.2011, 23:20 |
| |
|
|
| maximus-vrn | Дата: Воскресенье, 06.03.2011, 23:19 | Сообщение # 15 |
|
Уверенный в себе
Группа:
Продвинутые
Сообщений: 174
Награды: 2
Город: Воронеж
Репутация: 13
Замечания: 0%
Статус: 
| Ясно. stepmex писал Quote (stepmex) Юзай ускорение. Если нет ускорения, а координаты изменяются то это ТП так вот как определить ускорение?
|
| |
|
|