Перейти к содержимому


Фотография

Единая тема поиска плагинов L4D2

плагин

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 3676

#1501 maloi9208

maloi9208

    Пользователь

  • Пользователь
  • PipPipPip
  • 274 сообщений

Отправлено 08 Октябрь 2018 - 22:11

public OnPluginStart() 
{ 
    HookEvent("player_now_it", Event_NowVomit); 
} 

public Event_NowVomit(Handle:event, const String:name[], bool:dontBroadcast) 
{ 
    new thrower = GetClientOfUserId(GetEventInt(event, "attacker")); 
    new victim = GetClientOfUserId(GetEventInt(event, "userid")); 

    if (IsClientInGame(thrower) && !IsFakeClient(thrower) && IsClientInGame(victim) && !IsFakeClient(victim) && !GetEventBool(event, "by_boomer")) 
    { 
        PrintToChatAll("\x04Player \x05%N \x01threw a bile bomb at \x05%N!", thrower, victim); 
    } 
} 

спасибо! у меня 1в 1 такой же (не удивительно, правда?) и он что-то под СМ 1.9 перестал работать

у Вас работает?


  • StevMype это нравится

#1502 BloodyBlade

BloodyBlade

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 1 102 сообщений

Отправлено 09 Октябрь 2018 - 0:44

спасибо! у меня 1в 1 такой же (не удивительно, правда?) и он что-то под СМ 1.9 перестал работать

у Вас работает?

Под 1.9 не могу сказать. Я использую 1.8



#1503 MixJay

MixJay

    Пользователь

  • Пользователь
  • PipPipPip
  • 222 сообщений

Отправлено 09 Октябрь 2018 - 9:46

спасибо! у меня 1в 1 такой же (не удивительно, правда?) и он что-то под СМ 1.9 перестал работать

у Вас работает?

 

Недавно обновлялся с 1.8 на 1.9. Event как работал, так и работает. Ничего не поменялось вообще.


Сообщение отредактировал MixJay: 09 Октябрь 2018 - 9:47

  • maloi9208 это нравится

#1504 dragon1263

dragon1263

    Участник

  • Пользователь
  • PipPip
  • 56 сообщений

Отправлено 11 Октябрь 2018 - 0:51

Держи


Тоже ищу

 
Держи

Прикрепленные файлы


Сообщение отредактировал dragon1263: 11 Октябрь 2018 - 0:53


#1505 Vladimir99900

Vladimir99900

    Новичок

  • Пользователь
  • Pip
  • 48 сообщений

Отправлено 14 Октябрь 2018 - 13:03

-

Сообщение отредактировал Vladimir99900: 16 Июль 2019 - 13:49


#1506 MixJay

MixJay

    Пользователь

  • Пользователь
  • PipPipPip
  • 222 сообщений

Отправлено 15 Октябрь 2018 - 13:15

Кто нибудь встречал фикс анимации перезарядки MP5 после того, как толкнешь прикладом?



#1507 Player100

Player100

    Пользователь

  • Пользователь
  • PipPipPip
  • 369 сообщений

Отправлено 15 Октябрь 2018 - 15:44

Здравствуйте! Подскажите, после убийства танка периодически появляется полоска с его хп, остатки какие-то. Хотя танк уже давно убит. Вот такая как на скрине. Прикрепленный файл  16222b892b8cf42f5a5919717b5f82f7.png   577,58К   0 Количество загрузок: Можно это как-то пофиксить?

Сам код плагина. Пробовал разные плагины на Health Bar для танка, но везде то же самое.

Скрытый текст


Сообщение отредактировал Player100: 15 Октябрь 2018 - 15:44


#1508 BloodyBlade

BloodyBlade

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 1 102 сообщений

Отправлено 15 Октябрь 2018 - 22:43

Кто нибудь встречал фикс анимации перезарядки MP5 после того, как толкнешь прикладом?

