Автор <BaRReT[T]>
- При ходьбе/беге увеличивается усталось и растет выносливость
- Скорость усталости зависит от того как вы бегаете/ходите
- Если усталость заполнена, то активируется анимка усталости и игрока замораживает пока он не отдохнет
Ко всем переменным:
Code: Select all
new Float:Vin[MAX_PLAYERS];
new Float:MaxVin[MAX_PLAYERS];
new VinTimer;
new Text:Textdraw0[MAX_PLAYERS];
new Text:Textdraw1[MAX_PLAYERS];
К форвардам:
Code: Select all
forward Vint();
В OnPlayerConnect:
Code: Select all
Vin[playerid] = 100.0;
MaxVin[playerid] = 100.0;
Textdraw0[playerid] = TextDrawCreate(611.000000, 104.000000, "1");
TextDrawBackgroundColor(Textdraw0[playerid], 255);
TextDrawFont(Textdraw0[playerid], 1);
TextDrawLetterSize(Textdraw0[playerid], 0.000000, 0.599999);
TextDrawColor(Textdraw0[playerid], -1);
TextDrawSetOutline(Textdraw0[playerid], 0);
TextDrawSetProportional(Textdraw0[playerid], 1);
TextDrawSetShadow(Textdraw0[playerid], 1);
TextDrawUseBox(Textdraw0[playerid], 1);
TextDrawBoxColor(Textdraw0[playerid], 255);
TextDrawTextSize(Textdraw0[playerid], 494.000000, 0.000000);
Textdraw1[playerid] = TextDrawCreate(609.000000, 107.000000, "1");
TextDrawBackgroundColor(Textdraw1[playerid], 255);
TextDrawFont(Textdraw1[playerid], 1);
TextDrawLetterSize(Textdraw1[playerid], 0.000000, -0.000000);
TextDrawColor(Textdraw1[playerid], -1);
TextDrawSetOutline(Textdraw1[playerid], 0);
TextDrawSetProportional(Textdraw1[playerid], 1);
TextDrawSetShadow(Textdraw1[playerid], 1);
TextDrawUseBox(Textdraw1[playerid], 1);
TextDrawBoxColor(Textdraw1[playerid], 1263225855);
TextDrawTextSize(Textdraw1[playerid], 496.000000, -2.000000);
TextDrawHideForPlayer(playerid,Textdraw0[playerid]);
TextDrawHideForPlayer(playerid,Textdraw1[playerid]);
В OnPlayerSpawn:
Code: Select all
TextDrawShowForPlayer(playerid,Textdraw0[playerid]);
TextDrawShowForPlayer(playerid,Textdraw1[playerid]);
В OnGameModeInit:
Code: Select all
VinTimer = SetTimer("Vint",10,1);
В OnGameModeExit:
Code: Select all
KillTimer(VinTimer);
Сам паблик выносливости в конец мода:
Code: Select all
public Vint()
{
new al[32];
new an[32];
for(new i=0;i<MAX_PLAYERS;i++)
{
if(!IsPlayerConnected(i)) continue;
TextDrawHideForPlayer(i,Textdraw1[i]);
TextDrawTextSize(Textdraw1[i], 496+109/MaxVin[i]*Vin[i], -2.0);
TextDrawShowForPlayer(i,Textdraw1[i]);
if(!GetPlayerSpeed(i) && MaxVin[i] > Vin[i]) Vin[i] += 0.01;
if(GetPVarInt(i,"Ustal"))
{
if(Vin[i] >= 10)
{
TogglePlayerControllable(i,1);
ClearAnimations(i);
SetPVarInt(i,"Ustal",0);
}
else continue;
}
if(!strcmp(al,"PED") && !strcmp(an,"RUN_PLAYER"))
{
if(GetPlayerSpeed(i) > 130)
{
if(Vin[i] < 0.05)
{
TogglePlayerControllable(i,0);
SetPVarInt(i,"Ustal",1);
ApplyAnimation(i,"FAT","IDLE_tired",4.0,1,0,0,0,0,1);
}
Vin[i] -= 0.05;
MaxVin[i] += 0.005;
continue;
}
else if(GetPlayerSpeed(i) > 50)
{
if(Vin[i] < 0.02)
{
TogglePlayerControllable(i,0);
SetPVarInt(i,"Ustal",1);
ApplyAnimation(i,"FAT","IDLE_tired",4.0,1,0,0,0,0,1);
}
Vin[i] -= 0.02;
MaxVin[i] += 0.002;
continue;
}
else if(GetPlayerSpeed(i) > 0)
{
if(Vin[i] < 0.005)
{
TogglePlayerControllable(i,0);
SetPVarInt(i,"Ustal",1);
ApplyAnimation(i,"FAT","IDLE_tired",4.0,1,0,0,0,0,1);
}
Vin[i] -= 0.005;
MaxVin[i] += 0.0005;
continue;
}
}
}
return 1;
}
Для выносливости нужна функция вычисления скорости движения игрока, её так же в конец мода:
Code: Select all
stock GetPlayerSpeed(playerid)
{
new Float:ST1[4];
GetPlayerVelocity(playerid,ST1[0],ST1[1],ST1[2]);
ST1[3] = floatsqroot(floatpower(floatabs(ST1[0]), 2.0) + floatpower(floatabs(ST1[1]), 2.0) + floatpower(floatabs(ST1[2]), 2.0)) * 1000;
return floatround(ST1[3]);
}