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

Не выводится сообщение в чат при нажатие на пункт  [Решено]

Все вопросы по скриптингу для AMXX, помощь в редактировании плагинов.

Модераторы: Subb98, liFe iS GoOD

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

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

Правила при создании новой темы:
1. При вставке кода плагина необходимо использовать тег [code=php].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. При описании проблемы или запросе на помощь в редактировании плагина обязательно выкладывайте исходник sma плагина.

Re: Не выводится сообщение в чат при нажатие на пункт

Сообщение Jeka_Pro » 09 янв 2017, 22:42

NEoMASTERR писал(а):
Код: Выделить всё
= (timeGravity[id] - systime) / 60; s = (timeGravity[id] - systime) % 60;
Len += formatex(menu[Len], charsmax(menu) - Len, "\d[2] Взять гравитацию: (%d) [\y%d:%s%d\d]^n", Gravity[id], m, s < 10 ? "0" : "", s)
keys &= ~MENU_KEY_2


Добавлено спустя 16 минут 19 секунд:
Код: Выделить всё
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <hamsandwich>
#include <engine>
#include <cstrike>
#include <fun>
#include <dhudmessage>
#include <colorchat>

#pragma tabsize 0

new keys = MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_6|MENU_KEY_7|MENU_KEY_8|MENU_KEY_9|MENU_KEY_0
                                                       
new Spawn
[33] 
new Gravity
[33]
new SpeedA[33]
new Invis[33]
new Money[33]
new HP[33]
new Grenade[33]
new Spead[33]                    

new timeMoney
[33];
new timeGravity[33];
new timeSpeedA[33];
new timeInvis[33];

new cvar_time_for_money;
new cvar_time_for_gravity;
new cvar_time_for_speeda;
new cvar_time_for_invis;
new cvar_time_invis;


#define PLUGIN "AdminMenu"
#define VERSION "v0.2 Fix"
#define AUTHOR "Jeka_Pro"

#define OFFSET_WEAPONSPEED      58

#define OFFSET_CLIPAMMO        51
#define OFFSET_LINUX_WEAPONS    4
#define fm_cs_set_weapon_ammo(%1,%2)    set_pdata_int(%1, OFFSET_CLIPAMMO, %2, OFFSET_LINUX_WEAPONS)

#define m_pActiveItem 373

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

//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 bool
:g_bDamage[33], bool:g_bUnlimitedAmmo[33];   
    
#define MAX_PLAYERS 32 
#if defined AMXX_VERSION_NUM < 183 
    #define Ham_CS_Player_ResetMaxSpeed Ham_Item_PreFrame 
#endif

new bool:g_bSpeed[MAX_PLAYERS+1] = false; 
    
public plugin_init
() 
{
    register_plugin(PLUGIN, VERSION, AUTHOR)        
    
    register_menu
("Menu 1", keys, "func_menu") 
    register_clcmd
("adminmenu", "adminmenu")
    register_event("CurWeapon" , "Event_CurWeapon" , "be" , "1=1" );
    register_event("HLTV", "RoundNew", "a", "1=0", "2=0")
    
    RegisterHam
(Ham_CS_Player_ResetMaxSpeed, "player", "Check_Speed", 0); 
    RegisterHam
(Ham_Spawn, "player", "Player_Spawn", 0) 
    
    RegisterHam
(Ham_Killed, "player", "HamHook_Killed_Post", true);
    RegisterHam(Ham_TakeDamage, "player", "HamHook_TakeDamage_Player", false);
    
    cvar_time_for_money 
= register_cvar("time_for_money","15") //время в минутах
    cvar_time_for_gravity = register_cvar("time_for_gravity","15") //время в минутах
    cvar_time_for_speeda = register_cvar("time_for_speeda","15") //время в минутах
    cvar_time_for_invis = register_cvar("time_for_invis","15") //время в минутах
    cvar_time_invis = register_cvar("adminmenu_time_invis","300") //Время в секундах
}

public client_putinserver(id)
{
    static systime; systime = get_systime();
    timeMoney[id]     = systime + get_pcvar_num(cvar_time_for_money)*60;
    timeGravity[id]     = systime + get_pcvar_num(cvar_time_for_gravity)*60;
    timeSpeedA[id]     = systime + get_pcvar_num(cvar_time_for_speeda)*60;
    timeInvis[id]         = systime + get_pcvar_num(cvar_time_for_invis)*60;    
    
    Spawn
[id] = 2
    Gravity
[id] = 2
    SpeedA
[id] = 2
    Invis
[id] = 2
    Money
[id] = 3 
    HP
[id] = 3
    Grenade
[id] = 3
    g_bDamage
[id] = false;
    g_bUnlimitedAmmo[id] = false;
}

public HamHook_Killed_Post(pIdv, pIda)
{
    g_bDamage[pIdv] = false;
    g_bUnlimitedAmmo[pIdv] = false;
}

public HamHook_TakeDamage_Player(pIdv, iInflictor, pIda, Float:fDamage, iDamageBitsum)
{
    if(!is_user_connected(pIdv) || !is_user_connected(pIda) || pIdv == pIda) return;
    
    if
(g_bDamage[pIda])
    {
        SetHamParamFloat(4, fDamage * 2.0);
    }
}

public RoundNew()
{
                        
    for
(new id = 1;id <= 32; id++)
    {
        Spawn[id] = 2
        Gravity
[id] = 2
        SpeedA
[id] = 2
        Invis
[id] = 2
        Money
[id] = 3 
        HP
[id] = 3
        Grenade
[id] = 3
        g_bDamage
[id] = false;
        g_bUnlimitedAmmo[id] = false;
    }
}

