Яндекс.Метрика
Простой скрипт добавляющий в мод контр атаку ножом.
Клавиша: F

Этапы развития:
0.1 Создается объект ножа в руке;
0.1 Наносится урон в радиусе;
0.2 Добавлен звук удара ножом;
0.2 Исправлено удаление ножа;
0.2 При малом уровне хп удар ножом невозможен;
0.2 Рандомный урон;
0.3 Оптимизация;
0.4 Во время удара оружие удаляется из инвентаря;
0.5 Урон наносится перед игроком, а не в радиусе.


Ко всем new:
new weapons[13][2];

Ко всем forward:
forward Knife100HP(playerid);
forward Knife100HPDO(playerid);

В OnPlayerKeyStateChange:
if(((newkeys & 16) && GetPlayerState(playerid)==PLAYER_STATE_ONFOOT))
{
    new weap = GetPlayerWeapon(playerid);
    if(weap == 4) SetTimerEx("Knife100HP", 0, false, "i", playerid);
    return 1;
}

В конец мода:
public Knife100HP(playerid)
{
    new Float: health;
    GetPlayerHealth(playerid, health);
    if(health <= 10) return 1;
    new vehid = GetClosestCar(playerid, 5.0);
    for(new i = 0; i < MAX_VEHICLES; i++) if(i == vehid) return 1;
    for(new w = 0; w < 13; w++) GetPlayerWeaponData(playerid, w, weapons[w][0], weapons[w][1]);
    ResetPlayerWeapons(playerid);
    ApplyAnimation(playerid, "ped", "FightA_1",4.0,0,0,0,0,0,1);
    SetPlayerAttachedObject(playerid, 6, 335, 5, 0.17, 0.0, 0.0, 0.0, 180.0, 0.0);
    SetTimerEx("Knife100HPDO", 650, false, "i", playerid);
    new Float:p[3];
    GetPlayerPos(playerid,p[0],p[1],p[2]);
    foreach(Player, i)
    {
        if(IsPlayerInRangeOfPoint(i,3.0,p[0],p[1],p[2]))
            PlayAudioStreamForPlayer(i, "http://m1n1vv.narod.ru/phrases/knife1.mp3",p[0],p[1],p[2], 5.0,true);
        GetPlayerTurn(playerid, p[0],p[1],p[2],1.0,180);
        if(!IsPlayerConnected(i) || i == playerid) continue;
        return SetPlayerHealth(i, random(-65 - -99));
    }
    return 1;
}
public Knife100HPDO(playerid)
{
    RemovePlayerAttachedObject(playerid,6);
    for (new w = 0; w < 13; w++) GivePlayerWeapon(playerid, weapons[w][0], weapons[w][1]);
    return 1;
}
stock GetClosestCar(playerid, Float:dist)
{ 
    new Float:x,Float:y,Float:z; 
    for(new i = 0; i < MAX_VEHICLES; i++)
    { 
        if(GetVehicleModel(i) == 0) continue;
        GetVehiclePos(i,x,y,z); 
        if(IsPlayerInRangeOfPoint(playerid,dist,x,y,z)) 
        return i;
    }
    return -1; 
}
stock GetPlayerTurn(playerid, &Float:x, &Float:y, &Float:z, Float:distance,turn)
{
    new Float:angle,Float:dis;
    dis = dis/2 - distance;
    GetPlayerPos(playerid, x, y, z);
    GetPlayerFacingAngle(playerid, angle);
    x += (dis * floatsin(-angle+turn, degrees));
    y += (dis * floatcos(-angle+turn, degrees));
    return 1;
}