Skocz do zawartości

Rekomendowane odpowiedzi


Opis: Plugin blokuje obrażenia zadane członkom swojej drużyny broniom rzucaną (siekiera/młotek/klucz) oraz naprawia błąd gdzie zabijając kogoś rzutem tej broni frag nie jest naliczany, a jest traktowany jako samobójstwo tamtego gracza.

Kod:

Spoiler
#include <sdktools>
#include <sdkhooks>
#include <cstrike>

#pragma newdecls required
#pragma semicolon 1

public Plugin myinfo = 
{
	name = "ADEPT --> Fix Melee", 
	description = "Autorski Plugin StudioADEPT.net", 
	author = "Brum Brum", 
	version = "1.0", 
	url = "http://www.StudioADEPT.net/forum", 
};

public void OnPluginStart()
{
	HookEvent("item_equip", Event_ItemEquip);
	for (int i = 1; i <= MaxClients; i++) {
		if (IsValidClient(i))OnClientPutInServer(i);
	}
}
public Action Event_ItemEquip(Event event, const char[] name, bool dontBroadcast) {
	int client = GetClientOfUserId(event.GetInt("userid"));
	char item[32];
	event.GetString("item", item, sizeof(item));
	if (StrEqual(item, "melee")) {
		int weapon = GetClientWeaponID(client, "weapon_melee");
		SetEntProp(weapon, Prop_Data, "m_iHealth", client);
		SetEntProp(weapon, Prop_Send, "m_iTeamNum", GetClientTeam(client));
	}
}
public void OnClientPutInServer(int client) {
	SDKHook(client, SDKHook_OnTakeDamage, OnTakeDamage);
}
public void OnClientDisconnect(int client){
	SDKUnhook(client, SDKHook_OnTakeDamage, OnTakeDamage);
}
public Action OnTakeDamage(int victim, int &attacker, int &inflictor, float &damage, int &damagetype) {
	if (inflictor > 0) {
		char sEnt[32];
		GetEntityClassname(inflictor, sEnt, sizeof(sEnt));
		if (StrEqual(sEnt, "weapon_melee")) {
			int entteam = GetEntProp(inflictor, Prop_Data, "m_iTeamNum");
			if (entteam == GetClientTeam(victim)) {
				damage = 0.0;
				return Plugin_Changed;
			}
			if (IsValidClient(GetEntProp(inflictor, Prop_Data, "m_iHealth"))) {
				attacker = GetEntProp(inflictor, Prop_Data, "m_iHealth");
				return Plugin_Changed;
			}
		}
	}
	return Plugin_Continue;
}
int GetClientWeaponID(int client, const char[] weapon)
{
	if (!IsValidClient(client))return false;
	
	for (int i = 0; i < 256 / 4; i++)
	{
		int weapons = GetEntPropEnt(client, Prop_Send, "m_hMyWeapons", i);
		if (IsValidEntity(weapons)) {
			char classname[32];
			GetEntityClassname(weapons, classname, sizeof(classname));
			if (StrEqual(classname, weapon, false))return weapons;
		}
	}
	return -1;
} 
bool IsValidClient(int client){
	if (!(1 <= client <= MaxClients) || !IsClientInGame(client) || !IsClientConnected(client) || IsFakeClient(client) || IsClientSourceTV(client))
		return false;
	
	return true;
}

 


ADEPT_FixMelee.sp
 

Sygnatura użytkownika

__________________________________________________________________________________________________________________________________________________________________________
【 Deathrun    |    Deathrun Sklep    |    Deathrun VIP    |    Deathrun AutoRespawn    |    Jackpot    |    Losowy VIP    |    Modele  |   NoScope Detector    |    C4 Timer 
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

  • Kocham to
Odnośnik do odpowiedzi
Udostępnij na innych stronach

Ostatnio przeglądający ten temat (5 użytkowników)

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

×
×
  • Dodaj nową pozycję...