public adminmenu(id)
{
    static systime; systime = get_systime();
    static flags; flags = get_user_flags(id);
    static m, s;
    static menu[650], Len
    Len 
= 0
    Len 
= formatex(menu[Len], charsmax(menu) - Len, "\r[\yCSDM\r] \wADMIN Меню^n^n");
    
    if
(!is_user_alive(id))
    {
        if(flags & ADMIN_MAP)
        { 
            if
(!Spawn[id])
            { 
                Len 
+= formatex(menu[Len], charsmax(menu) - Len, "\d[1] Воскреснуть^n")
                keys &= ~MENU_KEY_1
            
}
            else
            
{
                Len += formatex(menu[Len], charsmax(menu) - Len, "\r[\y1\r] \wВоскреснуть: \r(\y%d\r)^n", Spawn[id])
                keys |= MENU_KEY_1    
            
}
        }
    }
    else
    
{
        Len += formatex(menu[Len], charsmax(menu) - Len, "\d[1] Воскреснуть^n")
        keys &= ~MENU_KEY_1
    
}
    
    if
(flags & ADMIN_MAP)
    {                    
        if 
(!Gravity[id])
        {
            Len += formatex(menu[Len], charsmax(menu) - Len, "\d[2] Взять гравитацию^n")
            keys &= ~MENU_KEY_2
        
}
        else
        
{
            if (timeGravity[id] < systime)
            {
                Len += formatex(menu[Len], charsmax(menu) - Len, "\r[\y2\r] \wВзять гравитацию:  \r(\y%d\r)^n", Gravity[id])
                keys |= MENU_KEY_2
            
}
            else
            
{
                m = (timeGravity[id] - systime) / 60; s = (timeGravity[id] - systime) % 60;
                Len += formatex(menu[Len], charsmax(menu) - Len, "\d[2] Взять гравитацию: (%d) [\y%d:%s%d\d]^n", Gravity[id], m, s < 10 ? "0" : "", s)
                keys &= ~MENU_KEY_2
            
}
        }
    }
    else
    
{
        Len += formatex(menu[Len], charsmax(menu) - Len, "\d[2] Взять гравитацию^n")
        keys &= ~MENU_KEY_2
    
}
    
    if
(flags & ADMIN_MAP)
    {                    
        if 
(!SpeedA[id])
        {
            Len += formatex(menu[Len], charsmax(menu) - Len, "\d[3] Взять скорость^n")
            keys &= ~MENU_KEY_3
        
}
        else
        
{
            if (timeSpeedA[id] < systime)
            {
                Len += formatex(menu[Len], charsmax(menu) - Len, "\r[\y3\r] \wВзять скорость:  \r(\y%d\r)^n", SpeedA[id])
                keys |= MENU_KEY_3
            
}
            else
            
{
                m = (timeSpeedA[id] - systime) / 60; s = (timeSpeedA[id] - systime) % 60;
                Len += formatex(menu[Len], charsmax(menu) - Len, "\d[3] Взять скорость: (%d) [\y%d:%s%d\d]^n", SpeedA[id], m, s < 10 ? "0" : "", s)
                keys &= ~MENU_KEY_3
            
}
        }
    }
    else
    
{
        Len += formatex(menu[Len], charsmax(menu) - Len, "\d[3] Взять скорость^n")
        keys &= ~MENU_KEY_3
    
}
    
    if
(flags & ADMIN_MAP)
    {                    
        if 
(!Invis[id])
        {
            Len += formatex(menu[Len], charsmax(menu) - Len, "\d[4] Взять невидимость^n")
            keys &= ~MENU_KEY_4
        
}
        else
        
{
            if (timeInvis[id] < systime)
            {
                Len += formatex(menu[Len], charsmax(menu) - Len, "\r[\y4\r] \wВзять невидимость:  \r(\y%d\r)^n", Invis[id])
                keys |= MENU_KEY_4
            
}
            else
            
{
                m = (timeInvis[id] - systime) / 60; s = (timeInvis[id] - systime) % 60;
                Len += formatex(menu[Len], charsmax(menu) - Len, "\d[4] Взять невидимость: (%d) [\y%d:%s%d\d]^n", Invis[id], m, s < 10 ? "0" : "", s)
                keys &= ~MENU_KEY_4
            
}
        }
    }
    else
    
{
        Len += formatex(menu[Len], charsmax(menu) - Len, "\d[4] Взять невидимость^n")
        keys &= ~MENU_KEY_4
    
}
    
    if
(flags & ADMIN_MAP)
    {                    
        if 
(!Money[id])
        {
            Len += formatex(menu[Len], charsmax(menu) - Len, "\d[5] Взять (5000$)^n")
            keys &= ~MENU_KEY_5
        
}
        else
        
{
            if (timeMoney[id] < systime)
            {
                Len += formatex(menu[Len], charsmax(menu) - Len, "\r[\y5\r] \wВзять (5000$):  \r(\y%d\r)^n", Money[id])
                keys |= MENU_KEY_5
            
}
            else
            
{
                m = (timeMoney[id] - systime) / 60; s = (timeMoney[id] - systime) % 60;
                Len += formatex(menu[Len], charsmax(menu) - Len, "\d[5] Взять (5000$): (%d) [\y%d:%s%d\d]^n", Money[id], m, s < 10 ? "0" : "", s)
                keys &= ~MENU_KEY_5
            
}
        }
    }
    else
    
{
        Len += formatex(menu[Len], charsmax(menu) - Len, "\d[5] Взять (5000$)^n")
        keys &= ~MENU_KEY_5
    
}
          
    if
(flags & ADMIN_MAP)
    {
        if(!HP[id])
        {
            Len += formatex(menu[Len], charsmax(menu) - Len, "\d[6] Взять 500HP и 500AP^n", HP[id])
            keys &= ~MENU_KEY_6
        
}
        else
        
{
            Len += formatex(menu[Len], charsmax(menu) - Len, "\r[\y6\r] \wВзять \y500HP и 500AP: \r(\y%d\r)^n", HP[id])
            keys |= MENU_KEY_6    
        
}
    }
    else
    
{
        Len += formatex(menu[Len], charsmax(menu) - Len, "\d[6] Взять 250HP и 250AP^n", HP[id])
        keys &= ~MENU_KEY_6
    
}
          
     if
(flags & ADMIN_MAP)
    {
        if(!Grenade[id])
        {
            Len += formatex(menu[Len], charsmax(menu) - Len, "\d[7] Взять гранаты^n^n", Grenade[id])
            keys &= ~MENU_KEY_7
        
}
        else
        
{
            Len += formatex(menu[Len], charsmax(menu) - Len, "\r[\y7\r] \wВзять гранаты: \r(\y%d\r)^n^n", Grenade[id])
            keys |= MENU_KEY_7    
        
}
    }
    else
    
{                                                                                     
        Len 
+= formatex(menu[Len], charsmax(menu) - Len, "\d[7] Взять гранаты^n^n", Grenade[id])
        keys &= ~MENU_KEY_7
    
}    
          
    if
(g_bDamage[id])
    {
        Len += formatex(menu[Len], charsmax(menu) - Len, "\d[8] AmxModMenu \yNew\r*^n")
        keys &= ~MENU_KEY_8
    
}
    else
    
{
        Len += formatex(menu[Len], charsmax(menu) - Len, "\r[\y8\r] \wAmxModMenu \yNew\r*^n")
        keys |= MENU_KEY_8    
    
}
    
    Len 
+= formatex(menu[Len], charsmax(menu) - Len, "\r[\y0\r] \wВыход^n")
    keys |= MENU_KEY_0
    
    show_menu
(id, keys, menu, -1, "Menu 1");
    return PLUGIN_HANDLED
}

public func_menu(id, key)          
{
    static systime; systime = get_systime();
    switch(key)
    {
        case 0:
        {
            if(!is_user_alive(id))
            {
                if(!Spawn[id])
                {
                    return PLUGIN_CONTINUE
                
}
                else
                
{
                    --Spawn[id]
                    ExecuteHam(Ham_CS_RoundRespawn, id)
                }    
            
}
        }
        case 1:                                       
        
{
            --Gravity[id]
            set_user_gravity(id, 0.5)
            timeGravity[id]     = systime + get_pcvar_num(cvar_time_for_gravity)*60;
        }
        case 2:
        {
            --SpeedA[id]
            set_user_maxspeed(id, 300.0) 
            Spead
[id] = true
            timeSpeedA
[id]     = systime + get_pcvar_num(cvar_time_for_speeda)*60;
        }
        case 3:
        {
            --Invis[id]
            set_user_rendering(id,kRenderFxGlowShell,0,0,0,kRenderTransAlpha,60)
            set_task(get_pcvar_float(cvar_time_invis),"invisEnd",id);
            timeInvis[id]         = systime + get_pcvar_num(cvar_time_for_invis)*60;
        }
        case 4:
        {
            --Money[id]
            cs_set_user_money(id, cs_get_user_money(id) + 5000)
            timeMoney[id]     = systime + get_pcvar_num(cvar_time_for_money)*60;
        }
        case 5:
        {
            --HP[id]
            set_user_health(id, 250)
            set_user_armor(id, 250)
        }
        case 6:
        {
            --Grenade[id]
            give_item( id, "weapon_hegrenade")
            give_item( id, "weapon_smokegrenade")
        }
        case 7:
        {
            client_cmd(id, "amxmodmenu")
        }
    }
    if (key < 7)
        adminmenu(id)
    return PLUGIN_HANDLED
} 

public invisEnd
(id) 
{
    set_rendering(id,kRenderFxNone,255,255,255,kRenderNormal,16)
    ColorChat(id,GREEN,"[ADMIN Меню] ^1Действие невидимости закончилось, вас снова видят.") 
}

public Check_Speed(id) 
{ 
    if
(g_bSpeed[id]) 
    
{ 
        return HAM_SUPERCEDE
; 
    
} 
    return HAM_IGNORED
; 
} 

public Player_Spawn
(id) 
{ 
    if
(g_bSpeed[id]) 
    
{ 
        g_bSpeed
[id] = false; 
    
} 
}


public Event_CurWeapon(id)
{
     if(Spead[id])
     {
          set_user_maxspeed(id, 300.0) 
     
}
}




все вполне получилось, но 1 косяк, меняю в кварах время через сколько будет активен пункт, но все равно 15 минут стоит)
вот скрин что получилось
Аватара пользователя
Jeka_Pro
 
Сообщения: 38
Зарегистрирован: 20 мар 2016, 00:07
Откуда: Одесса
Благодарил (а): 3 раз.
Поблагодарили: 0 раз.
Языки программирования: Counter-Strike 1.6

Re: Не выводится сообщение в чат при нажатие на пункт

Сообщение NEoMASTERR » 10 янв 2017, 00:18

При изменении квара ничего и не должно происходить. Оно будет действовать только в следующее использование
Там же всё написано, осталось только посмотреть
Код: Выделить всё
public client_putinserver(id)
{
    static systime; systime = get_systime();
    timeMoney[id]     = systime + get_pcvar_num(cvar_time_for_money)*60;
    timeGravity[id]     = systime + get_pcvar_num(cvar_time_for_gravity)*60;
    timeSpeedA[id]     = systime + get_pcvar_num(cvar_time_for_speeda)*60;
    timeInvis[id]         = systime + get_pcvar_num(cvar_time_for_invis)*60;

при входе в переменные записывается текущее время в секундах + квар *60
Код: Выделить всё
        case 1:                                       
        
{
            --Gravity[id]
            set_user_gravity(id, 0.5)
            timeGravity[id]     = systime + get_pcvar_num(cvar_time_for_gravity)*60;
        }
        case 2:
        {
            --SpeedA[id]
            set_user_maxspeed(id, 300.0) 
            Spead
[id] = true
            timeSpeedA
[id]     = systime + get_pcvar_num(cvar_time_for_speeda)*60;
        }
        case 3:
        {
            --Invis[id]
            set_user_rendering(id,kRenderFxGlowShell,0,0,0,kRenderTransAlpha,60)
            set_task(get_pcvar_float(cvar_time_invis),"invisEnd",id);
            timeInvis[id]         = systime + get_pcvar_num(cvar_time_for_invis)*60;
        }
        case 4:
        {
            --Money[id]
            cs_set_user_money(id, cs_get_user_money(id) + 5000)
            timeMoney[id]     = systime + get_pcvar_num(cvar_time_for_money)*60;
        }

При использовании чего либо в ту же переменную записывается опять то же самое но уже с того момента как использовал а не с того как зашёл.

Добавлено спустя 8 минут 27 секунд:
Либо правильно поставь вопрос, либо измени значение квара, подожди 15 минут и используй меню повторно, там уже будет новое время, либо измени стандартные значения в plugin_init() на актуальные, либо добавь в amxx.cfg квары с актуальным временем, либо просто перезайди :boast:
Аватара пользователя
NEoMASTERR
 
Сообщения: 825
Зарегистрирован: 05 янв 2015, 16:38
Благодарил (а): 42 раз.
Поблагодарили: 186 раз.
Опыт программирования: Около года
Языки программирования: Counter-Strike 1.6

Re: Не выводится сообщение в чат при нажатие на пункт  [Решено]

Сообщение Jeka_Pro » 10 янв 2017, 00:54

Проблема решена!
NEoMASTERR огромное спасибо за проделанную работу!
удачи!
Аватара пользователя
Jeka_Pro
 
Сообщения: 38
Зарегистрирован: 20 мар 2016, 00:07
Откуда: Одесса
Благодарил (а): 3 раз.
Поблагодарили: 0 раз.
Языки программирования: Counter-Strike 1.6

Пред.

Вернуться в Скриптинг

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

Сейчас этот форум просматривают: 3BEPb и гости: 4