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

VipMenu: dhudmessage исправление и ограницение количества  [Решено]

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

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

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

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

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

VipMenu: dhudmessage исправление и ограницение количества  [Решено]

Сообщение Nosock » 06 мар 2018, 01:18

Привет народ, я никак не могу понять. Почему у меня не работает сообщение об активации меню в dhud и даже в hud не работает
Код: Выделить всё
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <fun>
#include <cstrike>
#include <engine>
#include <hamsandwich>
#include <fakemeta_util>
#include <dhudmessage>


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

// **************************** Настройки ****************************
#define ACCESS_LEVEL_1  ADMIN_LEVEL_C          // Флаг для VIP меню        [o]
#define ACCESS_LEVEL_2  ADMIN_LEVEL_G          // Флаг для Super VIP [s]

#define VIP_TIME_AK47   220                    // Через сколько можно взять AK-47
#define VIP_TIME_M4A1   220                    // Через сколько можно взять M4A1
#define VIP_TIME_AWP    220                    // Через сколько можно взять AWP & Deagle
#define VIP_TIME_MONEY  340                    // Через сколько можно взять 16000$
#define VIP_TIME_HEALTH 220                    // Через сколько можно взять 255 HP & 255 AP
#define VIP_TIME_SPEED  220                    // Через сколько можно взять Скорость

#define VIP_TIME_MENY  40                      // Через сколько секунд можно будет меню
// **************************** Настройки ****************************
#define COUNT_TIMER 1488 // не трогать
#define TASKID 100       // не трогать

public plugin_init()
{
    
register_plugin("VIP Menu""1.1""6u6uKa18RUS");
    
    
register_clcmd("vipmenu""MenuVIP");
    
register_menucmd(register_menuid("Menu VIP"), MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_6|MENU_KEY_7|MENU_KEY_8"VIPMENU");

    
RegisterHam(Ham_Player_Jump"player""CBasePlayer_Jump"false);
    
register_event("CurWeapon""WeaponChange""be""1=1");
    
RegisterHam(Ham_Spawn"player""CBasePlayer_Spawn"0); 
    
set_task(1.0"Timer"COUNT_TIMER__"b")
}

new 
g_ak47[33], g_m4a1[33], g_awp[33], g_money[33], g_health[33], g_speed[33],
g_UserSpeed[33], g_doublejump[33], g_iJumpNum[33], g_bunny[33], g_block[33];

new const 
PRIMARY_WEAPONS_BITSUM = (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90);
new const 
SECONDARY_WEAPONS_BITSUM = (1<<CSW_P228)|(1<<CSW_ELITE)|(1<<CSW_FIVESEVEN)|(1<<CSW_USP)|(1<<CSW_GLOCK18)|(1<<CSW_DEAGLE);

public 
Timer()
{
    for(new 
i32;i++)
    {
        if(
g_ak47[i] > 0g_ak47[i]--
        if(
g_m4a1[i] > 0g_m4a1[i]--
        if(
g_awp[i] > 0g_awp[i]--
        if(
g_money[i] > 0g_money[i]--
        if(
g_health[i] > 0g_health[i]--
        if(
g_speed[i] > 0g_speed[i]--
        if(
g_block[i] > 0g_block[i]--
    }
}


public 
MenuVIP(id)
{
    if(~
get_user_flags(id) & ACCESS_LEVEL_1)
    {
        
client_print_color(idprint_team_default"^1[^4INFO^1] Только ^3VIP ^4может пользоваться этой командой !");
        return 
PLUGIN_HANDLED;
    }
    if(
g_block[id] > 0)
    {
        
client_print_color(idprint_team_default"^1[^4INFO^1] Подождите^4 40 ^1сек после входа. ^3");
        return 
PLUGIN_HANDLED;
    }
    if(!
is_user_alive(id))
    {
        
client_print_color(idprint_team_default"^1[^4INFO^1] Данное меню ^4Недоступно ^3для мертвых !");
        return 
PLUGIN_HANDLED;
    }
    
    new 
szMenu[1024], iLen formatex(szMenucharsmax(szMenu), "\yVIP Меню^n^n"), iKey MENU_KEY_8;

    if(
g_ak47[id] == 0)
    {
        
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen"\r1. \wВзять Gold AK-47 \y[\r%d Секунд\y]^n"VIP_TIME_AK47)
        
iKey |= MENU_KEY_1;
    }
    else
    {
        
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen"\r1. \dВзять Gold AK-47 \y[\rЖдите %d Секунд\y]^n"g_ak47[id])
        
iKey &= ~MENU_KEY_1;
    }
    
    if(
g_m4a1[id] == 0)
    {
        
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen"\r2. \wВзять Gold M4A1 \y[\r%d Секунд\y]^n"VIP_TIME_M4A1)
        
iKey |= MENU_KEY_2;
    }
    else
    {
        
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen"\r2. \dВзять Gold M4A1 \y[\rЖдите %d Секунд\y]^n"g_m4a1[id])
        
iKey &= ~MENU_KEY_2;
    }
    
    if(
g_awp[id] == 0)
    {
        
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen"\r3. \wВзять Gold AWP & Deagle \y[\r%d Секунд\y]^n"VIP_TIME_AWP)
        
iKey |= MENU_KEY_3;
    }
    else
    {
        
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen"\r3. \dВзять Gold AWP & Deagle \y[\rЖдите %d Секунд\y]^n"g_awp[id])
        
iKey &= ~MENU_KEY_3;
    }
    
    if(
g_money[id] == 0)
    {
        
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen"\r4. \wВзять 16000$ \y[\r%d Секунд\y]^n"VIP_TIME_MONEY)
        
iKey |= MENU_KEY_4;
    }
    else
    {
        
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen"\r4. \dВзять 16000$ \y[\rЖдите %d Секунд\y]^n"g_money[id])
        
iKey &= ~MENU_KEY_4;
    }
    
    if(
g_health[id] == 0)
    {
        
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen"\r5. \wВзять 255HP и 255AP \y[\r%d Секунд\y]^n"VIP_TIME_HEALTH)
        
iKey |= MENU_KEY_5;
    }
    else
    {
        
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen"\r5. \dВзять 255HP и 255AP \y[\rЖдите %d Секунд\y]^n"g_health[id])
        
iKey &= ~MENU_KEY_5;
    }
    
    if(
g_speed[id] == 0)
    {
        
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen"\r6. \wВзять Скорость \y[\r%d Секунд\y]^n"VIP_TIME_SPEED)
        
iKey |= MENU_KEY_6;
    }
    else
    {
        
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen"\r6. \dВзять Скорость \y[\rЖдите %d Секунд\y]^n"g_speed[id])
        
iKey &= ~MENU_KEY_6;
    }
    
    if(
get_user_flags(id) & ACCESS_LEVEL_2)
    {
        if(
g_doublejump[id])
        {
            
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen"\r7. \wDouble-Jump \r[\yВкл\r]^n")
            
iKey |= MENU_KEY_7;
        }
        else
        {
            
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen"\r7. \wDouble-Jump \r[\yВыкл\r]^n")
            
iKey |= MENU_KEY_7;
        }
    }
    else
    {
        
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen"\r7. \dDouble-Jump \r[\yНет прав!\r]^n")
        
iKey &= ~MENU_KEY_7    
    
}
    
    if(
g_bunny[id])
    {
        
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen"\r8. \wBunnyHop \r[\yВкл\r]^n^n")
        
iKey |= MENU_KEY_8
    
}
    else
    {
        
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen"\r8. \wBunnyHop \r[\yВыкл\r]^n^n")
        
iKey |= MENU_KEY_8
    
}
    
    
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen"\r0. \wВыход^n")
    
iKey |= MENU_KEY_0;

    return 
show_menu(idiKeyszMenu, -1"Menu VIP");
}

public 
VIPMENU(idiKey)
{
    switch(
iKey)
    {
        case 
0
        {
            
g_ak47[id] = VIP_TIME_AK47;
            
client_cmd(id"say /goldakvip" )
            
client_print_color(idprint_team_default"^1[^4INFO^1] Вы ^3взяли^4 Gold AK-47!");
        }
        case 
1
        {
            
g_m4a1[id] = VIP_TIME_M4A1;
            
client_cmd(id"say /goldm4vip" )
            
client_print_color(idprint_team_default"^1[^4INFO^1] Вы ^3взяли^4 Gold M4A1!");
        }
        case 
2
        {
            
g_awp[id] = VIP_TIME_AWP;
            
client_cmd(id"say /goldawpvip" )
            
client_cmd(id"say /golddgvip" )
            
client_print_color(idprint_team_default"^1[^4INFO^1] Вы ^3взяли^4 Gold AWP и Deagle!");
        }
        case 
3
        {
            
g_money[id] = VIP_TIME_MONEY;
            
cs_set_user_money(idcs_get_user_money(id) + 16000);
            
client_print_color(idprint_team_default"^1[^4INFO^1] Вы ^3взяли^4 16000$!");
        }
        case 
4
        {
            
g_health[id] = VIP_TIME_HEALTH;
            
set_user_health(idget_user_health(id) +255);
            
set_user_armor(idget_user_armor(id) + 255);
            
client_print_color(idprint_team_default"^1[^4INFO^1] Вы ^3взяли^4 255HP и 255AP!");
        }
        case 
5
        {
            
g_speed[id] = VIP_TIME_SPEED;
            
g_UserSpeed[id] = true;
            
set_user_maxspeed(id365.0);
            
client_print_color(idprint_team_default"^1[^4INFO^1] Вы ^3взяли^4 Скорость!");
        }
        case 
6
        {
            if(!
g_doublejump[id])
            {
                
g_doublejump[id] = true;
                
client_print_color(idprint_team_default"^1[^4INFO^1] Вы ^3включили ^4DoubleJump!");
            }
            else
            {
                
g_doublejump[id] = false;
                
client_print_color(idprint_team_default"^1[^4INFO^1] Вы ^3выключили ^4DoubleJump!");
            }
        }
        case 
7
        {
            if(!
g_bunny[id])
            {
                
g_bunny[id] = true;
                
client_print_color(idprint_team_default"^1[^4INFO^1] Вы ^3включили ^4BunnyHop!");
            }
            else
            {
                
g_bunny[id] = false;
                
client_print_color(idprint_team_default"^1[^4INFO^1] Вы ^3выключили ^4BunnyHop!");
            }
        }
    }
    
MenuVIP(id);
    return 
PLUGIN_HANDLED;
}

public 
CBasePlayer_Jump(id)
{
    if(
g_bunny[id] && pev(idpev_flags) & (FL_ONGROUND|FL_CONVEYOR))
    {
        new 
Float:vecVelocity[3];
        
pev(idpev_velocityvecVelocity);
        
vecVelocity[2] = 250.0;
        
set_pev(idpev_velocityvecVelocity);
        
set_pev(idpev_gaitsequence6);
    }
    
    new 
obut get_user_oldbutton(id); // get_players(id, m_afButtonLast)
    
new nbut get_user_button(id)
    new 
iFlags pev(idpev_flags);
    
    if(
g_doublejump[id] && (nbut IN_JUMP) && !(obut IN_JUMP) && ~iFlags & (FL_ONGROUND|FL_CONVEYOR|FL_INWATER))
    {
    if(
g_iJumpNum[id] < 1)
    {
        
g_iJumpNum[id]++
        new 
Float:vecVelocity[3];
        
pev(idpev_velocityvecVelocity);
        
vecVelocity[2] = 265.0;
        
set_pev(idpev_velocityvecVelocity);
        
set_pev(idpev_gaitsequence6);
    }
    }
    if((
nbut IN_JUMP) && (get_entity_flags(id) & FL_ONGROUND))
    {
        
g_iJumpNum[id] = 0;
    }
}

public 
WeaponChange(id)
{
    if(
g_UserSpeed[id])
        
set_user_maxspeed(id320.0)
}

public 
client_putinserver(id)
{
    
g_doublejump[id] = false;
    
g_bunny[id] = false;
    
    
g_ak47[id] = VIP_TIME_AK47;
    
g_m4a1[id] = VIP_TIME_M4A1;
    
g_awp[id] = VIP_TIME_AWP;
    
g_money[id] = VIP_TIME_MONEY;
    
g_health[id] = VIP_TIME_HEALTH;
    
g_speed[id] = VIP_TIME_SPEED;
    
    
g_block[id] = VIP_TIME_MENY;
    if(
get_user_flags(id) & ACCESS_LEVEL_1)
    {
        
set_task(45.0"Blocked"id+TASKID, .flags "a");
    }
}

public 
client_disconnect(id)
{
    
remove_task(id TASKID// удаление задачи для конкретного игрока
}

public 
CBasePlayer_Spawn(id)
{
    
g_UserSpeed[id] = false;
    


public 
ResetHUD(id)
{
    
set_task(0.5"VIP"id 6910)
}

public 
Blocked(taskid)
{
    new 
id taskid TASKID;
    if(!
is_user_connected(id) || (~get_user_flags(id) & ACCESS_LEVEL_1)) return;
    
    
set_dhudmessage(random_num(0255), random_num(0255), random_num(0255), -1.00.5013.04.00.15.0);
    
show_dhudmessage(id"Випменю - Активированно!")
}
stock give_item_ex(id,currWeaponName[],ammoAmount,dropFlag=0)
{
    static    
weaponsList[32], weaponName[32], weaponsNumcurrWeaponID;        
    
currWeaponID get_weaponid(currWeaponName);
    if(
dropFlag)
    {    
        
weaponsNum 0;
        
get_user_weapons(id,weaponsList,weaponsNum);
        for (new 
i;weaponsNum;i++)
        {
            if(((
<< currWeaponID) & PRIMARY_WEAPONS_BITSUM && (<< weaponsList[i]) & PRIMARY_WEAPONS_BITSUM) | ((<< currWeaponID) & SECONDARY_WEAPONS_BITSUM && (<< weaponsList[i]) & SECONDARY_WEAPONS_BITSUM))
            {
                
get_weaponname(weaponsList[i],weaponName,charsmax(weaponName));
                
engclient_cmd(id,"drop",weaponName);
            }
        }
    }
    
fm_give_item(id,currWeaponName);
    
cs_set_user_bpammo(id,currWeaponID,ammoAmount);
    return 
1;
}
 

и может кто подскажет как сделать ограничение количества раз за spawn взятия пунктов (желательно код, если не код то хотя-бы ссылку на обучалку)
Аватара пользователя
Nosock
 
Сообщения: 16
Зарегистрирован: 31 янв 2018, 17:24
Благодарил (а): 2 раз.
Поблагодарили: 0 раз.
Языки программирования: Pawn
SourcePawn
C++
Php
Ruby
Python
C#

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

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

Сейчас этот форум просматривают: Bing [Bot], Yandex [Bot] и гости: 11