Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #pragma semicolon 1
- #include <sourcemod>
- #include <cstrike>
- #define PLUGIN_VERSION "1.0"
- #define MSG "\x03[Medkits] \x01%t"
- public Plugin:myinfo =
- {
- name = "Medkit",
- author = "Push",
- description = "Allow to use medkits",
- version = PLUGIN_VERSION,
- url = "http://css-quad.ru"
- };
- new Handle:medkit_team = INVALID_HANDLE;
- new Handle:medkit_amount = INVALID_HANDLE;
- new Handle:medkit_health_ps = INVALID_HANDLE;
- new Handle:medkit_fullhealth = INVALID_HANDLE;
- new Handle:medkit_maxhealth = INVALID_HANDLE;
- new Handle:medkit_timer_tick = INVALID_HANDLE;
- new bool:bAlreadyUses[MAXPLAYERS+1];
- new Handle:hTimer[MAXPLAYERS+1] = INVALID_HANDLE;
- new iMedKits[MAXPLAYERS+1], iHPCount[MAXPLAYERS+1];
- public OnPluginStart()
- {
- LoadTranslations("medkit.phrases");
- medkit_team = CreateConVar("medkit_team","1","1 - all/2 - t/3 - ct");
- medkit_amount = CreateConVar("medkit_amount","5","amount of medkits for player");
- medkit_health_ps = CreateConVar("medkit_health_ps","5","health per secound");
- medkit_fullhealth = CreateConVar("medkit_fullhealth","30","full health");
- medkit_timer_tick = CreateConVar("medkit_timer_tick","0.5","timer ticks");
- medkit_maxhealth = CreateConVar("medkit_maxhealth","101","maximum health");
- HookEvent("round_start",OnRoundStart);
- HookEvent("round_end",OnRoundEnded);
- RegConsoleCmd("medkit",GiveMedKit);
- }
- public OnRoundStart(Handle:event, const String:name[], bool:dontBroadcast)
- {
- for(new i = 1; i < MaxClients; i++){
- hTimer[i] = INVALID_HANDLE;
- iMedKits[i] = GetConVarInt(medkit_amount);
- bAlreadyUses[i] = false;
- iHPCount[i] = 0;
- }
- }
- public OnRoundEnded(Handle:event, const String:name[], bool:dontBroadcast)
- {
- for(new i=1;i<=MaxClients;i++)
- {
- if(bAlreadyUses[i] && hTimer[i] != INVALID_HANDLE)
- KillTimer(hTimer[i]);
- }
- }
- public Action:GiveMedKit(client,args)
- {
- if(args || bAlreadyUses[client]) return Plugin_Continue;
- if(GetClientHealth(client) >= GetConVarInt(medkit_maxhealth))
- {
- PrintToChat(client,MSG,"You already have maximum health");
- return Plugin_Continue;
- }
- bAlreadyUses[client] = true;
- new cvTeam = GetConVarInt(medkit_team);
- new iTeam = (cvTeam == 1 ? 0 : (cvTeam == 2 ? CS_TEAM_T : CS_TEAM_CT));
- new Float:fTimerTicks = GetConVarFloat(medkit_timer_tick);
- iMedKits[client]--;
- if((!iTeam || GetClientTeam(client) == iTeam) && fTimerTicks && IsPlayerAlive(client))
- {
- if(iMedKits[client] == -1)
- {
- PrintToChat(client,MSG,"You have not more kits");
- return Plugin_Continue;
- }
- PrintToChat(client,MSG,"Left",iMedKits[client]);
- hTimer[client] = CreateTimer(fTimerTicks,GiveHealth,client,TIMER_REPEAT);
- }
- return Plugin_Continue;
- }
- public Action:GiveHealth(Handle:timer,any:client)
- {
- new MaxHealth = GetConVarInt(medkit_maxhealth), iHPFull = GetConVarInt(medkit_fullhealth), iAddiction;
- if(GetConVarInt(medkit_health_ps) > iHPFull)
- SetConVarInt(medkit_health_ps,iHPFull);
- new iHPPSec = GetConVarInt(medkit_health_ps);
- if(GetClientHealth(client) > MaxHealth)
- SetEntityHealth(client,MaxHealth);
- if(IsPlayerAlive(client) && (GetClientHealth(client) == MaxHealth || iHPCount[client] >= iHPFull))
- {
- iHPCount[client] = 0;
- bAlreadyUses[client] = false;
- PrintToChat(client,MSG,"You cant have more health");
- KillTimer(timer);
- return Plugin_Continue;
- }
- iHPCount[client] += iHPPSec;
- if(iHPCount[client] <= iHPFull){
- iAddiction = GetClientHealth(client) + iHPPSec;
- }
- else if(iHPCount[client] > iHPFull)
- {
- iAddiction = (GetClientHealth(client) + iHPPSec) - (iHPCount[client] - iHPFull);
- iHPCount[client] = iHPFull;
- }
- SetEntityHealth(client, MaxHealth >= iAddiction ? iAddiction : iAddiction - (iAddiction - MaxHealth));
- return Plugin_Continue;
- }
Advertisement
Add Comment
Please, Sign In to add comment