Ко всем форвардам добавим:
Code: Select all
forward NoRoof(playerid);
forward anim2(playerid);
В public OnPlayerUpdate(playerid) добавим:
Code: Select all
NoRoof(playerid);
Далее создадим функцию NoRoof, естественно вне пабликов:
Code: Select all
public NoRoof(playerid)
{
new carid = GetPlayerSurfingVehicleID(playerid); // получаем айди авто на котором игрок
if(carid != INVALID_VEHICLE_ID ) // если айди правильный(тоесть игрок на авто)
{
new Float:speed = GetVehicleSpeed(carid); // получаем скорость авто
new cm=GetVehicleModel(carid); // получаем модель авто
switch(cm)
{
case 430,446,452,453,454,472,473,484,493,595:{return 1;} // если это лодка, скидывать ненадо)
default:{}
}
if(speed > 30) // Если скорость больше 30км\час
{
new Float:slx, Float:sly, Float:slz;
GetPlayerPos(playerid, slx, sly, slz);
SetPlayerPos(playerid, slx, sly, slz+2.5); // Немного подкинем игрока чтоб он не остался на авто
ApplyAnimation(playerid, "ped", "BIKE_fallR", 4.0, 0, 1, 0, 0, 0,0); // Применим анимку падения
new Float:hp;
GetPlayerHealth(playerid, hp);
SetPlayerHealth(playerid, hp-15); // Отнимем 15хп
SetTimerEx("anim2", 1100, 0, "d", playerid); // Поставим на таймер анимку чтобы игрок нормально встал
}
}
return 1;
}
Дальше надо показать вторую анимку, создать её так же надо через паблик, так как функция SetTimerEx этого требует
Code: Select all
public anim2(playerid)
{
ApplyAnimation(playerid, "ped", "getup", 4.0, 0, 1, 0, 0, 0,0);
return 1;
}
И в конце мода вставим функцию получения скорости авто
Code: Select all
stock GetVehicleSpeed(vehicleid)
{
new Float:Px,Float:Py,Float:Pz;
GetVehicleVelocity(vehicleid,Px,Py,Pz);
return floatround(floatsqroot(Px*Px+Py*Py+Pz*Pz) * 100.0);
}