Пробуй. Я просто добавил mp5 в плагин(строка 35). Если это не поможет, то помочь смогут лишь Valve.

#pragma semicolon 1
#include <sourcemod>
#include <sdktools>

#define PLUGIN_VERSION "1.0"

public Plugin:myinfo = 
{
	name = "[L4D2] SG552 Reload Fix",
	author = "McFlurry",
	description = "Fixes the reload time of SG552",
	version = PLUGIN_VERSION,
	url = "N/A"
}

public OnPluginStart()
{
	decl String:game_name[64];
	GetGameFolderName(game_name, sizeof(game_name));
	if (!StrEqual(game_name, "left4dead2", false))
	{
		SetFailState("Plugin supports Left 4 Dead 2 only.");
	}
	CreateConVar("l4d2_sg552fix_version", PLUGIN_VERSION, "Installed version of SG552 Reload Fix on this server", FCVAR_PLUGIN|FCVAR_NOTIFY|FCVAR_DONTRECORD|FCVAR_REPLICATED);
	HookEvent("weapon_reload", Event_ReloadStart);
}

public Action:Event_ReloadStart(Handle:event, const String:name[], bool:dontBroadcast)
{
	new userid = GetEventInt(event, "userid");
	new client = GetClientOfUserId(userid);
	new weapon = GetEntPropEnt(client, Prop_Send, "m_hActiveWeapon");
	new String:classname[256];
	GetEntityClassname(weapon, classname, sizeof(classname));
	if(StrContains(classname, "sg552", false) > -1 || StrContains(classname, "mp5", false) > -1)
	{
		new Float:nextattack;
		nextattack = GetEntPropFloat(client, Prop_Send, "m_flNextAttack");
		nextattack -= 0.6;
		SetEntPropFloat(client, Prop_Send, "m_flNextAttack", nextattack);
		SetEntPropFloat(weapon, Prop_Send, "m_flNextPrimaryAttack", nextattack);
	}	
}

Сообщение отредактировал BloodyBlade: 15 Октябрь 2018 - 22:43


#1509 maloi9208

maloi9208

    Пользователь

  • Пользователь
  • PipPipPip
  • 274 сообщений

Отправлено 16 Октябрь 2018 - 2:18

 

Пробуй. Я просто добавил mp5 в плагин(строка 35). Если это не поможет, то помочь смогут лишь Valve.

#pragma semicolon 1
#include <sourcemod>
#include <sdktools>

#define PLUGIN_VERSION "1.0"

public Plugin:myinfo = 
{
	name = "[L4D2] SG552 Reload Fix",
	author = "McFlurry",
	description = "Fixes the reload time of SG552",
	version = PLUGIN_VERSION,
	url = "N/A"
}

public OnPluginStart()
{
	decl String:game_name[64];
	GetGameFolderName(game_name, sizeof(game_name));
	if (!StrEqual(game_name, "left4dead2", false))
	{
		SetFailState("Plugin supports Left 4 Dead 2 only.");
	}
	CreateConVar("l4d2_sg552fix_version", PLUGIN_VERSION, "Installed version of SG552 Reload Fix on this server", FCVAR_PLUGIN|FCVAR_NOTIFY|FCVAR_DONTRECORD|FCVAR_REPLICATED);
	HookEvent("weapon_reload", Event_ReloadStart);
}

public Action:Event_ReloadStart(Handle:event, const String:name[], bool:dontBroadcast)
{
	new userid = GetEventInt(event, "userid");
	new client = GetClientOfUserId(userid);
	new weapon = GetEntPropEnt(client, Prop_Send, "m_hActiveWeapon");
	new String:classname[256];
	GetEntityClassname(weapon, classname, sizeof(classname));
	if(StrContains(classname, "sg552", false) > -1 || StrContains(classname, "mp5", false) > -1)
	{
		new Float:nextattack;
		nextattack = GetEntPropFloat(client, Prop_Send, "m_flNextAttack");
		nextattack -= 0.6;
		SetEntPropFloat(client, Prop_Send, "m_flNextAttack", nextattack);
		SetEntPropFloat(weapon, Prop_Send, "m_flNextPrimaryAttack", nextattack);
	}	
}

этот плагин же просто синхронизирует время перезарядки с анимацией сг552



#1510 MixJay

MixJay

    Пользователь

  • Пользователь
  • PipPipPip
  • 222 сообщений

Отправлено 16 Октябрь 2018 - 6:56

 

Пробуй. Я просто добавил mp5 в плагин(строка 35). Если это не поможет, то помочь смогут лишь Valve.

 

Спасибо за попытку, но этот фикс работает в случае с SG552. Он уменьшает время перезарядки, тем самым подгоняет перезарядку к анимации, но это не фиксит анимацию в случае с MP5.



#1511 BloodyBlade

BloodyBlade

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 1 102 сообщений

Отправлено 16 Октябрь 2018 - 16:10

Спасибо за попытку, но этот фикс работает в случае с SG552. Он уменьшает время перезарядки, тем самым подгоняет перезарядку к анимации, но это не фиксит анимацию в случае с MP5.

Так и есть изначально.
Из комментариев к плагину: https://forums.allie...69&postcount=16

https://forums.allie...502&postcount=8

https://forums.allie...93&postcount=17


  • MixJay это нравится

#1512 KRUTIK

KRUTIK

    Пользователь

  • Пользователь
  • PipPipPip
  • 350 сообщений

Отправлено 17 Октябрь 2018 - 10:01

Здравствуйте всем, может кто-нибудь помочь с плагином на панель игроков у меня 2 сервера по 12 игроков, нужен плагин без наворотов, просто что бы при помощи клавиши таб  показывал список игроков, на против ника + значит живой, на против ника - значит умер, подскажите, есть такой плагин и чтоб в последующем при увеличении слотов, он тоже работал.


Сообщение отредактировал KRUTIK: 17 Октябрь 2018 - 10:03


#1513 BHaType

BHaType

    Пользователь

  • Пользователь
  • PipPipPip
  • 358 сообщений

Отправлено 17 Октябрь 2018 - 10:29

https://forums.allie...d.php?p=1128255

 

Здравствуйте всем, может кто-нибудь помочь с плагином на панель игроков у меня 2 сервера по 12 игроков, нужен плагин без наворотов, просто что бы при помощи клавиши таб  показывал список игроков, на против ника + значит живой, на против ника - значит умер, подскажите, есть такой плагин и чтоб в последующем при увеличении слотов, он тоже работал.



#1514 ngaming

ngaming

    Новичок

  • Пользователь
  • Pip
  • 48 сообщений

Отправлено 18 Октябрь 2018 - 16:50

Привет всем. Мне нужен плагин который добавляет невидимые стены на карту. Сам я не умею(кривожоп). Добрые люди, подскажите данный плагин.



#1515 JettXavier

JettXavier

    Новичок

  • Пользователь
  • Pip
  • 18 сообщений

Отправлено 20 Октябрь 2018 - 17:45

Привет всем. Мне нужен плагин который добавляет невидимые стены на карту. Сам я не умею(кривожоп). Добрые люди, подскажите данный плагин.

 Может быть, разблокировка невидимых стен?



#1516 BHaType

BHaType

    Пользователь

  • Пользователь
  • PipPipPip
  • 358 сообщений

Отправлено 21 Октябрь 2018 - 1:23

Привет всем. Мне нужен плагин который добавляет невидимые стены на карту. Сам я не умею(кривожоп). Добрые люди, подскажите данный плагин.

https://forum.myaren...steny-na-kartu/

 

Тебе уже отписали



#1517 KRUTIK

KRUTIK

    Пользователь

  • Пользователь
  • PipPipPip
  • 350 сообщений

Отправлено 21 Октябрь 2018 - 8:51

спасибо огромное...



#1518 BloodyBlade

BloodyBlade

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 1 102 сообщений

Отправлено 22 Октябрь 2018 - 22:35

Здравствуйте. Кто-нибудь может помочь с данным плагином. Нужно, чтобы плагин ч/з каждые 3 минуты показывал кол-во фрагов(особых зараженных), убитых игроками, а не только в случае проигрыша раунда или закрытия двери убежища(кол-во остававшегося здоровья танка/ведьмы исключение).
Исходник:

#pragma semicolon 1
#include <sourcemod>
#include <colors>

#define PLUGIN_VERSION "2.2"
#define TEAM_SURVIVOR 2
#define TEAM_INFECTED 3
#define SURVIVOR_MODELS 8

#define MAX_SURVS 6
#define NAME_IF_MAX_SURVS 20
#define NAME_NORMAL 40

new Handle:cvar_AssistEnable, Handle:cvar_AssistSI, Handle:cvar_AssistWitch, Handle:cvar_Frags, 
	bool:g_bAssistEnable, g_iAssistSI, bool:g_bAssistWitch, bool:g_bFrags, zClassTank, 
	DamageSI[MAXPLAYERS+1][MAXPLAYERS+1], DamageWitch[MAXPLAYERS+1][2048], Frags[MAXPLAYERS+1],
	bool:g_bHealthAndFragsPrinted;

static String:sSurvivorNames[SURVIVOR_MODELS][] =
{
	"Bill", 
	"Zoey", 
	"Francis", 
	"Louis", 
	"Nick", 
	"Rochelle", 
	"Coach", 
	"Ellis"
};

static String:sSurvivorModels[SURVIVOR_MODELS][] =
{
	"models/survivors/survivor_namvet.mdl", 
	"models/survivors/survivor_teenangst.mdl", 
	"models/survivors/survivor_biker.mdl", 
	"models/survivors/survivor_manager.mdl", 
	"models/survivors/survivor_gambler.mdl", 
	"models/survivors/survivor_producer.mdl", 
	"models/survivors/survivor_coach.mdl", 
	"models/survivors/survivor_mechanic.mdl"
};

public Plugin:myinfo = 
{
	name = "[L4D1/2] Assistance System v.2",
	author = "[E]c, Ren89 & thrillkill",
	description = "Show damage dealt to killed infected",
	version = PLUGIN_VERSION,
	url = "https://forums.alliedmods.net"
}

public APLRes:AskPluginLoad2(Handle:myself, bool:late, String:error[], err_max)
{
	decl String:sGameName[12];
	GetGameFolderName(sGameName, sizeof(sGameName));
	if (strcmp(sGameName, "left4dead", false) == 0) zClassTank = 5;
	else if (strcmp(sGameName, "left4dead2", false) == 0) zClassTank = 8;
	else
	{
		strcopy(error, err_max, "Plugin only supports Left 4 Dead 1 & 2.");
		return APLRes_SilentFailure;
	}
	return APLRes_Success;
}

public OnPluginStart()
{
	CreateConVar("sm_assist_version", PLUGIN_VERSION, "Assistance System Version", FCVAR_PLUGIN|FCVAR_SPONLY|FCVAR_REPLICATED|FCVAR_NOTIFY);
	cvar_AssistEnable = CreateConVar("sm_assist_enable", "1", "Enables this plugin.", FCVAR_PLUGIN, true, 0.0, true, 1.0);
	cvar_AssistSI = CreateConVar("sm_assist_si", "0", "Show SI damage (0: only tank, 1: all infected except tank, 2: all infected)", FCVAR_PLUGIN, true, 0.0, true, 2.0);
	cvar_AssistWitch = CreateConVar("sm_assist_witch", "1", "1: Show witch damage, cr0wn, who startled, remaining health, 0: off", FCVAR_PLUGIN, true, 0.0, true, 1.0);
	cvar_Frags = CreateConVar("sm_assist_frags", "1", "1: Show frags and tank(s) remaining health at the round end, 0: off", FCVAR_PLUGIN, true, 0.0, true, 1.0);
	HookConVarChange(cvar_AssistSI, ConVarChanged_Cvars);
	HookConVarChange(cvar_AssistWitch, ConVarChanged_Cvars);
	HookConVarChange(cvar_AssistEnable, ConVarChanged_Cvars);
	HookConVarChange(cvar_Frags, ConVarChanged_Cvars);
	GetCvars();
	
	HookEvent("player_spawn", Event_PlayerSpawn);
	HookEvent("player_hurt", Event_PlayerHurt);
	HookEvent("player_death", Event_PlayerDeath);
	HookEvent("witch_spawn", Event_WitchSpawn);
	HookEvent("infected_hurt", Event_InfectedHurt);
	HookEvent("witch_killed", Event_WitchKilled);
	HookEvent("round_start", Event_RoundStart);
	HookEvent("round_end", Event_RoundEnd);
	HookEvent("map_transition", Event_RoundEnd);
	HookEvent("finale_win", Event_RoundEnd);
	HookEvent("witch_harasser_set", Event_WitchHarasserSet);
	HookEvent("player_incapacitated", Event_PlayerIncap);
	
	AutoExecConfig(true, "l4d2_assist_v2");
	
	LoadTranslations("l4d2_assist.phrases");
}

public ConVarChanged_Cvars(Handle:convar, const String:oldValue[], const String:newValue[])
{
	GetCvars();
}

GetCvars()
{
	g_bAssistEnable = GetConVarBool(cvar_AssistEnable);
	g_iAssistSI = GetConVarInt(cvar_AssistSI);
	g_bAssistWitch = GetConVarBool(cvar_AssistWitch);
	g_bFrags = GetConVarBool(cvar_Frags);
}

public Event_PlayerSpawn(Handle:event, String:event_name[], bool:dontBroadcast)
{
	if (g_bAssistEnable)
	{
		new client = GetClientOfUserId(GetEventInt(event, "userid"));
		if (IsValidClient(client, TEAM_INFECTED)) ClearDmgSI(client);
	}
}

public Action:Event_PlayerHurt(Handle:event, const String:name[], bool:dontBroadcast)
{
	if (g_bAssistEnable)
	{
		new attacker = GetClientOfUserId(GetEventInt(event, "attacker"));
		if (!IsValidClient(attacker, TEAM_SURVIVOR)) return Plugin_Continue;
		
		new victim = GetClientOfUserId(GetEventInt(event, "userid"));
		if (!IsValidClient(victim, TEAM_INFECTED)) return Plugin_Continue;
		
		switch(g_iAssistSI)
		{
			case 0: if (!IsTank(victim)) return Plugin_Handled;
			case 1: if (IsTank(victim)) return Plugin_Handled;
		}
		
		new DamageHealth = GetEventInt(event, "dmg_health");
		if (DamageHealth < 1024) DamageSI[attacker][victim] += DamageHealth;
	}
	
	return Plugin_Continue;
}

public Action:Event_PlayerDeath(Handle:event, const String:name[], bool:dontBroadcast)
{
	if (g_bAssistEnable)
	{
		new victim = GetClientOfUserId(GetEventInt(event, "userid"));
		if (IsClient(victim))
		{
			new team = GetClientTeam(victim);
			if (team == TEAM_SURVIVOR)
			{
				if (g_bAssistWitch && !IsFakeClient(victim))
				{
					new witch = GetEventInt(event,"attackerentid");
					if (IsValidEntity(witch) && IsValidEdict(witch))
					{
						new String:class[64];
						GetEdictClassname(witch, class, sizeof(class));
						if (StrEqual(class, "witch"))
						{
							CPrintToChat(victim, "%t", "WITCH_REMAINING_HEALTH", GetEntProp(witch, Prop_Data, "m_iHealth"));
						}
					}
				}
				
				ClearDmgSI(victim);
			}
			else if (team == TEAM_INFECTED)
			{
				new bool:IsVictimTank = IsTank(victim);
				
				if (g_bFrags && !IsVictimTank)
				{
					new attacker = GetClientOfUserId(GetEventInt(event, "attacker"));
					if (IsValidClient(attacker, TEAM_SURVIVOR))
					{
						Frags[attacker]++;
						if (!IsFakeClient(attacker)) PrintHintText(attacker, "%t", "FRAGS_HINT", Frags[attacker]);
					}
				}
				
				switch(g_iAssistSI)
				{
					case 0:
					{
						if (!IsVictimTank)
						{
							ClearDmgSI(victim);
							return Plugin_Handled;
						}
					}
					case 1:
					{
						if (IsVictimTank)
						{
							ClearDmgSI(victim);
							return Plugin_Handled;
						}
					}
				}
				
				new survivors, players[MAXPLAYERS+1][2];
				for (new i = 1; i <= MaxClients; i++)
				{
					if (DamageSI[i][victim] <= 0 || !IsClientInGame(i) || GetClientTeam(i) != TEAM_SURVIVOR) continue;
					players[survivors][0] = i;
					players[survivors][1] = DamageSI[i][victim];
					survivors++;
				}
				
				if (survivors == 0) return Plugin_Handled;
				SortCustom2D(players, survivors, SortByDamage);
				new String:sMessage[256] = "";
				
				for (new i; i < survivors; i++)
				{
					new attacker = players[i][0];
					decl String:sTempMessage[64];
					Format(sTempMessage, sizeof(sTempMessage), "%t", "DAMAGE_STRING", (i > 0 ? ", " : ""), attacker, DamageSI[attacker][victim]);
					StrCat(sMessage, sizeof(sMessage), sTempMessage);
					DamageSI[attacker][victim] = 0;
				}
				
				CPrintToChatAll("%t", "TANK_KILLED", victim, sMessage);
			}
		}
		else ClearDmgSI(victim);
	}
	
	return Plugin_Continue;
}

public SortByDamage(x[], y[], const array[][], Handle:hndl)
{
	if (x[1] > y[1]) return -1;
	else if (x[1] == y[1]) return 0;
	return 1;
}

public Action:Event_RoundStart(Handle:event, const String:name[], bool:dontBroadcast)
{
	ClearDmgAll();
	g_bHealthAndFragsPrinted = false;
}

public Action:Event_RoundEnd(Handle:event, const String:name[], bool:dontBroadcast)
{
	if (!g_bHealthAndFragsPrinted)
	{
		g_bHealthAndFragsPrinted = true;
		if (g_bAssistEnable && g_bFrags)
		{
			new String:sMessage[256], String:sTempMessage[64], Tanks = 0, survivors = 0, players[MAXPLAYERS+1][2];
			for (new i = 1; i <= MaxClients; i++)
			{
				if (!IsClientInGame(i)) continue;
				switch(GetClientTeam(i))
				{
					case TEAM_SURVIVOR:
					{
						if (Frags[i] > 0)
						{
							players[survivors][0] = i;
							players[survivors][1] = Frags[i];
							survivors++;
						}
					}
					case TEAM_INFECTED:
					{
						if (IsTank(i) && IsPlayerAlive(i))
						{
							Tanks++;
							Format(sTempMessage, sizeof(sTempMessage), "%t", "TANK_HEALTH_STRING", (Tanks > 1 ? ", " : ""), i, GetClientHealth(i));
							StrCat(sMessage, sizeof(sMessage), sTempMessage);
						}
					}
				}
			}
			
			if (Tanks) CPrintToChatAll("%t", "TANK_REMAINING_HEALTH", sMessage);
			
			if (survivors)
			{
				sMessage = "", sTempMessage = "";
				new len = (survivors > MAX_SURVS ? NAME_IF_MAX_SURVS : NAME_NORMAL);
				SortCustom2D(players, survivors, SortByDamage);
				
				for (new i; i < survivors; i++)
				{
					new attacker = players[i][0];
					new String:sName[len];
					GetClientName(attacker, sName, len);
					Format(sTempMessage, sizeof(sTempMessage), "%t", "FRAGS_STRING", (i > 0 ? ", " : ""), sName, Frags[attacker]);
					StrCat(sMessage, sizeof(sMessage), sTempMessage);
				}
				
				CPrintToChatAll("%t", "FRAGS", sMessage);
			}
		}
		
		ClearDmgAll();
	}
}

