Система работает так:Если вы бежите быстро,прыгаете,или бьёте
(именно бьёте,стоит проверка на оружие,так что бага со стрельбой не будет!)
то система отнимает энергию,если она равна 0,то вам ставится анимация одышки.
Скрипт прост,но думаю будет многим интересен! И так начнём добавляем следующие форварды
Код
forward Energy();//Создаём паблик,который будет прибавлять енергию игроку
forward TiredCheck();//проверяет действия игрока,и отнимает энергию игрока
Далее добавляем
Код
new Tired[MAX_PLAYERS];//флажок
new sprint[MAX_PLAYERS];//флажок
Далее в паблик OnPlayerKeyStateChange добавляем проверку на бег и удары
Код
if(GetPlayerState(playerid) == 1)
{
if(newkeys == 8 && GetPlayerState(playerid) == 1 ) sprint[playerid]=1;
if(oldkeys == 8 && sprint[playerid] == 1) sprint[playerid]=0;
}
if(newkeys & KEY_JUMP || newkeys & KEY_SPRINT )
{
if(IsPlayerConnected(playerid))
{
if(Tired[playerid] != 1)
{
if(IsPlayerInAnyVehicle(playerid)){}
if(PlayerInfo[playerid][pEnergy] <= 0)
{}
else if(PlayerInfo[playerid][pEnergy] <= 5)
{PlayerInfo[playerid][pEnergy] -= 1;}
else{PlayerInfo[playerid][pEnergy] -= 2;
}
}
}
}
if(newkeys & KEY_FIRE )
{
if(GetPlayerWeapon(playerid) == 0 && GetPlayerSpecialAction(playerid) == 0 && Tired[playerid] != 1)
{
PlayerInfo[playerid][pEnergy] -= 5;
}
else if(GetPlayerWeapon(playerid) != 0 || GetPlayerSpecialAction(playerid) != 0)
{}
}
В OnGameModeInit:
Код
SetTimer("Energy",1600,1);
SetTimer("TiredCheck",900,1);
в конец:
Код
public TiredCheck()
{
for(new i = 0; i<MAX_PLAYERS;i++)
{
if(IsPlayerConnected(i))
{
if(!IsPlayerInAnyVehicle(i))
{
if(Tired[i] == 0)
{
if(sprint[i] != 0)
{
PlayerInfo[i][pEnergy] -= 1;
}
if(PlayerInfo[i][pEnergy] <= 1)
{
ApplyAnimation(i,"PED","IDLE_tired",4.1,0,1,1,1,1);
Tired[i] = 1;
}
}
else
{
if(PlayerInfo[i][pEnergy] >= 5)
{
Tired[i] = 0;
ClearAnimations(i);
}
if(PlayerInfo[i][pEnergy] <= 4)
{
ApplyAnimation(i,"PED","IDLE_tired",4.1,0,1,1,1,1);
}
}
}
}
}
return 1;
}
public Energy()
{
for(new i = 0; i<MAX_PLAYERS;i++)
{
if(IsPlayerConnected(i))
{
if(PlayerInfo[i][pEnergy] <= 99 && sprint[i] != 1)
{
PlayerInfo[i][pEnergy]++;
}
return 1;
}
}
return 1;
}
к new
Код
new Text:TextDrawForEnergy[MAX_PLAYERS];
в onplayerconnect:
Код
TextDrawForEnergy[playerid] = TextDrawCreate(1.0,440.0," ");
TextDrawAlignment(Text:TextDrawForEnergy[playerid],1);
TextDrawSetShadow(Text:TextDrawForEnergy[playerid],1);
TextDrawFont(Text:TextDrawForEnergy[playerid],3);
TextDrawSetOutline(Text:TextDrawForEnergy[playerid],1);
TextDrawLetterSize(Text:TextDrawForEnergy[playerid],0.361999,0.800000);
TextDrawBoxColor(Text:TextDrawForEnergy[playerid], 0x00000070);
TextDrawTextSize(Text:TextDrawForEnergy[playerid], 800, 105);
TextDrawUseBox(Text:TextDrawForEnergy[playerid], 1);
TextDrawShowForPlayer(playerid,Text:TextDrawForEnergy[playerid]);
в OnPlayerUpdate:
Код
new bride[64];
format(bride,sizeof(bride),"Energy:%d",PlayerInfo[playerid][pEnergy]);
TextDrawSetString(Text:TextDrawForEnergy[playerid],bride);
TextDrawShowForPlayer(playerid,Text:TextDrawForEnergy[playerid]);
В OnPlayerDisconnect
Код
TextDrawDestroy(TextDrawForEnergy[playerid]);
Автор: Неизвестный.