Brum Brum 2 Napisano 23 Grudnia 2020 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.spHej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami! Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach