#define FILTERSCRIPT #define STAMINA_UPDATE_TIME //you can set you'r own update time by defining STAMINA_UPDATE_TIME before including stamina #include <a_samp> #include <stamina> //req y_hooks and foreach //and you must add this callback: or you will get error. public OnPlayerOutOfStamina(playerid) { return 1; }
native SetPlayerStamina(playerid, Float:stamina); native SetPlayerStaminaSubVal(playerid, Float:sub_val); native GetPlayerStamina(playerid, &Float:stamina); native GetPlayerStaminaSubVal(playerid);
OnPlayerOutOfStamina(playerid)
#include <a_samp>
#include <stamina>
public OnPlayerOutOfStamina(playerid)
{
ApplyAnimation(playerid, "PED", "IDLE_tired", 4.1, 0, 1, 1, 0, STAMINA_UPDATE_TIME*5, 1);
return 1;
}
#include <a_samp>
#include <stamina>
public OnPlayerOutOfStamina(playerid)
{
new Float:hp;
GetPlayerHealth(playerid, hp);
SetPlayerHealth(playerid, hp-1.5);
return 1;
}
Looks good, but your are calling functions inside iterator, if you replace with variable directly should be more optimized.
Example: GetPlayerStamina > Line: 92 |
public es_StaminaUpdate() { new animlib[32], animname[32]; foreach(new i : Player) { GetAnimationName(GetPlayerAnimationIndex(i), animlib, 32, animname, 32); if(!strcmp("SWIM_CRAWL", animname, true) || !strcmp("SWIM_UNDER", animname, true)) continue; if(GetSpeed(i) > 18.0) { if(g_PlayerStamina[i]> 0.0) { SetPlayerStamina(i, g_PlayerStamina[i]-g_SubStamina[i]); } else { OnPlayerOutOfStamina(i); } } else { if(g_PlayerStamina[i] < 100.0) { SetPlayerStamina(i, g_PlayerStamina[i]+g_SubStamina[i]); } } } return 1; }
Код:
public es_StaminaUpdate() { new animlib[32], animname[32]; foreach(new i : Player) { GetAnimationName(GetPlayerAnimationIndex(i), animlib, 32, animname, 32); if(!strcmp("SWIM_CRAWL", animname, true) || !strcmp("SWIM_UNDER", animname, true)) continue; if(GetSpeed(i) > 18.0) { if(g_PlayerStamina[i]> 0.0) { SetPlayerStamina(i, g_PlayerStamina[i]-g_SubStamina[i]); } else { OnPlayerOutOfStamina(i); } } else { if(g_PlayerStamina[i] < 100.0) { SetPlayerStamina(i, g_PlayerStamina[i]+g_SubStamina[i]); } } } return 1; } |
GetPlayerStamina(i); foreach(new i : Player)
#include <a_samp>
#include <stamina>
#include <progress2>
#include <zcmd>
new sbtime[MAX_PLAYERS];
new PlayerBar:StaminaBar[MAX_PLAYERS];
public OnPlayerConnect(playerid)
{
if(IsPlayerNPC(playerid)) return 1;
StaminaBar[playerid] = CreatePlayerProgressBar(playerid, 547.0, 30.0, 63.0, 5.0, 0xFFFFFFFF, 100.0, BAR_DIRECTION_RIGHT, 0x000000FF);
ShowPlayerProgressBar(playerid, StaminaBar[playerid]);
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
if(IsPlayerNPC(playerid)) return 1;
DestroyPlayerProgressBar(playerid, StaminaBar[playerid]);
return 1;
}
public OnPlayerOutOfStamina(playerid)
{
ApplyAnimation(playerid, "PED", "IDLE_tired", 4.1, 0, 1, 1, 0, STAMINA_UPDATE_TIME*5, 1);
return 1;
}
CMD:sub(playerid, params[])
{
SetPlayerStaminaSubVal(playerid, strval(params));
return 1;
}
public OnPlayerUpdate(playerid)
{
new Float:stamina;
if(!IsPlayerNPC(playerid))
{
if(sbtime[playerid] != gettime())
{
GetPlayerStamina(playerid, stamina);
SetPlayerProgressBarValue(playerid, StaminaBar[playerid], stamina);
sbtime[playerid] = gettime();
}
}
return 1;
}