Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <sourcemod>
- #include <sdkhooks>
- #include <sdktools>
- #include <codmod>
- #include <cstrike>
- // lista broni :
- //"weapon_ak47","weapon_m4a1","weapon_m4a1_silencer","weapon_awp", "weapon_sg552","weapon_aug","weapon_p90","weapon_galilar", "weapon_famas","weapon_ssg08","weapon_g3sg1","weapon_scar20","weapon_m249","weapon_negev","weapon_nova","weapon_xm1014", "weapon_sawedoff","weapon_mag7","weapon_mac10","weapon_mp9","weapon_mp7","weapon_ump45","weapon_bizon","weapon_glock","weapon_fiveseven","weapon_deagle","weapon_revolver","weapon_hkp2000","weapon_usp_silencer","weapon_p250","weapon_elite","weapon_tec9","weapon_cz75a,"weapon_mp5sd"
- #define PREFIX "\x01\x0B \x02★Multi Head★\x01"
- // statystyki klasy /////////////////////////////////////////////////////
- new const String:nazwa[] = "Medyk";
- new const String:opis[] = "Ma dwie apteczki, które leczą w zależności od inteligencji.\nRegeneruje mu się życie.\nMoże wskrzesić jednego gracza na rundę, używając R na nożu.";
- new const String:bronie[] = "#weapon_aug#weapon_glock";
- new const inteligencja = 0;
- new const zdrowie = 10;
- new const obrazenia = 10;
- new const wytrzymalosc = 10;
- new const kondycja = 10;
- new const String:frakcja[] = "DARMOWE"; // "PREMIUM"
- /////////////////////////////////////////////////////////////////////////
- // zmienne globalne
- //Skille : 2 apteczki, wskrzeszenie 1 czlonka w ciagu rundy (+dodatkowy exp za wskreszenie), regeneracja 5 hp co 3 sekundy
- bool ma_klase[65];
- bool moze_wskrzesic;
- int ilosc_apteczek_medyka;
- int dead_t, dead_ct, umarlct, umarltt;
- Handle timer_regeneracja[MAXPLAYERS + 1];
- ConVar medyk_apteczka_podstawa;
- ConVar medyk_apteczka_wspolczynnik;
- ConVar medyk_wskrzeszenie_doswiadczenie;
- ConVar medyk_regeneracja_hp;
- ConVar medyk_regeneracja_czas;
- //
- public Plugin:myinfo =
- {
- name = nazwa,
- author = "SUPER TIMOR",
- description = "Klasa - Medyk",
- version = "1.0.0",
- url = "http://steamcommunity.com/id/bonkwszlaufrocku"
- };
- public OnPluginStart()
- {
- cod_register_class(nazwa, opis, bronie, inteligencja, zdrowie, obrazenia, wytrzymalosc, kondycja, frakcja);
- HookEvent("player_spawn", OdrodzenieGracza);
- HookEvent("player_death", Event_PlayerDeath);
- medyk_apteczka_podstawa = CreateConVar("medyk_apteczka_podstawa", "40", "Podstawa leczenia apteczki medyka");
- medyk_apteczka_wspolczynnik = CreateConVar("medyk_apteczka_wspolczynnik", "0.5", "Współczynnik do mnożenia inteligencji dodawanej do podstawy leczenia apteczki medyka.\nWartość we float, np 0.1");
- medyk_wskrzeszenie_doswiadczenie = CreateConVar("medyk_wskrzeszenie_doswiadczenie", "20", "Doświadczenie za wskrzeszenie kompana.");
- medyk_regeneracja_hp = CreateConVar("medyk_regeneracja_hp", "5", "HP, które medyk otrzymuje co X sekund.");
- medyk_regeneracja_czas = CreateConVar("medyk_regeneracja_czas", "3", "CO ile sekund medyk otrzymuje X HP.");
- AutoExecConfig(true, "medyk", "sourcemod/cod_configi");
- }
- public cod_class_enabled(client)
- {
- ma_klase[client] = true;
- ilosc_apteczek_medyka = 2;
- }
- public cod_class_disabled(client)
- {
- ma_klase[client] = false;
- }
- public void Event_PlayerDeath(Event event, const char[] name, bool dontBroadcast)
- {
- int victim = GetClientOfUserId(event.GetInt("userid"));
- int team = GetClientTeam(victim);
- if(team == 2)
- {
- dead_ct = victim;
- umarlct = 1;
- }
- else if(team == 3)
- {
- dead_t = victim;
- umarltt = 1;
- }
- }
- public cod_class_skill_used(client)
- {
- if(!IsValidClient(client) || !ma_klase[client])
- return;
- if(ilosc_apteczek_medyka)
- {
- int zdrowie_gracza = GetClientHealth(client);
- int maksymalne_zdrowie = cod_get_user_maks_health(client);
- int ilosc_uleczonego_hp = medyk_apteczka_podstawa.IntValue+RoundFloat(cod_get_user_maks_intelligence(client)*medyk_apteczka_wspolczynnik.FloatValue);
- if(!IsPlayerAlive(client) || maksymalne_zdrowie <= zdrowie_gracza)
- PrintToChat(client, "%s Jesteś w pełni uleczony!", PREFIX);
- else
- {
- SetEntData(client, FindDataMapInfo(client, "m_iHealth"), (zdrowie_gracza+ilosc_uleczonego_hp < maksymalne_zdrowie)? zdrowie_gracza+ilosc_uleczonego_hp: maksymalne_zdrowie);
- ilosc_apteczek_medyka --;
- }
- }
- else
- PrintToChat(client, "%s Wykorzystałeś już moc klasy w tym życiu!", PREFIX);
- }
- public Action:OnPlayerRunCmd(client, &buttons, &impulse, Float:vel[3], Float:angles[3], &weapons)
- {
- if(!IsValidClient(client) || !ma_klase[client])
- return Plugin_Continue;
- if(!IsPlayerAlive(client))
- return Plugin_Continue;
- static bool:oldbuttons[65];
- new active_weapon = GetEntPropEnt(client, Prop_Send, "m_hActiveWeapon");
- if(active_weapon != -1)
- {
- new String:weapon[32];
- GetEdictClassname(active_weapon, weapon, sizeof(weapon));
- if(StrContains(weapon, "knife") >= 0 || StrContains(weapon, "bayonet") >= 0)
- {
- if(!oldbuttons[client] && buttons & IN_RELOAD)
- {
- int druzynagracza = GetClientTeam(client);
- if(moze_wskrzesic)
- {
- if ((druzynagracza == 2 && umarlct) || (druzynagracza == 3 && umarltt))
- {
- if (druzynagracza == 3)
- {
- CS_RespawnPlayer(dead_t);
- cod_set_user_xp(client, cod_get_user_xp(client)+medyk_wskrzeszenie_doswiadczenie.IntValue);
- }
- else if (druzynagracza == 2)
- {
- CS_RespawnPlayer(dead_ct);
- cod_set_user_xp(client, cod_get_user_xp(client)+medyk_wskrzeszenie_doswiadczenie.IntValue);
- }
- moze_wskrzesic = false;
- }
- else if ((druzynagracza == 2 && !umarlct) || (druzynagracza == 3 && !umarltt))
- PrintToChat(client, "%s Nie ma świeżej duszy do wskrzeszenia.", PREFIX);
- }
- else
- PrintToChat(client, "%s Wykorzystałeś już moc klasy w tym życiu!", PREFIX);
- oldbuttons[client] = true;
- }
- else if(oldbuttons[client] && !(buttons & IN_RELOAD))
- oldbuttons[client] = false;
- }
- }
- return Plugin_Continue;
- }
- public Action:OdrodzenieGracza(Handle:event, String:name[], bool:dontBroadcast)
- {
- new client = GetClientOfUserId(GetEventInt(event, "userid"));
- umarlct = 0;
- umarltt = 0;
- ilosc_apteczek_medyka = 2;
- moze_wskrzesic = true;
- timer_regeneracja[client] = CreateTimer(medyk_regeneracja_czas.FloatValue, Regeneracja, client);
- }
- public Action:Regeneracja(Handle timer, any client)
- {
- if(!IsClientInGame(client))
- ClearTimer(timer_regeneracja[client]);
- if(IsPlayerAlive(client))
- {
- int zdrowie_gracza = GetClientHealth(client);
- int maksymalne_zdrowie = cod_get_user_maks_health(client);
- SetEntData(client, FindDataMapInfo(client, "m_iHealth"), (zdrowie_gracza+medyk_regeneracja_hp.IntValue < maksymalne_zdrowie)? zdrowie_gracza+medyk_regeneracja_hp.IntValue: maksymalne_zdrowie);
- }
- else
- ClearTimer(timer_regeneracja[client]);
- }
- stock ClearTimer(&Handle:timer)
- {
- if (timer != INVALID_HANDLE)
- {
- KillTimer(timer);
- timer = INVALID_HANDLE;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement