Самая большая беда, что данный код примитивен только тем что каждый может написать его сам и не подсматривать ни куда. Но это я не о том. Вот в чем суть
Мы видим, что проверка идёт когда игрок в радиусе 2 метров от точки установки шипов, а не машина (вдруг рано или позно машины будут повреждаться без нахождения в них игрока) Также мы видим, что проверка идёт когда игрок или даже пусть центр машины попадает в круг с радиусом 2 метра от шипов, т.е. нету проверки когда именно колёса передние или задние попадают на шипы.
Для этого как минимум надо получить координаты центра передней и задней оси. допустим через такую ф-ию, чтобы получить координаты передней оси.
Code
stock GetXYInfront(Float:distance, Float:angle, &Float:x, &Float:y) { //получить координаты перед машиной //new Float:z, Float:angle; //GetVehiclePos(vehicleid, x, y, z); //GetVehicleZAngle(vehicleid, angle); x += (distance * floatsin(-angle, degrees)); y += (distance * floatcos(-angle, degrees)); }
Потом надо написать уравнение или создать ф-ию когда точка попадает не в круг, а на линию. Можно представить линию ввиде вытянутого параллелепипеда и тогда можно использовать эту ф-ию
Code
stock IsPlayerInArea(playerid, Float:data[6]) { //если игрок находится в прямоугольной зоне ограниченной координатами из массива data if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid) && gPlayerSpawned[playerid]==1) { new Float:x, Float:y, Float:z; GetPlayerPos(playerid, x, y, z); if (x > data[0] && x < data[3] && y > data[1] && y < data[4] && z > data[2] && z < data[5]) return 1; } return 0; }
Но я ещё так не сделал, т.к. не было время. Но если бы делал, то делал именно так.
Потом надо написать уравнение или создать ф-ию когда точка попадает не в круг, а на линию. Можно представить линию ввиде вытянутого параллелепипеда и тогда можно использовать эту ф-ию
blah blah blah Чувак кончай умничать, написав пару заумных постов ты себе авторитета не заработаешь! Все описанные тобой функции и проверки давно есть в паблике, нужно только потрудиться поискать. Так что иди "воруй" в другом месте! И создал Бог женщину!.. Существо получилось злобное, но симпатичное...
DANGER1979, вдогонку... И чего ты этим добьешься? IsPlayerInArea пашет нормально только в областях, параллельных осям x,y. Колеса буду пробиваться парами.
Короче, слюнтяи... Если будет время, сделаю все заебысъ...
Врятли у тебя получиться сделать для каждого колеса, растояние между колёсами слишком мало. Даже в ф-ии public OnPlayerUpdate(playerid) можешь не успеть провести правильно проверку.
Если не можешь сделать правильно, не считай, что это невозможно! Можно рассчитать все попадания с точностью до миллиметра!
DANGER1979, С твоим вариантом нагрузка намного больше будет. Этот скрипт какбы первый который появился... подождите и кто нибудь выложит крутой скрипт в паблик.
stepmex, Вы как всегда в своём репертуаре. Человек высказался некого не тронув, за что получил от вас оскорбления.
Quote (|LoLWhat|Chez)
mike55595, мы это и так на каждом углу пишем, слепое ты создание!