ClearDmgSI(victim)
{
	for (new i = 1; i <= MaxClients; i++)
	{
		DamageSI[i][victim] = 0;
	}
}

ClearDmgWitch(entity)
{
	for (new i = 1; i <= MaxClients; i++)
	{
		DamageWitch[i][entity] = 0;
	}
}

ClearDmgAll()
{
	for (new i = 1; i <= MaxClients; i++)
	{
		Frags[i] = 0;
		decl x;
		for (x = 1; x <= MaxClients; x++)
		{
			DamageSI[i][x] = 0;
		}
		for (x = MaxClients+1; x < 2048; x++)
		{
			DamageWitch[i][x] = 0;
		}
	}
}

public Action:Event_WitchSpawn(Handle:event, const String:name[], bool:dontBroadcast)
{
	if (g_bAssistEnable && g_bAssistWitch)
	{
		new witch = GetEventInt(event, "witchid");
		if (IsValidEntity(witch) && IsValidEdict(witch)) ClearDmgWitch(witch);
	}
}

public Event_InfectedHurt(Handle:event, const String:name[], bool:dontBroadcast)
{
	if (g_bAssistEnable && g_bAssistWitch)
	{
		new witch = GetEventInt(event, "entityid");
		decl String:class[64];
		GetEdictClassname(witch, class, sizeof(class));
		if (!StrEqual(class, "witch", false)) return;
		
		new attacker = GetClientOfUserId(GetEventInt(event, "attacker"));
		if (IsValidClient(attacker, TEAM_SURVIVOR))
		{
			new damage = GetEventInt(event, "amount");
			DamageWitch[attacker][witch] += damage;
		}
	}
}

public Action:Event_WitchKilled(Handle:event, const String:name[], bool:dontBroadcast)
{
	if (g_bAssistEnable && g_bAssistWitch)
	{
		new witch = GetEventInt(event, "witchid");
		if (IsValidEntity(witch) && IsValidEdict(witch))
		{
			new attacker = GetClientOfUserId(GetEventInt(event, "userid"));
			if (IsValidClient(attacker, TEAM_SURVIVOR))
			{
				if (GetEventBool(event, "oneshot"))
				{
					CPrintToChatAll("%t", "WITCH_CROWNED", attacker);
					ClearDmgWitch(witch);
				}
				else
				{
					new survivors, players[33][2];
					for (new i = 1; i <= MaxClients; i++)
					{
						if (DamageWitch[i][witch] <= 0 || !IsClientInGame(i) || GetClientTeam(i) != TEAM_SURVIVOR) continue;
						players[survivors][0] = i;
						players[survivors][1] = DamageWitch[i][witch];
						survivors++;
					}
					
					if (survivors == 0) return Plugin_Handled;
					SortCustom2D(players, survivors, SortByDamage);
					new String:sMessage[256] = "";
					
					for (new i; i < survivors; i++)
					{
						new client = players[i][0];
						decl String:sTempMessage[64];
						Format(sTempMessage, sizeof(sTempMessage), "%t", "DAMAGE_STRING", (i > 0 ? ", " : ""), client, DamageWitch[client][witch]);
						StrCat(sMessage, sizeof(sMessage), sTempMessage);
						DamageWitch[client][witch] = 0;
					}
					
					CPrintToChatAll("%t", "WITCH_KILLED", sMessage);
				}
			}
			else ClearDmgWitch(witch);
		}
	}
	return Plugin_Continue;
}

