KeRkA^^
Дебютант
Доброе утро, пользователи Pawno-Info!
Сейчас я хотел бы выложить систему прокола шин ножом.
Примечание:
Вырезано с FreeLife RP!
Автор: kissad21
Ко всем new's:
Ко всем stock'ам:
В OnPlayerKeyStateChange(playerid, newkeys, oldkeys):
Сейчас я хотел бы выложить систему прокола шин ножом.
Примечание:
Вырезано с FreeLife RP!
Автор: kissad21
Ко всем new's:
PHP:
new TestGenerator[16][5] = {
{0,0,0,0,0},
{0,0,0,1,1},
{0,0,1,0,2},
{0,0,1,1,3},
{0,1,0,0,4},
{0,1,0,1,5},
{0,1,1,0,6},
{0,1,1,1,7},
{1,0,0,0,8},
{1,0,0,1,9},
{1,0,1,0,10},
{1,0,1,1,11},
{1,1,0,0,12},
{1,1,0,1,13},
{1,1,1,0,14},
{1,1,1,1,15}
};
PHP:
stock IsPlayerNearVehicleWheel(playerid, vehicleid, wheel=-1)
{
new Float:x,Float:y,Float:z,Float:a;
GetVehiclePos(vehicleid, x, y, z);
GetVehicleZAngle(vehicleid, a);
new Float:wheelrear[3];
switch(wheel)
{
case 0,2: GetVehicleModelInfo(GetVehicleModel(vehicleid), VEHICLE_MODEL_INFO_WHEELSFRONT, wheelrear[0],wheelrear[1],wheelrear[2]);
case 1,3: GetVehicleModelInfo(GetVehicleModel(vehicleid), VEHICLE_MODEL_INFO_WHEELSREAR, wheelrear[0],wheelrear[1],wheelrear[2]);
default: return false;
}
switch(wheel)
{
case 0,1:
{
x+=floatsqroot((wheelrear[0]*wheelrear[0])+(wheelrear[1]*wheelrear[1]))*floatsin(-atan2(wheelrear[0], wheelrear[1])-a,degrees);
y+=floatsqroot((wheelrear[0]*wheelrear[0])+(wheelrear[1]*wheelrear[1]))*floatcos(-atan2(wheelrear[0], wheelrear[1])-a,degrees);
}
case 2,3:
{
x+=floatsqroot((wheelrear[0]*wheelrear[0])+(wheelrear[1]*wheelrear[1]))*floatsin(atan2(wheelrear[0], wheelrear[1])-a,degrees);
y+=floatsqroot((wheelrear[0]*wheelrear[0])+(wheelrear[1]*wheelrear[1]))*floatcos(atan2(wheelrear[0], wheelrear[1])-a,degrees);
}
}
if(IsPlayerInRangeOfPoint(playerid, 1, x, y, z)) return true;
return false;
}
PHP:
if(newkeys & KEY_FIRE && GetPlayerWeapon(playerid) == 4)
{
if(GetPVarInt(playerid,"KnifeWheel") < gettime())
{
SetPVarInt(playerid,"KnifeWheel",gettime()+2);
new Float:Pos_X,Float:Pos_Y,Float:Pos_Z;
for(new i;i<MAX_VEHICLES;i++)
{
GetVehiclePos(i,Pos_X,Pos_Y,Pos_Z);
if(IsPlayerInRangeOfPoint(playerid,4,Pos_X,Pos_Y,Pos_Z))
{
for(new w; w < 4; w++)
{
if(IsPlayerNearVehicleWheel(playerid, i, w))
{
new panels, doors, lights, tires;
GetVehicleDamageStatus(i, panels, doors, lights, tires);
for(new G;G<sizeof(TestGenerator);G++)
{
if(TestGenerator[G][4] == tires)
{
for(new test_g;test_g<sizeof(TestGenerator);test_g++)
{
if(TestGenerator[test_g][0] == 1 && TestGenerator[test_g][1] == TestGenerator[G][1] && TestGenerator[test_g][2] == TestGenerator[G][2] && TestGenerator[test_g][3] == TestGenerator[G][3] && !w
|| TestGenerator[test_g][0] == TestGenerator[G][0] && TestGenerator[test_g][1] == 1 && TestGenerator[test_g][2] == TestGenerator[G][2] && TestGenerator[test_g][3] == TestGenerator[G][3] && w == 1
|| TestGenerator[test_g][0] == TestGenerator[G][0] && TestGenerator[test_g][1] == TestGenerator[G][1] && TestGenerator[test_g][2] == 1 && TestGenerator[test_g][3] == TestGenerator[G][3] && w == 2
|| TestGenerator[test_g][0] == TestGenerator[G][0] && TestGenerator[test_g][1] == TestGenerator[G][1] && TestGenerator[test_g][2] == TestGenerator[G][2] && TestGenerator[test_g][3] == 1 && w == 3)
{
UpdateVehicleDamageStatus(i, panels, doors, lights, TestGenerator[test_g][4]);
RemovePlayerWeapon(playerid, 4);
return true;
}
}
return true;
}
}
return true;
}
}
break;
}
}
}
return true;
}
Последнее редактирование:
