Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* * * [ghecco_Stamina] *
- - [How to use?]
- : in OnPlayerConnect add this:
- SetPlayerMaxStamina(playerid, STAMINA_DEFAULT_MAX); // STAMINA_DEFAULT_MAX or the value you prefer
- */
- #include <a_samp>
- #if !defined STAMINA_DEFAULT_MAX
- #define STAMINA_DEFAULT_MAX (200)
- #endif
- #if !defined STAMINA_DEFAULT_RECOVERYTIME
- #define STAMINA_DEFAULT_RECOVERYTIME (5000)
- #endif
- public OnPlayerConnect(playerid)
- {
- SetPVarInt(playerid, "MAX_Stamina", STAMINA_DEFAULT_MAX);
- #if defined MyLib_OnPlayerConnect
- MyLib_OnPlayerConnect(playerid);
- #endif
- return 1;
- }
- #if defined _ALS_OnPlayerConnect
- #undef OnPlayerConnect
- #else
- #define _ALS_OnPlayerConnect
- #endif
- #define OnPlayerConnect MyLib_OnPlayerConnect
- #if defined MyLib_OnPlayerConnect
- forward MyLib_OnPlayerConnect(playerid);
- #endif
- public OnPlayerSpawn(playerid)
- {
- SetPVarInt(playerid, "Stamina", GetPVarInt(playerid, "MAX_Stamina"));
- #if defined MyLib_OnPlayerSpawn
- MyLib_OnPlayerSpawn(playerid);
- #endif
- return 1;
- }
- #if defined _ALS_OnPlayerSpawn
- #undef OnPlayerSpawn
- #else
- #define _ALS_OnPlayerSpawn
- #endif
- #define OnPlayerSpawn MyLib_OnPlayerSpawn
- #if defined MyLib_OnPlayerSpawn
- forward MyLib_OnPlayerSpawn(playerid);
- #endif
- public OnPlayerUpdate(playerid)
- {
- if(IsPlayerRunning(playerid)) GivePlayerStamina(playerid, -1); // if the player run, it subtracts the player's stamina
- else if(GetPVarInt(playerid, "Stamina") < GetPVarInt(playerid, "MAX_Stamina")) GivePlayerStamina(playerid, 1); // if the player is not running, he recovers the current stamina up to his MAX
- #if defined MyLib_OnPlayerUpdate
- MyLib_OnPlayerUpdate(playerid);
- #endif
- return 1;
- }
- #if defined _ALS_OnPlayerUpdate
- #undef OnPlayerUpdate
- #else
- #define _ALS_OnPlayerUpdate
- #endif
- #define OnPlayerUpdate MyLib_OnPlayerUpdate
- #if defined MyLib_OnPlayerUpdate
- forward MyLib_OnPlayerUpdate(playerid);
- #endif
- forward OnPlayerStaminaOver(playerid);
- public OnPlayerStaminaOver(playerid) // when the player is exhausted
- {
- SetPlayerExhausted(playerid, true);
- return 1;
- }
- forward SetPlayerExhausted(playerid, bool:Exhausted);
- public SetPlayerExhausted(playerid, bool:Exhausted) // set if the player is exhausted (only to help IsPlayerRunning)
- {
- if(Exhausted)
- {
- TogglePlayerControllable(playerid,0);
- TogglePlayerControllable(playerid,1);
- ApplyAnimation(playerid, "PED", "IDLE_tired", 4.1, 0, 1, 1, 0, STAMINA_DEFAULT_RECOVERYTIME, 1);
- SetPVarInt(playerid, "Exhausted", 1);
- SetTimerEx("SetPlayerExhausted", STAMINA_DEFAULT_RECOVERYTIME, false, "ib", playerid, false);
- }
- else SetPVarInt(playerid, "Exhausted", 0);
- return 1;
- }
- stock GivePlayerStamina(playerid, value) //Add / Subtract the player's current stamina
- {
- new stamina = GetPVarInt(playerid, "Stamina");
- if(stamina + value <= 0) return OnPlayerStaminaOver(playerid);
- if(stamina + value <= GetPVarInt(playerid, "MAX_Stamina"))
- {
- stamina = stamina+value;
- SetPVarInt(playerid, "Stamina", stamina);
- return 1;
- }
- else return 0;
- }
- stock SetPlayerMaxStamina(playerid, value) //set the player's maximum stamina
- {
- new stamina = GetPVarInt(playerid, "Stamina"), max_stamina = GetPVarInt(playerid, "MAX_Stamina");
- max_stamina = value;
- SetPVarInt(playerid, "MAX_Stamina", max_stamina);
- if(stamina > max_stamina) stamina = max_stamina, SetPVarInt(playerid, "Stamina", stamina);
- return 1;
- }
- stock IsPlayerExhausted(playerid) // check if the player is exhausted
- {
- if(GetPVarInt(playerid, "Exhausted") == 1) return 1;
- else return 0;
- }
- stock IsPlayerRunning(playerid) // Thanks SA-MP forum | check if the player is running
- {
- if(!IsPlayerConnected(playerid) || IsPlayerInAnyVehicle(playerid) || IsPlayerExhausted(playerid)) return 0;
- new keys, updown, leftright;
- GetPlayerKeys(playerid, keys, updown, leftright);
- if(keys & KEY_SPRINT && GetPlayerSpecialAction(playerid) != SPECIAL_ACTION_USEJETPACK) return 1;
- else return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement