Русское сообщество по скриптингу

Админы могут кикать, банить и т.п. друг друга

Все вопросы по работе и настройке AMXX и его плагинов.

Модератор: liFe iS GoOD

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только вопросов по AMX Mod X и его плагинам.

Админы могут кикать, банить и т.п. друг друга

Сообщение kayot1337 » 07 дек 2016, 15:44

Возможно ли сделать, чтобы админы могли кикать, банить и т.п. друг друга? Перелазил весь google, amx, ничего не нашел :(

Добавлено спустя 1 минуту 43 секунды:
Только не в plmenu, я привел просто как пример кикать и банить. Имеется плагин в котором я сделал, чтобы патроны пополнялись только тогда, когда VIP убивает игроков. Но появилось одно но, если VIP убьет VIP то ничего не происходит, и я вот сижу и думаю как решить данную проблему.
Аватара пользователя
kayot1337
 
Сообщения: 30
Зарегистрирован: 12 дек 2012, 21:18
Благодарил (а): 6 раз.
Поблагодарили: 0 раз.
Языки программирования: Counter-Strike 1.6

Re: Админы могут кикать, банить и т.п. друг друга

Сообщение Subb98 » 07 дек 2016, 16:43

kayot1337, возможно, путём дополнительных условий в меню + собственных функций kick / ban / slay и т.д.
«Очень хорошо. Лучше вы, чем я» © Donald J. Trump
Аватара пользователя
Subb98
Модератор
 
Сообщения: 5485
Зарегистрирован: 24 мар 2011, 19:42
Откуда: г. Пермь
Благодарил (а): 1329 раз.
Поблагодарили: 2343 раз.
Опыт программирования: Больше трех лет
Языки программирования: PHP

Re: Админы могут кикать, банить и т.п. друг друга

Сообщение Fedcomp » 07 дек 2016, 16:50

А если убрать иммунитет, не поможет?
Не помогаю в ЛС - есть форум.
Плагины тоже не пишу, на форуме достаточно хороших скриптеров.


"я ставлю зависимости потому что мне приятно" - subb98 @ 2017
Аватара пользователя
Fedcomp
Администратор
 
Сообщения: 4936
Зарегистрирован: 28 авг 2009, 20:47
Благодарил (а): 813 раз.
Поблагодарили: 1317 раз.
Языки программирования: =>
pawn / php / python / ruby
javascript / rust

Re: Админы могут кикать, банить и т.п. друг друга

Сообщение kayot1337 » 07 дек 2016, 16:57

Вы не поняли видимо, Имеется плагин в котором я сделал, чтобы патроны пополнялись только тогда, когда VIP убивает игроков. Но появилось одно но, если VIP убьет VIP то ничего не происходит, и я вот сижу и думаю как решить данную проблему.
Аватара пользователя
kayot1337
 
Сообщения: 30
Зарегистрирован: 12 дек 2012, 21:18
Благодарил (а): 6 раз.
Поблагодарили: 0 раз.
Языки программирования: Counter-Strike 1.6

Re: Админы могут кикать, банить и т.п. друг друга

Сообщение Pafos » 07 дек 2016, 18:16

kayot1337, а может исходник покажешь?
Аватара пользователя
Pafos
 
Сообщения: 574
Зарегистрирован: 07 апр 2014, 18:03
Откуда: pfnClientConnect
Забанен
Благодарил (а): 129 раз.
Поблагодарили: 97 раз.
Опыт программирования: Больше трех лет
Языки программирования: Pawn

Re: Админы могут кикать, банить и т.п. друг друга

Сообщение kayot1337 » 08 дек 2016, 01:08

Код: Выделить всё
// Copyright © 2015 Vaqtincha
/*******************************************************
*    Support forum:
*        http://goldsrc.ru
*
*    Credits:
*    
*    - ConnorMcLeod for plugin "Refill Weapon On Hs Kill"
*
********************************************************/

//============================ CONFIG START ===========================//
#define ONLY_ACTIVE_WEAPON
// #define ONLY_HEADSHOT_KILL
// #define PLAY_SOUND
#define ACCESS_FLAG ADMIN_LEVEL_H
//============================= CONFIG END ============================//

#define VERSION "0.0.2"

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

#define get_user_active_weapon(%1)        get_pdata_cbase(%1, m_pActiveItem)
#define get_user_last_hitgroup(%1)        get_pdata_int(%1, m_LastHitGroup)
#define fm_get_weapon_id(%1)            get_pdata_int(%1, m_iId, XO_WEAPON)
#define fm_set_weapon_ammo(%1,%2)        set_pdata_int(%1, m_iClip, %2, XO_WEAPON)

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

const NOCLIP_WPN_BS = ((1<<CSW_HEGRENADE)|(1<<CSW_SMOKEGRENADE)|(1<<CSW_FLASHBANG)|(1<<CSW_KNIFE)|(1<<CSW_C4)) 
const MAX_ITEM_TYPES 
= 6

// Offsets
const m_pNext = 42
const m_iId 
= 43
const m_iClip 
= 51
const m_pActiveItem 
= 373
const m_LastHitGroup 
= 75
const XO_WEAPON 
= 4
#if !defined ONLY_ACTIVE_WEAPON
new const m_rgpPlayerItems_CBasePlayer[MAX_ITEM_TYPES] = {367, 368, ...}
#endif

new const g_iMaxClip[CSW_P90+1] = { -1, 13, -1, 10, 1, 7, 1, 30, 30, 1, 30, 20, 25, 30,
    35, 25, 12, 20, 10, 30, 100, 8, 30, 30, 20, 2, 7, 30, 30, -1, 50
}

new g_iMaxPlayers

public plugin_init
() 
{
    #if defined ONLY_HEADSHOT_KILL
    register_plugin("Refill Clip On Hs Kill", VERSION, "Vaqtincha")
    #else
    register_plugin("Refill Clip On Kill", VERSION, "Vaqtincha")
    #endif
    RegisterHam(Ham_Killed, "player", "PlayerKilled_Post", .Post = true) 
    g_iMaxPlayers 
= get_maxplayers() 
}

public PlayerKilled_Post(id, iKiller, iGib) 
{
    if(get_user_flags(id) & ACCESS_FLAG)
        return HAM_HANDLED;

    if(!IsPlayer(iKiller) || id == iKiller || !is_user_alive(iKiller))
        return HAM_IGNORED
    
    
#if defined ONLY_HEADSHOT_KILL
    if(get_user_last_hitgroup(id) != HIT_HEAD)
        return HAM_IGNORED
    
#endif
    
    
#if defined ONLY_ACTIVE_WEAPON
    new iActiveWeapon = get_user_active_weapon(iKiller)
    if(iActiveWeapon > 0)
    {
        new iId = fm_get_weapon_id(iActiveWeapon)
        if(!(NOCLIP_WPN_BS & (1<<iId)))
        {
            fm_set_weapon_ammo(iActiveWeapon, g_iMaxClip[iId])
            #if defined PLAY_SOUND
            client_cmd(iKiller, "spk ^"items/9mmclip1.wav^"")
            #endif
        }
    }
    #else
    for(new slot = 1; slot<= 2; slot++)
    {
        new iWeapon = get_pdata_cbase(iKiller, m_rgpPlayerItems_CBasePlayer[slot])
        while(iWeapon > 0)
        {
            new iId = fm_get_weapon_id(iWeapon)
            // if(!(NOCLIP_WPN_BS & (1<<iId)))    // not necessary
            // {
            fm_set_weapon_ammo(iWeapon, g_iMaxClip[iId])
            iWeapon = get_pdata_cbase(iWeapon, m_pNext, XO_WEAPON)
            #if defined PLAY_SOUND
            client_cmd(iKiller, "spk ^"items/9mmclip1.wav^"")
            #endif
            // }
        }
    }
    #endif
    return HAM_IGNORED
Аватара пользователя
kayot1337
 
Сообщения: 30
Зарегистрирован: 12 дек 2012, 21:18
Благодарил (а): 6 раз.
Поблагодарили: 0 раз.
Языки программирования: Counter-Strike 1.6

Re: Админы могут кикать, банить и т.п. друг друга

Сообщение KPOCT » 08 дек 2016, 09:45

Держите.

Код: Выделить всё
// Copyright © 2015 Vaqtincha
/*******************************************************
*    Support forum:
*        http://goldsrc.ru
*
*    Credits:
*    
*    - ConnorMcLeod for plugin "Refill Weapon On Hs Kill"
*
********************************************************/

//============================ CONFIG START ===========================//
#define ONLY_ACTIVE_WEAPON
// #define ONLY_HEADSHOT_KILL
// #define PLAY_SOUND
#define ACCESS_FLAG ADMIN_LEVEL_H
//============================= CONFIG END ============================//

#define VERSION "0.0.2"

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

#define get_user_active_weapon(%1)        get_pdata_cbase(%1, m_pActiveItem)
#define get_user_last_hitgroup(%1)        get_pdata_int(%1, m_LastHitGroup)
#define fm_get_weapon_id(%1)            get_pdata_int(%1, m_iId, XO_WEAPON)
#define fm_set_weapon_ammo(%1,%2)        set_pdata_int(%1, m_iClip, %2, XO_WEAPON)

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

const NOCLIP_WPN_BS = ((1<<CSW_HEGRENADE)|(1<<CSW_SMOKEGRENADE)|(1<<CSW_FLASHBANG)|(1<<CSW_KNIFE)|(1<<CSW_C4)) 
const MAX_ITEM_TYPES 
= 6

// Offsets
const m_pNext = 42
const m_iId 
= 43
const m_iClip 
= 51
const m_pActiveItem 
= 373
const m_LastHitGroup 
= 75
const XO_WEAPON 
= 4
#if !defined ONLY_ACTIVE_WEAPON
new const m_rgpPlayerItems_CBasePlayer[MAX_ITEM_TYPES] = {367, 368, ...}
#endif

new const g_iMaxClip[CSW_P90+1] = { -1, 13, -1, 10, 1, 7, 1, 30, 30, 1, 30, 20, 25, 30,
    35, 25, 12, 20, 10, 30, 100, 8, 30, 30, 20, 2, 7, 30, 30, -1, 50 }

new g_iMaxPlayers

public plugin_init
() 
{
    #if defined ONLY_HEADSHOT_KILL
    register_plugin("Refill Clip On Hs Kill", VERSION, "Vaqtincha")
    #else
    register_plugin("Refill Clip On Kill", VERSION, "Vaqtincha")
    #endif
    RegisterHam(Ham_Killed, "player", "PlayerKilled_Post", .Post = true) 
    g_iMaxPlayers 
= get_maxplayers() 
}

public PlayerKilled_Post(id, iKiller, iGib) 
{
    if(get_user_flags(iKiller) & ACCESS_FLAG)
        return HAM_HANDLED;

    if(!IsPlayer(iKiller) || id == iKiller || !is_user_alive(iKiller))
        return HAM_IGNORED
    
    
#if defined ONLY_HEADSHOT_KILL
    if(get_user_last_hitgroup(id) != HIT_HEAD)
        return HAM_IGNORED
    
#endif
    
    
#if defined ONLY_ACTIVE_WEAPON
    new iActiveWeapon = get_user_active_weapon(iKiller)
    if(iActiveWeapon > 0)
    {
        new iId = fm_get_weapon_id(iActiveWeapon)
        if(!(NOCLIP_WPN_BS & (1<<iId)))
        {
            fm_set_weapon_ammo(iActiveWeapon, g_iMaxClip[iId])
            #if defined PLAY_SOUND
            client_cmd(iKiller, "spk ^"items/9mmclip1.wav^"")
            #endif
        }
    }
    #else
    for(new slot = 1; slot<= 2; slot++)
    {
        new iWeapon = get_pdata_cbase(iKiller, m_rgpPlayerItems_CBasePlayer[slot])
        while(iWeapon > 0)
        {
            new iId = fm_get_weapon_id(iWeapon)
            // if(!(NOCLIP_WPN_BS & (1<<iId)))    // not necessary
            // {
            fm_set_weapon_ammo(iWeapon, g_iMaxClip[iId])
            iWeapon = get_pdata_cbase(iWeapon, m_pNext, XO_WEAPON)
            #if defined PLAY_SOUND
            client_cmd(iKiller, "spk ^"items/9mmclip1.wav^"")
            #endif
            // }
        }
    }
    #endif
    return HAM_IGNORED

Проблема была в строке

Код: Выделить всё
if(get_user_flags(id) & ACCESS_FLAG

id - это убитый.
(2*b) || !(2*b)
Аватара пользователя
KPOCT
 
Сообщения: 65
Зарегистрирован: 21 фев 2016, 23:33
Благодарил (а): 21 раз.
Поблагодарили: 7 раз.
Опыт программирования: Больше трех лет
Языки программирования: C, C++, C#, Pawn, VBS, PHP, JS

Re: Админы могут кикать, банить и т.п. друг друга

Сообщение kayot1337 » 09 дек 2016, 18:56

Теперь вообще не пополняет патроны..
Аватара пользователя
kayot1337
 
Сообщения: 30
Зарегистрирован: 12 дек 2012, 21:18
Благодарил (а): 6 раз.
Поблагодарили: 0 раз.
Языки программирования: Counter-Strike 1.6

Re: Админы могут кикать, банить и т.п. друг друга

Сообщение KPOCT » 09 дек 2016, 20:06

kayot1337 писал(а):Теперь вообще не пополняет патроны..

Согласен, моя вина. Забыл "не" добавить.
Исправился:
Код: Выделить всё
// Copyright © 2015 Vaqtincha
/*******************************************************
*    Support forum:
*        http://goldsrc.ru
*
*    Credits:
*    
*    - ConnorMcLeod for plugin "Refill Weapon On Hs Kill"
*
********************************************************/

//============================ CONFIG START ===========================//
#define ONLY_ACTIVE_WEAPON
// #define ONLY_HEADSHOT_KILL
// #define PLAY_SOUND
#define ACCESS_FLAG ADMIN_LEVEL_H
//============================= CONFIG END ============================//

#define VERSION "0.0.2"

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

#define get_user_active_weapon(%1)        get_pdata_cbase(%1, m_pActiveItem)
#define get_user_last_hitgroup(%1)        get_pdata_int(%1, m_LastHitGroup)
#define fm_get_weapon_id(%1)            get_pdata_int(%1, m_iId, XO_WEAPON)
#define fm_set_weapon_ammo(%1,%2)        set_pdata_int(%1, m_iClip, %2, XO_WEAPON)

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

const NOCLIP_WPN_BS = ((1<<CSW_HEGRENADE)|(1<<CSW_SMOKEGRENADE)|(1<<CSW_FLASHBANG)|(1<<CSW_KNIFE)|(1<<CSW_C4)) 
const 
MAX_ITEM_TYPES 6

// Offsets
const m_pNext 42
const m_iId 43
const m_iClip 51
const m_pActiveItem 373
const m_LastHitGroup 75
const XO_WEAPON 4
#if !defined ONLY_ACTIVE_WEAPON
new const m_rgpPlayerItems_CBasePlayer[MAX_ITEM_TYPES] = {367368, ...}
#endif

new const g_iMaxClip[CSW_P90+1] = { -113, -1101713030130202530,
    
3525122010301008303020273030, -150 }

new 
g_iMaxPlayers

public plugin_init() 
{
    
#if defined ONLY_HEADSHOT_KILL
    
register_plugin("Refill Clip On Hs Kill"VERSION"Vaqtincha")
    
#else
    
register_plugin("Refill Clip On Kill"VERSION"Vaqtincha")
    
#endif
    
RegisterHam(Ham_Killed"player""PlayerKilled_Post", .Post true
    
g_iMaxPlayers get_maxplayers() 
}

public 
PlayerKilled_Post(idiKilleriGib
{
    if(!(
get_user_flags(iKiller) & ACCESS_FLAG))
        return 
HAM_HANDLED;

    if(!
IsPlayer(iKiller) || id == iKiller || !is_user_alive(iKiller))
        return 
HAM_IGNORED
    
    
#if defined ONLY_HEADSHOT_KILL
    
if(get_user_last_hitgroup(id) != HIT_HEAD)
        return 
HAM_IGNORED
    
#endif
    
    #if defined ONLY_ACTIVE_WEAPON
    
new iActiveWeapon get_user_active_weapon(iKiller)
    if(
iActiveWeapon 0)
    {
        new 
iId fm_get_weapon_id(iActiveWeapon)
        if(!(
NOCLIP_WPN_BS & (1<<iId)))
        {
            
fm_set_weapon_ammo(iActiveWeapong_iMaxClip[iId])
            
#if defined PLAY_SOUND
            
client_cmd(iKiller"spk ^"items/9mmclip1.wav^"")
            
#endif
        
}
    }
    
#else
    
for(new slot 1slot<= 2slot++)
    {
        new 
iWeapon get_pdata_cbase(iKillerm_rgpPlayerItems_CBasePlayer[slot])
        while(
iWeapon 0)
        {
            new 
iId fm_get_weapon_id(iWeapon)
            
// if(!(NOCLIP_WPN_BS & (1<<iId)))    // not necessary
            // {
            
fm_set_weapon_ammo(iWeapong_iMaxClip[iId])
            
iWeapon get_pdata_cbase(iWeaponm_pNextXO_WEAPON)
            
#if defined PLAY_SOUND
            
client_cmd(iKiller"spk ^"items/9mmclip1.wav^"")
            
#endif
            // }
        
}
    }
    
#endif
    
return HAM_IGNORED
}  
(2*b) || !(2*b)
Аватара пользователя
KPOCT
 
Сообщения: 65
Зарегистрирован: 21 фев 2016, 23:33
Благодарил (а): 21 раз.
Поблагодарили: 7 раз.
Опыт программирования: Больше трех лет
Языки программирования: C, C++, C#, Pawn, VBS, PHP, JS


Вернуться в Вопросы по AMXX и его плагинам

Кто сейчас на конференции

Сейчас этот форум просматривают: ProstoUser и гости: 5