Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

бан/кик игрока по нажатию одной клавиши

, то работает, то нет, не пойму в чём дело
Статус пользователя poloborota
сообщение 11.6.2016, 14:12
Сообщение #1


Стаж: 10 лет

Сообщений: 7
Благодарностей: 3
Полезность: 0

Есть плагин, который:
1) Если ты живой, по наведению прицела на другого игрока и нажатию клавиши, кикает его
2) Если в спектрах наблюдаешь за игроком, нажимаешь ту же клавишу и игрока банит (на срок, забитый в плагине).

Всё бы хорошо, но кик не работает, а бан сработал пару раз и больше "не хочет".
По нажатию из спектров ничего не происходит. Ошибок нет. Тестировал на людях.
Помогите допилить плагин

код
Код
#include <amxmodx>
#include <engine>
public plugin_init(){
    register_cvar("Ban_Time", "241920");//Время бана
    register_clcmd("fast_bk", "loool");    
}
public loool(id){
    if(!is_user_connected(id)||!(get_user_flags(id) & ADMIN_BAN)) return 1;
    new sdsdsd = get_cvar_num("Ban_Time");
    if(!is_user_alive(id)){
        new iSpecMode = entity_get_int(id, EV_INT_iuser1);
        if(iSpecMode == 0 || iSpecMode == 3) return 1;new iSpec=entity_get_int(id, EV_INT_iuser2);
        if(!is_user_connected(iSpec)) return 1;server_cmd("amx_superban %d #%d ^"CHEATER!^"", sdsdsd, iSpec);
    }
    else{
        new target,body;get_user_aiming(id, target, body, 9999)
        if(is_user_connected(target))server_cmd("amx_kick #%d ^"AFK^"", target);
    }
    return 0;
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   Цитировать сообщение
Статус пользователя iShot
сообщение 11.6.2016, 14:33
Сообщение #2


Стаж: 11 лет

Сообщений: 1340
Благодарностей: 463
Полезность: 845

Меценат Меценат

poloborota, попробуйте этот.
Код:
//	Copyright © 2016 Vaqtincha

#define ACCESS ADMIN_BAN
new BAN_CMD[16] = "amx_ban"
new REASON[64] = "KiW OtSyUdoVa!"
const MODE_1_TIME = 10
const MODE_2_TIME = 20
const MODE_3_TIME = 30


#define VERSION "0.0.1"

#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>

#define MAX_PLAYERS 32
#define IsPlayer(%1) (1<= %1 <= g_iMaxPlayers)
#define get_weapon_owner(%1) (get_pdata_cbase(%1, m_pPlayer, XO_WEAPON) > 0)

const m_pPlayer = 41
const m_flNextAttack = 83
const m_flNextSecondaryAttack = 47
const m_flNextPrimaryAttack = 46
const XO_WEAPON = 4

new g_iMaxPlayers

enum _:Modes{
NORMAL,
MODE_1,
MODE_2,
MODE_3
}

new g_iMode[MAX_PLAYERS + 1] = {Modes}

public plugin_init()
{
register_plugin("Ban Fire Pistol", VERSION, "Vaqtincha")

RegisterHam(Ham_TraceAttack, "player", "TraceAttack", true)
RegisterHam(Ham_Weapon_SecondaryAttack, "weapon_usp", "SecondaryAttack_Post", true)
RegisterHam(Ham_Weapon_SecondaryAttack, "weapon_glock18", "SecondaryAttack_Post", true)
RegisterHam(Ham_Item_Deploy, "weapon_usp", "ItemDeploy_Post", true)
RegisterHam(Ham_Item_Deploy, "weapon_glock18", "ItemDeploy_Post", true)

g_iMaxPlayers = get_maxplayers()
}

public TraceAttack(victim, attacker, Float:damage, Float:direction[3], tracehandle, damagebits)
{
if(IsPlayer(attacker))
{
switch(g_iMode[attacker])
{
case NORMAL: return
case MODE_1: server_cmd("%s #%d %d ^"%s^"", BAN_CMD, get_user_userid(victim), MODE_1_TIME, REASON)
case MODE_2: server_cmd("%s #%d %d ^"%s^"", BAN_CMD, get_user_userid(victim), MODE_2_TIME, REASON)
case MODE_3: server_cmd("%s #%d %d ^"%s^"", BAN_CMD, get_user_userid(victim), MODE_3_TIME, REASON)
default: return
}
}
}

public ItemDeploy_Post(wEnt)
{
if(wEnt <=0)
return

new id = get_weapon_owner(wEnt)
if(get_user_flags(id) & ACCESS)
{
switch(g_iMode[id])
{
case NORMAL: client_print(id, print_center, "Normal Fire")
case MODE_1: client_print(id, print_center, "Ban Fire^r^nTime: %d", MODE_1_TIME)
case MODE_2: client_print(id, print_center, "Ban Fire^r^nTime: %d", MODE_2_TIME)
case MODE_3: client_print(id, print_center, "Ban Fire^r^nTime: %d", MODE_3_TIME)
default: return
}
set_pdata_float(id, m_flNextAttack, 0.0)
set_pdata_float(wEnt, m_flNextPrimaryAttack, -1.0, XO_WEAPON)
}
}

public SecondaryAttack_Post(wEnt)
{
if(wEnt <=0)
return

new id = get_weapon_owner(wEnt)
if(get_user_flags(id) & ACCESS)
{
++g_iMode[id]
switch(g_iMode[id])
{
case NORMAL: client_print(id, print_center, "Normal Fire")
case MODE_1: client_print(id, print_center, "Ban Fire^r^nTime: 10")
case MODE_2: client_print(id, print_center, "Ban Fire^r^nTime: 20")
case MODE_3: client_print(id, print_center, "Ban Fire^r^nTime: 30")
default:{
g_iMode[id] = NORMAL
client_print(id, print_center, "Normal Fire")
}
}
set_pdata_float(id, m_flNextAttack, 0.5)
set_pdata_float(wEnt, m_flNextSecondaryAttack, 0.5, XO_WEAPON)
}
}




улыбнись :)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Inline
сообщение 12.6.2016, 8:41
Сообщение #3


Стаж: 10 лет

Сообщений: 139
Благодарностей: 80
Полезность: 447

poloborota, тошнотворный код, только нормально выравнил и добавил get_user_userid

Код:

public loool(id)
{
if( !is_user_connected(id) || !(get_user_flags(id) & ADMIN_BAN))
return 1;
new sdsdsd = get_cvar_num("Ban_Time");
if(!is_user_alive(id))
{
new iSpecMode = entity_get_int(id, EV_INT_iuser1);
if(iSpecMode == 0 || iSpecMode == 3)
return 1;
new iSpec=entity_get_int(id, EV_INT_iuser2);
if(!is_user_connected(iSpec))
return 1;
server_cmd("amx_superban %d #%d ^"CHEATER!^"", sdsdsd, get_user_userid(iSpec));
}
else
{
new target,body;
get_user_aiming(id, target, body, 9999)
if(is_user_connected(target))
server_cmd("amx_kick #%d ^"AFK^"", get_user_userid(target));
}
return 0;
}


1 вопрос. Как это вообще работало и компилировалось ?

Почитайте дополнительно: http://amxxmodx.ru/core/amxmodxinc/287-get...rid-igroka.html

Отредактировал: Inline, - 12.6.2016, 8:43


Не читай
Не забывай нажимать кнопку "спасибо"
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя poloborota
сообщение 13.6.2016, 5:08
Сообщение #4


Стаж: 10 лет

Сообщений: 7
Благодарностей: 3
Полезность: 0

Inline, спасибо, попробую)
Цитата
Как это вообще работало и компилировалось ?

Компилится без проблем.
Код писал человек, забаненный на всех возможных форумах по cs 1.6)
Не знаю причин, но все его почему-то однозначно хаят)


iShot, да, видел этот плагин, но это не совсем то.
Как я понял, он добавляет к пистолету возможность банить выстрелом в игрока.
А мне хочется из спектров банить одной кнопкой, чтобы не листать менюшки
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя poloborota
сообщение 13.6.2016, 12:38
Сообщение #5


Стаж: 10 лет

Сообщений: 7
Благодарностей: 3
Полезность: 0

Inline,
теперь по нажатию кнопки банит, но сервак после этого как будто на 5-7 секунд встаёт на паузу, потом у всех остальных игроков пинг по 2000-3000 и приходится переподключаться(
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя poloborota
сообщение 15.6.2016, 3:40
Сообщение #6


Стаж: 10 лет

Сообщений: 7
Благодарностей: 3
Полезность: 0

Я тут подумал, мне достаточно будет минимального функционала для счастья:
банить из спектров одной кнопкой (на зашитый в плагин период времени).
Помогите, плиз, такой плагин набросать
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: