Простой скрипт добавляющий в мод контр атаку ножом.
Клавиша:
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;
}