Помощ с HNS:Anti-Frag

Въпроси и проблеми свързани с AMXModX.
Аватар
YankoNL
Извън линия
Потребител
Потребител
Мнения: 163
Регистриран на: 06 Апр 2017, 09:07
Местоположение: Варна
Се отблагодари: 22 пъти
Получена благодарност: 9 пъти

Помощ с HNS:Anti-Frag

Мнение от YankoNL » 12 Яну 2019, 17:43

Здравейте, може ли някой да ми помогне със следния плъгин? Плъгинът работи отлично, но когато Т стрелне СТ - антифраг системата пак се пуска и в случая СТ получава godmode. Това което искам е плъгина да дава godmode само на терористите, когато бива атакуван от контра-терорист.
Благодаря предварително!

Код за потвърждение: Избери целия код

#include <amxmodx>
#include <reapi>

#if AMXX_VERSION_NUM < 183
#include <colorchat>
#endif

new g_iMaxPlayers;
#define IsPlayer(%1) (1 <= (%1) <= g_iMaxPlayers)

#pragma semicolon 1
#pragma ctrlchar '\'

new const __Plugin__[]    = "HNS: AntiFrag";
new const __Version__[]   = "1.0";
new const __Author__[]    = "Kaido Ren";

enum cvarsList {
    cvarProtectDuration,
    cvarRendering,
    cvarChatPrefix[32]
} new gl_sCvars[cvarsList] = {
    3, // default value for cvarProtectDuration
    0, // default value for cvarRendering
    "[Fatall-Error](Anti-Frag)" // default value for cvarChatPrefix
};

public plugin_init() {
    register_plugin(
        .plugin_name = __Plugin__,
        .version = __Version__,
        .author = __Author__
    );

    g_iMaxPlayers = get_maxplayers();

    RegisterHookChain(RG_CBasePlayer_TakeDamage, "CBasePlayer_TakeDamage", .post = false);
    RegisterHookChain(RG_CBasePlayer_TakeDamage, "CBasePlayer_TakeDamage_SlowDown", .post = true);

    register_srvcmd("hns_antifrag_pd", "CvarChangesHandler");
    register_srvcmd("hns_antifrag_prefix", "CvarChangesHandler");
    register_srvcmd("hns_antifrag_render", "CvarChangesHandler");
    
    register_dictionary("hns_antifrag.txt");
}

const damageKnife = (DMG_NEVERGIB);
public CBasePlayer_TakeDamage(const this, pevInflictor, pevAttacker, Float:flDamage, bitsDamageType) {
    if (!IsPlayer(pevAttacker) || pevInflictor != pevAttacker || !rg_is_player_can_takedamage(this, pevAttacker)) {
        return HC_CONTINUE;
    }

    if (~bitsDamageType & damageKnife) {
        return HC_CONTINUE;
    }

    if (!task_exists(this) && get_entvar(this, var_health) <= flDamage) {
        return HC_CONTINUE;
    }
    
    new szName[2][32];
    get_user_name(this, szName[0], charsmax(szName[]));
    get_user_name(pevAttacker, szName[1], charsmax(szName[]));

    if (task_exists(this)) {
        client_print_color(pevAttacker, print_team_default, "\4%s\1 %L", gl_sCvars[cvarChatPrefix], this, "AF_TAKEDMG_PROTECT_FOR_ATTACKER", szName[0]);
        SetHookChainArg(4, ATYPE_FLOAT, 0.0);
        SetHookChainReturn(ATYPE_INTEGER, 0);
        return HC_SUPERCEDE;
    }

    client_print_color(this, print_team_default, "\4%s\1 %L", gl_sCvars[cvarChatPrefix], this, "AF_TAKEDMG_FOR_VICTIM_1", szName[1]);
    client_print_color(this, print_team_default, "\4%s\1 %L", gl_sCvars[cvarChatPrefix], this, "AF_TAKEDMG_FOR_VICTIM_2", gl_sCvars[cvarProtectDuration]);
    set_task(float(gl_sCvars[cvarProtectDuration]), "TaskTick", this);

    if (gl_sCvars[cvarRendering]) {
        rg_set_rendering(this, kRenderFxGlowShell, 255, 0, 0, kRenderNormal, 30);
    }

    return HC_CONTINUE;
}

public CBasePlayer_TakeDamage_SlowDown(const this, pevInflictor, pevAttacker, Float:flDamage, bitsDamageType) {
    if (!IsPlayer(pevAttacker) || this == pevAttacker) {
        return HC_CONTINUE;
    }

    if (GetHookChainReturn(ATYPE_INTEGER) && is_user_alive(this)) {
        set_member(this, m_flVelocityModifier, 1.0);
    }

    return HC_CONTINUE;
}

public TaskTick(const player) {
    if (gl_sCvars[cvarRendering] && is_user_connected(player)) {
        rg_set_rendering(player);
    }
}

stock rg_set_rendering(entity, fx = kRenderFxNone, r = 255, g = 255, b = 255, render = kRenderNormal, amount = 16) {
	new Float:renderColor[3];
	renderColor[0] = float(r);
	renderColor[1] = float(g);
	renderColor[2] = float(b);

	set_entvar(entity, var_renderfx, fx);
	set_entvar(entity, var_rendercolor, renderColor);
	set_entvar(entity, var_rendermode, render);
	set_entvar(entity, var_renderamt, float(amount));

	return 1;
}

public CvarChangesHandler() {
    new szArg[2][32];
    read_argv(0, szArg[0], charsmax(szArg[]));

    switch (szArg[0][14]) {
        case 'd': { // hns_antifrag_p > d <
            if (read_argv(1, szArg[1], charsmax(szArg[]))) {
                gl_sCvars[cvarProtectDuration] = str_to_num(szArg[1]);
            }
        }

        case 'e': { // hns_antifrag_r > e < ndervictim
            if (read_argv(1, szArg[1], charsmax(szArg[]))) {
                gl_sCvars[cvarRendering] = clamp(str_to_num(szArg[1]), 0, 1);
            }
        }

        case 'r': { // hns_antifrag_p > r < efix
            if (read_argv(1, szArg[1], charsmax(szArg[]))) {
                copy(gl_sCvars[cvarChatPrefix], charsmax(gl_sCvars[cvarChatPrefix]), szArg[1]);
            }
        }
    }
}

Аватар
JustInCase
Извън линия
Потребител
Потребител
Мнения: 582
Регистриран на: 14 Окт 2016, 23:31
Се отблагодари: 4 пъти
Получена благодарност: 15 пъти

Помощ с HNS:Anti-Frag

Мнение от JustInCase » 12 Яну 2019, 18:41

Код за потвърждение: Избери целия код

#include <amxmodx>
#include <reapi>

#if AMXX_VERSION_NUM < 183
#include <colorchat>
#endif

new g_iMaxPlayers;
#define IsPlayer(%1) (1 <= (%1) <= g_iMaxPlayers)

#pragma semicolon 1
#pragma ctrlchar '\'

new const __Plugin__[]    = "HNS: AntiFrag";
new const __Version__[]   = "1.0";
new const __Author__[]    = "Kaido Ren";

enum cvarsList {
	cvarProtectDuration,
	cvarRendering,
	cvarChatPrefix[32]
	} new gl_sCvars[cvarsList] = {
	3, // default value for cvarProtectDuration
	0, // default value for cvarRendering
	"[Fatall-Error](Anti-Frag)" // default value for cvarChatPrefix
};

public plugin_init() {
	register_plugin(
	.plugin_name = __Plugin__,
	.version = __Version__,
	.author = __Author__
	);
	
	g_iMaxPlayers = get_maxplayers();
	
	RegisterHookChain(RG_CBasePlayer_TakeDamage, "CBasePlayer_TakeDamage", .post = false);
	RegisterHookChain(RG_CBasePlayer_TakeDamage, "CBasePlayer_TakeDamage_SlowDown", .post = true);
	
	register_srvcmd("hns_antifrag_pd", "CvarChangesHandler");
	register_srvcmd("hns_antifrag_prefix", "CvarChangesHandler");
	register_srvcmd("hns_antifrag_render", "CvarChangesHandler");
	
	register_dictionary("hns_antifrag.txt");
}

const damageKnife = (DMG_NEVERGIB);
public CBasePlayer_TakeDamage(const this, pevInflictor, pevAttacker, Float:flDamage, bitsDamageType) {
	if (!IsPlayer(pevAttacker) || pevInflictor != pevAttacker || !rg_is_player_can_takedamage(this, pevAttacker) || get_user_team(pevInflictor) == 2) {
		return HC_CONTINUE;
	}
	
	if (~bitsDamageType & damageKnife) {
		return HC_CONTINUE;
	}
	
	if (!task_exists(this) && get_entvar(this, var_health) <= flDamage) {
		return HC_CONTINUE;
	}
	
	new szName[2][32];
	get_user_name(this, szName[0], charsmax(szName[]));
	get_user_name(pevAttacker, szName[1], charsmax(szName[]));
	
	if (task_exists(this)) {
		client_print_color(pevAttacker, print_team_default, "\4%s\1 %L", gl_sCvars[cvarChatPrefix], this, "AF_TAKEDMG_PROTECT_FOR_ATTACKER", szName[0]);
		SetHookChainArg(4, ATYPE_FLOAT, 0.0);
		SetHookChainReturn(ATYPE_INTEGER, 0);
		return HC_SUPERCEDE;
	}
	
	client_print_color(this, print_team_default, "\4%s\1 %L", gl_sCvars[cvarChatPrefix], this, "AF_TAKEDMG_FOR_VICTIM_1", szName[1]);
	client_print_color(this, print_team_default, "\4%s\1 %L", gl_sCvars[cvarChatPrefix], this, "AF_TAKEDMG_FOR_VICTIM_2", gl_sCvars[cvarProtectDuration]);
	set_task(float(gl_sCvars[cvarProtectDuration]), "TaskTick", this);
	
	if (gl_sCvars[cvarRendering]) {
		rg_set_rendering(this, kRenderFxGlowShell, 255, 0, 0, kRenderNormal, 30);
	}
	
	return HC_CONTINUE;
}

public CBasePlayer_TakeDamage_SlowDown(const this, pevInflictor, pevAttacker, Float:flDamage, bitsDamageType) {
	if (!IsPlayer(pevAttacker) || this == pevAttacker) {
		return HC_CONTINUE;
	}
	
	if (GetHookChainReturn(ATYPE_INTEGER) && is_user_alive(this)) {
		set_member(this, m_flVelocityModifier, 1.0);
	}
	
	return HC_CONTINUE;
}

public TaskTick(const player) {
	if (gl_sCvars[cvarRendering] && is_user_connected(player)) {
		rg_set_rendering(player);
	}
}

stock rg_set_rendering(entity, fx = kRenderFxNone, r = 255, g = 255, b = 255, render = kRenderNormal, amount = 16) {
	new Float:renderColor[3];
	renderColor[0] = float(r);
	renderColor[1] = float(g);
	renderColor[2] = float(b);
	
	set_entvar(entity, var_renderfx, fx);
	set_entvar(entity, var_rendercolor, renderColor);
	set_entvar(entity, var_rendermode, render);
	set_entvar(entity, var_renderamt, float(amount));
	
	return 1;
}

public CvarChangesHandler() {
	new szArg[2][32];
	read_argv(0, szArg[0], charsmax(szArg[]));
	
	switch (szArg[0][14]) {
		case 'd': { // hns_antifrag_p > d <
			if (read_argv(1, szArg[1], charsmax(szArg[]))) {
				gl_sCvars[cvarProtectDuration] = str_to_num(szArg[1]);
			}
		}
		
		case 'e': { // hns_antifrag_r > e < ndervictim
			if (read_argv(1, szArg[1], charsmax(szArg[]))) {
				gl_sCvars[cvarRendering] = clamp(str_to_num(szArg[1]), 0, 1);
			}
		}
		
		case 'r': { // hns_antifrag_p > r < efix
			if (read_argv(1, szArg[1], charsmax(szArg[]))) {
				copy(gl_sCvars[cvarChatPrefix], charsmax(gl_sCvars[cvarChatPrefix]), szArg[1]);
			}
		}
	}
}
MANSION - HNS : 45.144.155.99:27026
ONLINE

Аватар
YankoNL
Извън линия
Потребител
Потребител
Мнения: 163
Регистриран на: 06 Апр 2017, 09:07
Местоположение: Варна
Се отблагодари: 22 пъти
Получена благодарност: 9 пъти

Помощ с HNS:Anti-Frag

Мнение от YankoNL » 12 Яну 2019, 20:27

Благодаря ви много! Само че ето тук get_user_team(pevInflictor) == 2 трябва да е get_user_team(pevInflictor) == 1. Това е малка грешка ама исках да ви кажа за да знаете.
:lock: :lock: :lock:

Аватар
JustInCase
Извън линия
Потребител
Потребител
Мнения: 582
Регистриран на: 14 Окт 2016, 23:31
Се отблагодари: 4 пъти
Получена благодарност: 15 пъти

Помощ с HNS:Anti-Frag

Мнение от JustInCase » 12 Яну 2019, 20:50

Сигурен ли си тъй като проверявам дали жертвата е CT? Ако е CT нищо не става съответно ако е T ще му даде годмод ?
MANSION - HNS : 45.144.155.99:27026
ONLINE

Аватар
YankoNL
Извън линия
Потребител
Потребител
Мнения: 163
Регистриран на: 06 Апр 2017, 09:07
Местоположение: Варна
Се отблагодари: 22 пъти
Получена благодарност: 9 пъти

Помощ с HNS:Anti-Frag

Мнение от YankoNL » 12 Яну 2019, 21:05

Жертвата е Т и на него трябва да му даде годмод. Явно не съм се изразил добре, извинявам се за което.

Аватар
hackera457
Извън линия
Потребител
Потребител
Мнения: 768
Регистриран на: 01 Ное 2016, 09:46
Местоположение: София
Се отблагодари: 1 път
Получена благодарност: 124 пъти
Обратна връзка:

Помощ с HNS:Anti-Frag

Мнение от hackera457 » 12 Яну 2019, 21:38

Код за потвърждение: Избери целия код

#include <amxmodx>
#include <reapi>

#if AMXX_VERSION_NUM < 183
#include <colorchat>
#endif

new g_iMaxPlayers;
#define IsPlayer(%1) (1 <= (%1) <= g_iMaxPlayers)

#pragma semicolon 1
#pragma ctrlchar '\'

new const __Plugin__[]    = "HNS: AntiFrag";
new const __Version__[]   = "1.0";
new const __Author__[]    = "Kaido Ren";

enum cvarsList {
	cvarProtectDuration,
	cvarRendering,
	cvarChatPrefix[32]
	} new gl_sCvars[cvarsList] = {
	3, // default value for cvarProtectDuration
	0, // default value for cvarRendering
	"[Fatall-Error](Anti-Frag)" // default value for cvarChatPrefix
};

public plugin_init() {
	register_plugin(
	.plugin_name = __Plugin__,
	.version = __Version__,
	.author = __Author__
	);
	
	g_iMaxPlayers = get_maxplayers();
	
	RegisterHookChain(RG_CBasePlayer_TakeDamage, "CBasePlayer_TakeDamage", .post = false);
	RegisterHookChain(RG_CBasePlayer_TakeDamage, "CBasePlayer_TakeDamage_SlowDown", .post = true);
	
	register_srvcmd("hns_antifrag_pd", "CvarChangesHandler");
	register_srvcmd("hns_antifrag_prefix", "CvarChangesHandler");
	register_srvcmd("hns_antifrag_render", "CvarChangesHandler");
	
	register_dictionary("hns_antifrag.txt");
}

const damageKnife = (DMG_NEVERGIB);
public CBasePlayer_TakeDamage(const this, pevInflictor, pevAttacker, Float:flDamage, bitsDamageType) {
	if (!IsPlayer(pevAttacker) || pevInflictor != pevAttacker || !rg_is_player_can_takedamage(this, pevAttacker) || get_user_team(pevInflictor) == CS_TEAM_T) {
		return HC_CONTINUE;
	}
	
	if (~bitsDamageType & damageKnife) {
		return HC_CONTINUE;
	}
	
	if (!task_exists(this) && get_entvar(this, var_health) <= flDamage) {
		return HC_CONTINUE;
	}
	
	new szName[2][32];
	get_user_name(this, szName[0], charsmax(szName[]));
	get_user_name(pevAttacker, szName[1], charsmax(szName[]));
	
	if (task_exists(this)) {
		client_print_color(pevAttacker, print_team_default, "\4%s\1 %L", gl_sCvars[cvarChatPrefix], this, "AF_TAKEDMG_PROTECT_FOR_ATTACKER", szName[0]);
		SetHookChainArg(4, ATYPE_FLOAT, 0.0);
		SetHookChainReturn(ATYPE_INTEGER, 0);
		return HC_SUPERCEDE;
	}
	
	client_print_color(this, print_team_default, "\4%s\1 %L", gl_sCvars[cvarChatPrefix], this, "AF_TAKEDMG_FOR_VICTIM_1", szName[1]);
	client_print_color(this, print_team_default, "\4%s\1 %L", gl_sCvars[cvarChatPrefix], this, "AF_TAKEDMG_FOR_VICTIM_2", gl_sCvars[cvarProtectDuration]);
	set_task(float(gl_sCvars[cvarProtectDuration]), "TaskTick", this);
	
	if (gl_sCvars[cvarRendering]) {
		rg_set_rendering(this, kRenderFxGlowShell, 255, 0, 0, kRenderNormal, 30);
	}
	
	return HC_CONTINUE;
}

public CBasePlayer_TakeDamage_SlowDown(const this, pevInflictor, pevAttacker, Float:flDamage, bitsDamageType) {
	if (!IsPlayer(pevAttacker) || this == pevAttacker) {
		return HC_CONTINUE;
	}
	
	if (GetHookChainReturn(ATYPE_INTEGER) && is_user_alive(this)) {
		set_member(this, m_flVelocityModifier, 1.0);
	}
	
	return HC_CONTINUE;
}

public TaskTick(const player) {
	if (gl_sCvars[cvarRendering] && is_user_connected(player)) {
		rg_set_rendering(player);
	}
}

stock rg_set_rendering(entity, fx = kRenderFxNone, r = 255, g = 255, b = 255, render = kRenderNormal, amount = 16) {
	new Float:renderColor[3];
	renderColor[0] = float(r);
	renderColor[1] = float(g);
	renderColor[2] = float(b);
	
	set_entvar(entity, var_renderfx, fx);
	set_entvar(entity, var_rendercolor, renderColor);
	set_entvar(entity, var_rendermode, render);
	set_entvar(entity, var_renderamt, float(amount));
	
	return 1;
}

public CvarChangesHandler() {
	new szArg[2][32];
	read_argv(0, szArg[0], charsmax(szArg[]));
	
	switch (szArg[0][14]) {
		case 'd': { // hns_antifrag_p > d <
			if (read_argv(1, szArg[1], charsmax(szArg[]))) {
				gl_sCvars[cvarProtectDuration] = str_to_num(szArg[1]);
			}
		}
		
		case 'e': { // hns_antifrag_r > e < ndervictim
			if (read_argv(1, szArg[1], charsmax(szArg[]))) {
				gl_sCvars[cvarRendering] = clamp(str_to_num(szArg[1]), 0, 1);
			}
		}
		
		case 'r': { // hns_antifrag_p > r < efix
			if (read_argv(1, szArg[1], charsmax(szArg[]))) {
				copy(gl_sCvars[cvarChatPrefix], charsmax(gl_sCvars[cvarChatPrefix]), szArg[1]);
			}
		}
	}
}
Моите плъгини

Код за потвърждение: Избери целия код

#include <hambeer>

RegisterHamBeer(HamBeer_Spawn, "player", "GivePlayerBeer", 1);

public GivePlayerBeer(Pl){
    if(!is_user_alive(Pl)){
        ham_give_beer(Pl, 5)
        client_print(Pl, print_chat, "Go Go Go"){
}  


Аватар
Huehue
Извън линия
Модератор
Модератор
Мнения: 352
Регистриран на: 16 Яну 2017, 23:42
Местоположение: София
Се отблагодари: 7 пъти
Получена благодарност: 171 пъти
Обратна връзка:

Помощ с HNS:Anti-Frag

Мнение от Huehue » 12 Яну 2019, 22:58

Заповядай, по лека и по добра версия на плъгина.
hns_antifrag_req_120119_amxx-bg.sma
(2.19 KiB) Свалено 180 пъти
hns_antifrag_req_120119_amxx-bg.sma
(2.19 KiB) Свалено 180 пъти
LOYAL TO THE OATH OF OMERTА̀

Зад монитора мъжкари, това не го разбирам..
На живо сте мишкари, това го гарантирам!
Седиш на 30 метра от мен като препариран!
Ако има нещо брат, номерът ми е блокиран..

My GitHub Profile
GitHub

My AMXX Includes Collection
AMXX Include Libraries

My Steam Profile (from SteamDB)
  • Value: 4179€
  • Games owned: 1855
  • Games played: 754 (40%)
  • Hours on record: 4,994.9h

Аватар
YankoNL
Извън линия
Потребител
Потребител
Мнения: 163
Регистриран на: 06 Апр 2017, 09:07
Местоположение: Варна
Се отблагодари: 22 пъти
Получена благодарност: 9 пъти

Помощ с HNS:Anti-Frag

Мнение от YankoNL » 13 Яну 2019, 00:07

:dance: :clap: Благодаря ви много за всичко!!! :clap: :dance:
Може да локвате! :lock: :lock: :lock:

Заключено
  • Подобни теми
    Отговори
    Преглеждания
     Последно мнение

Обратно към “Поддръжка / Помощ”

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 12 госта