public OnEntityDestroyed(entity) //escaped or burned
{
	if (g_bAssistEnable && g_bAssistWitch)
	{
		if (IsValidEntity(entity) && IsValidEdict(entity))
		{
			new String:class[64];
			GetEdictClassname(entity, class, sizeof(class));
			if (StrEqual(class, "witch")) ClearDmgWitch(entity);
		}
	}
}

public Action:Event_WitchHarasserSet(Handle: event, const String: name[], bool: dontBroadcast)
{
	if (g_bAssistEnable && g_bAssistWitch)
	{
		new target = GetClientOfUserId(GetEventInt(event, "userid"));
		if (IsValidClient(target, TEAM_SURVIVOR))
		{
			if (IsFakeClient(target))
			{
				CPrintToChatAll("%t", "WITCH_STARTLED_BOT", target);
			}
			else
			{
				new iNumMatch = -1;
				decl String:sSubjectModel[64];
				GetClientModel(target, sSubjectModel, sizeof(sSubjectModel));
				for (new i = 0; i < SURVIVOR_MODELS; i++)
				{
					if (StrEqual(sSubjectModel, sSurvivorModels[i]))
					{
						iNumMatch = i;
						break;
					}
				}
				
				if (iNumMatch == -1) CPrintToChatAll("%t", "WITCH_STARTLED", target, "Unknown");
				else CPrintToChatAll("%t", "WITCH_STARTLED", target, sSurvivorNames[iNumMatch]);
			}
		}
	}
}

public Action:Event_PlayerIncap(Handle:event, const String:name[], bool:dontBroadcast)
{
	if (g_bAssistEnable && g_bAssistWitch)
	{
		new victim = GetClientOfUserId(GetEventInt(event,"userid"));
		if (IsValidClient(victim, TEAM_SURVIVOR) && !IsFakeClient(victim))
		{
			new witch =  GetEventInt(event, "attackerentid");
			if (IsValidEntity(witch) && IsValidEdict(witch))
			{
				new String:class[64];
				GetEdictClassname(witch, class, sizeof(class));
				if (StrEqual(class, "witch"))
				{
					CPrintToChat(victim, "%t", "WITCH_REMAINING_HEALTH", GetEntProp(witch, Prop_Data, "m_iHealth"));
				}
			}
		}
	}
}

stock bool:IsValidClient(client, team)
{
	return client > 0 && client <= MaxClients && IsClientInGame(client) && GetClientTeam(client) == team;
}

stock bool:IsClient(client)
{
	return client > 0 && client <= MaxClients && IsClientInGame(client);
}

stock bool:IsTank(client)
{
	return GetEntProp(client, Prop_Send, "m_zombieClass") == zClassTank;
}

public OnClientDisconnect(client)
{
	Frags[client] = 0;
}

Сообщение отредактировал BloodyBlade: 22 Октябрь 2018 - 22:40


#1519 fixer099

fixer099

    Участник

  • Пользователь
  • PipPip
  • 108 сообщений

Отправлено 22 Октябрь 2018 - 22:59

Привет!

Ищу плагин который ускоряет темп стрельбы на все виды огнестрельного оружия!



#1520 8rutu5

8rutu5

    Пользователь

  • Пользователь
  • PipPipPip
  • 397 сообщений

Отправлено 23 Октябрь 2018 - 1:09

Привет!

Ищу плагин который ускоряет темп стрельбы на все виды огнестрельного оружия!

 

https://forums.allie...d.php?p=1369117





Темы с аналогичным тегами плагин

Количество пользователей, читающих эту тему: 1

0 пользователей, 0 гостей, 0 анонимных


    Ahrefs (1)