[1.1] No Damage with AWP (блок урона от авп)

Однорукий Джо

Пользователь
Регистрация
10 Июн 2017
Сообщения
32
Симпатии
27
Пол
Мужской
#1
Автор: neygomon

Описание:
No Damage With AWP — блокирует урон, получаемый от AWP по игрокам с определенным steamid. Вы можете сделать себе некоторый аналог випа, только вместо приевшейся оружейки будет другая фишка, вип будет обладать иммунитетом к AWP. Способ блокирования простой и надёжный, нет никаких сбоев в работе и нагрузки на сервер.

Настройка:
PHP:
#define BLOCK_TYPE 1
/*
    0 - Блочит урон, но есть кровь. Легкий вариант.
    1 - Блочит урон и кровь при попадании. Тяжелее 1-го способа.
*/
Содержимое файла "no_dmg_list.ini":
PHP:
;; Конфигурационный файл плагина no_dmg_with_awp.amxx
;; Автор neygomon | https://www.neugomon.ru
;; ==============================================
;; В данный файл прописываются STEAMID игроков, у которых защита от убийства с AWP

STEAM_0:1:95462927
STEAM_0:1:90591396
Установка:
  1. Скачиваем исходник плагина.
  2. Меняем настройки по своему усмотрению в исходнике ( no_dmg_with_awp.sma)
  3. Вписываем SteamID будущих випов в no_dmg_list.ini
  4. Компилируем.
  5. no_dmg_with_awp.sma кидаете в /addons/amxmodx/scripting
  6. no_dmg_with_awp.amxx кидаете в /addons/amxmodx/plugins
  7. no_dmg_list.ini кидаете в /addons/amxmodx/configs
  8. После смены карты избранные счастливчики будут обладать иммунитетом к AWP
 

Вложения

Последнее редактирование: Однорукий Джо

c0d3

Пользователь
Регистрация
16 Июн 2017
Сообщения
41
Симпатии
0
Пол
Мужской
#2
Hi dear can you configure this file .ini to work with nick name no steam or togther
 

PbIC9TuHa

Пользователь
Регистрация
4 Сен 2017
Сообщения
11
Симпатии
1
Пол
Мужской
#3
Привет всем ... вот что нашел в логах ошибок - постоянно выдает тся вот ЭТО
L 10/16/2017 - 12:11:49: [AMXX] Displaying debug trace (plugin "no_dmg_with_awp.amxx")
L 10/16/2017 - 12:11:49: [AMXX] Run time error 10: native error (native "get_user_weapon")
L 10/16/2017 - 12:11:49: [AMXX] [0] no_dmg_with_awp.sma::fwdHamBlockAwpPre (line 52)
L 10/16/2017 - 12:13:51: Invalid player id 0
L 10/16/2017 - 12:13:51: [AMXX] Displaying debug trace (plugin "no_dmg_with_awp.amxx")
L 10/16/2017 - 12:13:51: [AMXX] Run time error 10: native error (native "get_user_weapon")
L 10/16/2017 - 12:13:51: [AMXX] [0] no_dmg_with_awp.sma::fwdHamBlockAwpPre (line 52)
L 10/16/2017 - 12:18:24: Invalid player id 101
L 10/16/2017 - 12:18:24: [AMXX] Displaying debug trace (plugin "no_dmg_with_awp.amxx")
L 10/16/2017 - 12:18:24: [AMXX] Run time error 10: native error (native "get_user_weapon")
L 10/16/2017 - 12:18:24: [AMXX] [0] no_dmg_with_awp.sma::fwdHamBlockAwpPre (line 52)
L 10/16/2017 - 12:18:24: Invalid player id 107
L 10/16/2017 - 12:18:24: [AMXX] Displaying debug trace (plugin "no_dmg_with_awp.amxx")
L 10/16/2017 - 12:18:24: [AMXX] Run time error 10: native error (native "get_user_weapon")
L 10/16/2017 - 12:18:24: [AMXX] [0] no_dmg_with_awp.sma::fwdHamBlockAwpPre (line 52)
L 10/16/2017 - 12:20:23: Invalid player id 0
L 10/16/2017 - 12:20:23: [AMXX] Displaying debug trace (plugin "no_dmg_with_awp.amxx")
L 10/16/2017 - 12:20:23: [AMXX] Run time error 10: native error (native "get_user_weapon")
L 10/16/2017 - 12:20:23: [AMXX] [0] no_dmg_with_awp.sma::fwdHamBlockAwpPre (line 52)
 

BalbuR

Пользователь
Регистрация
26 Июл 2017
Сообщения
120
Симпатии
22
Пол
Мужской
#4
Привет всем ... вот что нашел в логах ошибок - постоянно выдает тся вот ЭТО
L 10/16/2017 - 12:11:49: [AMXX] Displaying debug trace (plugin "no_dmg_with_awp.amxx")
L 10/16/2017 - 12:11:49: [AMXX] Run time error 10: native error (native "get_user_weapon")
L 10/16/2017 - 12:11:49: [AMXX] [0] no_dmg_with_awp.sma::fwdHamBlockAwpPre (line 52)
L 10/16/2017 - 12:13:51: Invalid player id 0
L 10/16/2017 - 12:13:51: [AMXX] Displaying debug trace (plugin "no_dmg_with_awp.amxx")
L 10/16/2017 - 12:13:51: [AMXX] Run time error 10: native error (native "get_user_weapon")
L 10/16/2017 - 12:13:51: [AMXX] [0] no_dmg_with_awp.sma::fwdHamBlockAwpPre (line 52)
L 10/16/2017 - 12:18:24: Invalid player id 101
L 10/16/2017 - 12:18:24: [AMXX] Displaying debug trace (plugin "no_dmg_with_awp.amxx")
L 10/16/2017 - 12:18:24: [AMXX] Run time error 10: native error (native "get_user_weapon")
L 10/16/2017 - 12:18:24: [AMXX] [0] no_dmg_with_awp.sma::fwdHamBlockAwpPre (line 52)
L 10/16/2017 - 12:18:24: Invalid player id 107
L 10/16/2017 - 12:18:24: [AMXX] Displaying debug trace (plugin "no_dmg_with_awp.amxx")
L 10/16/2017 - 12:18:24: [AMXX] Run time error 10: native error (native "get_user_weapon")
L 10/16/2017 - 12:18:24: [AMXX] [0] no_dmg_with_awp.sma::fwdHamBlockAwpPre (line 52)
L 10/16/2017 - 12:20:23: Invalid player id 0
L 10/16/2017 - 12:20:23: [AMXX] Displaying debug trace (plugin "no_dmg_with_awp.amxx")
L 10/16/2017 - 12:20:23: [AMXX] Run time error 10: native error (native "get_user_weapon")
L 10/16/2017 - 12:20:23: [AMXX] [0] no_dmg_with_awp.sma::fwdHamBlockAwpPre (line 52)
после 51 добавь:
if(!is_user_alive[pAttacker]) return HAM_IGNORED;
 

PbIC9TuHa

Пользователь
Регистрация
4 Сен 2017
Сообщения
11
Симпатии
1
Пол
Мужской
#5
после 51 добавь:
if(!is_user_alive[pAttacker]) return HAM_IGNORED;
нееа чот не так .... не компилируется :(
#include <amxmodx>
#include <hamsandwich>

#define BLOCK_TYPE 0
/*
0 - Блочит урон, но есть кровь. Легкий вариант.
1 - Блочит урон и кровь при попадании. Тяжелее 1-го способа.
*/

new Trie:g_tAuthIds;
new bool:g_bBlockKill[33];

public plugin_init()
{
register_plugin("No Damage with AWP", "1.1", "neygomon");
#if BLOCK_TYPE == 0
RegisterHam(Ham_TakeDamage, "player", "fwdHamBlockAwpPre", false);
#endif
#if BLOCK_TYPE == 1
RegisterHam(Ham_TraceAttack, "player", "fwdHamBlockAwpPre", false);
#endif
}

public plugin_cfg()
{
new fp = fopen("addons/amxmodx/configs/no_dmg_list.ini", "rt");
if(!fp) set_fail_state("File ^"addons/amxmodx/configs/no_dmg_list.ini^" not found OR not read!");
g_tAuthIds = TrieCreate();
new buff[25];
while(!feof(fp))
{
fgets(fp, buff, charsmax(buff));
trim(buff);
if(!buff[0] || buff[0] == ';') continue;
TrieSetCell(g_tAuthIds, buff, 0);
}
fclose(fp);
}

public client_putinserver(id)
{
static sAuthId[25]; get_user_authid(id, sAuthId, charsmax(sAuthId));
g_bBlockKill[id] = TrieKeyExists(g_tAuthIds, sAuthId) ? true : false;
}

#if BLOCK_TYPE == 0
public fwdHamBlockAwpPre(pVictim, IdInflictor, pAttacker)
#endif
#if BLOCK_TYPE == 1
public fwdHamBlockAwpPre(pVictim, pAttacker)
#endif

return (g_bBlockKill[pVictim] && get_user_weapon(pAttacker) == CSW_AWP) ? HAM_SUPERCEDE : HAM_IGNORED;

public plugin_end() TrieDestroy(g_tAuthIds);
 

BalbuR

Пользователь
Регистрация
26 Июл 2017
Сообщения
120
Симпатии
22
Пол
Мужской
#6
PHP:
#if BLOCK_TYPE == 0
public fwdHamBlockAwpPre(pVictim, IdInflictor, pAttacker)
#endif
#if BLOCK_TYPE == 1
public fwdHamBlockAwpPre(pVictim, pAttacker)
#endif
if(!is_user_alive(pAttacker)) return HAM_IGNORED; // 51-52
return (g_bBlockKill[pVictim] && get_user_weapon(pAttacker) == CSW_AWP) ? HAM_SUPERCEDE : HAM_IGNORED;

public plugin_end() TrieDestroy(g_tAuthIds);
 

PbIC9TuHa

Пользователь
Регистрация
4 Сен 2017
Сообщения
11
Симпатии
1
Пол
Мужской
#7
PHP:
#if BLOCK_TYPE == 0
public fwdHamBlockAwpPre(pVictim, IdInflictor, pAttacker)
#endif
#if BLOCK_TYPE == 1
public fwdHamBlockAwpPre(pVictim, pAttacker)
#endif
if(!is_user_alive(pAttacker)) return HAM_IGNORED; // 51-52
return (g_bBlockKill[pVictim] && get_user_weapon(pAttacker) == CSW_AWP) ? HAM_SUPERCEDE : HAM_IGNORED;

public plugin_end() TrieDestroy(g_tAuthIds);
// ----------------------------------------

//// no_dmg_with_awp.sma
// Z:\Compiler 1.8.2\no_dmg_with_awp.sma(53) : warning 209: function "fwdHamBloc
kAwpPre" should return a value
// Z:\Compiler 1.8.2\no_dmg_with_awp.sma(53) : error 010: invalid function or de
claration
//
// 1 Error.
// Could not locate output file compiled\no_dmg_with_awp.amx (compile failed).
//
// Compilation Time: 0,12 sec
// ----------------------------------------

Press enter to exit ...
 

BalbuR

Пользователь
Регистрация
26 Июл 2017
Сообщения
120
Симпатии
22
Пол
Мужской
#8
а я понял
так сделай:

Код:
#if BLOCK_TYPE == 0
public fwdHamBlockAwpPre(pVictim, IdInflictor, pAttacker) {
#endif
#if BLOCK_TYPE == 1
public fwdHamBlockAwpPre(pVictim, pAttacker) {
#endif
if(!is_user_alive(pAttacker)) return HAM_IGNORED;
return (g_bBlockKill[pVictim] && get_user_weapon(pAttacker) == CSW_AWP) ? HAM_SUPERCEDE : HAM_IGNORED;
}
public plugin_end() TrieDestroy(g_tAuthIds);
 

PbIC9TuHa

Пользователь
Регистрация
4 Сен 2017
Сообщения
11
Симпатии
1
Пол
Мужской
#9
а я понял
так сделай:

Код:
#if BLOCK_TYPE == 0
public fwdHamBlockAwpPre(pVictim, IdInflictor, pAttacker) {
#endif
#if BLOCK_TYPE == 1
public fwdHamBlockAwpPre(pVictim, pAttacker) {
#endif
if(!is_user_alive(pAttacker)) return HAM_IGNORED;
return (g_bBlockKill[pVictim] && get_user_weapon(pAttacker) == CSW_AWP) ? HAM_SUPERCEDE : HAM_IGNORED;
}
public plugin_end() TrieDestroy(g_tAuthIds);
+++ посмотрю как там дальше пойдет ... пока вроде таких ошибок нет
 

PbIC9TuHa

Пользователь
Регистрация
4 Сен 2017
Сообщения
11
Симпатии
1
Пол
Мужской
#10
Вроде да - больше ошибок не было ! Спасибо ты гений :)
 

PbIC9TuHa

Пользователь
Регистрация
4 Сен 2017
Сообщения
11
Симпатии
1
Пол
Мужской
#11
Предлагаю сделать некоторую доработочку :)
например Иммунитет пропадает когда оба игрока (атакующий и жертва) присутствуют в списке no_dmg_list.ini
или еще такой вариант - сам взял АВП - иммунитет долой.
 

neygomon

Его Темнейшество :j
Пользователь
Регистрация
8 Июн 2017
Сообщения
835
Симпатии
379
Пол
Мужской
#12
PbIC9TuHa,
Код:
#if BLOCK_TYPE == 0
public fwdHamBlockAwpPre(pVictim, IdInflictor, pAttacker)
#endif
#if BLOCK_TYPE == 1
public fwdHamBlockAwpPre(pVictim, pAttacker)
#endif
{
    if(!is_user_alive(pAttacker))
        return HAM_IGNORED;
    
    if(g_bBlockKill[pVictim] && g_bBlockKill[pAttacker])
        return HAM_IGNORED;
    
    return (g_bBlockKill[pVictim] && get_user_weapon(pAttacker) == CSW_AWP) ? HAM_SUPERCEDE : HAM_IGNORED;
}
 

PbIC9TuHa

Пользователь
Регистрация
4 Сен 2017
Сообщения
11
Симпатии
1
Пол
Мужской
#13
сделал так :) - если ты имеешь Иммунитет от АВП - то и играй без АВП :)
как только берешь АВП в руки иммунитет твой пропадает :)
return (g_bBlockKill[pVictim] && get_user_weapon(pAttacker) == CSW_AWP && get_user_weapon(pVictim) != CSW_AWP) ? HAM_SUPERCEDE : HAM_IGNORED;
 

PbIC9TuHa

Пользователь
Регистрация
4 Сен 2017
Сообщения
11
Симпатии
1
Пол
Мужской
#14
Хммм заметил странное - при попадание с АВП в меня (при наличии у меня ИММУНКИ) слетает вся броня - это так и должно быть ?
или я где то нахимичил ?