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

zp 4.3 Запрет использовать антидот, если кт один  [Решено]

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

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

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

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

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

zp 4.3 Запрет использовать антидот, если кт один

Сообщение Максим_SerJanT » 17 ноя 2019, 15:04

Стоит прем менюшка, а в ней антидот, всё хорошо, но её можно использовать когда остался последний человек, а нужно как то запретить. Игрался с плагином, что только не делал, ничего не получается. Помогите пж)
Код: Выделить всё
#include <amxmodx>
#include <cstrike>
#include <fun>
#include <fakemeta_util>
#include <zombieplague>

#define VIP_FLAG ADMIN_LEVEL_H

#define ARMOR 50 //Количество брони
#define HP 50 //Количество здоровья

#define PREFIX "!y[!gZP!y]" //Префикс

new g_szNamesArmor[1090], g_szNamesHp[1090], g_szNamesHuman[1090]

public plugin_init() 
{
    register_plugin("VIP menu", "1.0", "Dorus")
    
    register_clcmd
("prem_menu", "vipmenu")
}

public vipmenu(id) 
{
    if(~get_user_flags(id) & VIP_FLAG)
    {
        ChatColor(id, "%s Доступно !gпремиум !yигрокам!", PREFIX)
        return
    
}
    
    if
(!is_user_alive(id))
    {
        ChatColor(id, "%s Доступно живым игрокам!", PREFIX)
        return
    
}
    
    new iMenu 
= menu_create("\yПремиум меню", "menu_vip_handler")
    new szBuffer[100], szName[33]
    get_user_name(id, szName, charsmax(szName))
    
    if
(containi(g_szNamesArmor, szName) == -1)
        format(szBuffer, charsmax(szBuffer), "Взять 50 брони")
    else
    format
(szBuffer, charsmax(szBuffer), "\dВзять 50 брони")
    menu_additem(iMenu, szBuffer, "1")
    
    if
(containi(g_szNamesHp, szName) == -1)
        format(szBuffer, charsmax(szBuffer), "Взять 50 здоровья")
    else
    format
(szBuffer, charsmax(szBuffer), "\dВзять 50 здоровья")
    menu_additem(iMenu, szBuffer, "2")
    
    if
(containi(g_szNamesHuman, szName) == -1)
        format(szBuffer, charsmax(szBuffer), "Взять антидот")
    else
    format
(szBuffer, charsmax(szBuffer), "\dВзять антидот")
    menu_additem(iMenu, szBuffer, "3")
    
    menu_setprop
(iMenu, MPROP_EXITNAME, "Выход")
    menu_display(id, iMenu, 0)
}


public menu_vip_handler(id, menu, item) 
{
    if(item == MENU_EXIT) 
    
{
        menu_destroy(menu)
        return
    
}
    
    new data
[6], iName[64], access, callback
    menu_item_getinfo
(menu, item, access, data, 5, iName, 63, callback)
    
    if
(!is_user_alive(id))
    {
        ChatColor(id, "%s Доступно только живым!", PREFIX)
        return
    
}
    
    new key 
= str_to_num(data)
    
    new szName
[33]
    get_user_name(id, szName, charsmax(szName))
    
    switch
(key) 
    
{
        case 1:
        {
            if(!zp_get_user_zombie(id))
            {
                if(containi(g_szNamesArmor, szName) == -1)
                {
                    set_pev(id, pev_armorvalue, pev(id, pev_armorvalue) + float(ARMOR))
                    ChatColor(id, "%s Вы взяли !g%d брони", PREFIX, ARMOR)
                    add(g_szNamesArmor, charsmax(g_szNamesArmor), szName, charsmax(szName))
                }
                else
                ChatColor
(id, "%s Можно брать !g1 раз !yза карту", PREFIX)
            }
            else
            ChatColor
(id, "%s Вы должны быть !gчеловеком", PREFIX)
        }
        
        case 2
:
        {
            if(!zp_get_user_zombie(id))
            {
                if(containi(g_szNamesHp, szName) == -1)
                {
                    set_pev(id, pev_health, pev(id, pev_health) + float(HP))
                    ChatColor(id, "%s Вы взяли !g%d здоровья", PREFIX, HP)
                    add(g_szNamesHp, charsmax(g_szNamesHp), szName, charsmax(szName))
                }
                else
                ChatColor
(id, "%s Можно брать !g1 раз !yза карту", PREFIX)
            }
            else
            ChatColor
(id, "%s Вы должны быть !gчеловеком", PREFIX)
        }
        
        case 3
:
        {
            if(zp_get_user_zombie(id))
            {
                if(!zp_is_nemesis_round() && !zp_is_survivor_round() && !zp_is_swarm_round() && !zp_is_plague_round())
                {
                    if(containi(g_szNamesHuman, szName) == -1)
                    {
                        zp_disinfect_user(id, 0)
                        ChatColor(id, "%s Вы использовали !gАнтидот", PREFIX)
                        add(g_szNamesHuman, charsmax(g_szNamesHuman), szName, charsmax(szName))
                    }
                    else
                    ChatColor
(id, "%s Можно брать !g1 раз !yза карту", PREFIX)
                }
                else
                ChatColor
(id, "%s В этом раунде недоступно!", PREFIX)
            }
            else
            ChatColor
(id, "%s Доступно только для !gзомби", PREFIX)
        }
    }
}

stock ChatColor(const id, const input[], any:...)
{
    new count = 1, players[32];
    static msg[191];
    vformat(msg, 190, input, 3);
    
    replace_all
(msg, 190, "!g", "^4");
    replace_all(msg, 190, "!y", "^1");
    replace_all(msg, 190, "!t", "^3");
    
    if 
(id) players[0] = id; else get_players(players, count, "ch");
    {
        for (new i = 0; i < count; i++)
        {
            if (is_user_connected(players[i]))
            {
                message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]);
                write_byte(players[i]);
                write_string(msg);
                message_end();
            }
        }
    }
Аватара пользователя
Максим_SerJanT
 
Сообщения: 23
Зарегистрирован: 16 авг 2017, 01:32
Благодарил (а): 2 раз.
Поблагодарили: 1 раз.
Языки программирования: Pawn
SourcePawn
C++
Php
Ruby
Python
C#

Re: zp 4.3 Запрет использовать антидот, если кт один

Сообщение RSO_ » 17 ноя 2019, 22:28

я как всегда не понял чонадо если совсем вырезать то вроде так
но это не точно

Код: Выделить всё
#include <amxmodx>
#include <cstrike>
#include <fun>
#include <fakemeta_util>
#include <zombieplague>

#define VIP_FLAG ADMIN_LEVEL_H

#define ARMOR 50 //Количество брони
#define HP 50 //Количество здоровья

#define PREFIX "!y[!gZP!y]" //Префикс

new g_szNamesArmor[1090], g_szNamesHp[1090]      //, g_szNamesHuman[1090]

public plugin_init() 
{
    register_plugin("VIP menu", "1.0", "Dorus")
    
    register_clcmd
("prem_menu", "vipmenu")
}

public vipmenu(id) 
{
    if(~get_user_flags(id) & VIP_FLAG)
    {
        ChatColor(id, "%s Доступно !gпремиум !yигрокам!", PREFIX)
        return
    
}
    
    if
(!is_user_alive(id))
    {
        ChatColor(id, "%s Доступно живым игрокам!", PREFIX)
        return
    
}
    
    new iMenu 
= menu_create("\yПремиум меню", "menu_vip_handler")
    new szBuffer[100], szName[33]
    get_user_name(id, szName, charsmax(szName))
    
    if
(containi(g_szNamesArmor, szName) == -1)
        format(szBuffer, charsmax(szBuffer), "Взять 50 брони")
    else
    format
(szBuffer, charsmax(szBuffer), "\dВзять 50 брони")
    menu_additem(iMenu, szBuffer, "1")
    
    if
(containi(g_szNamesHp, szName) == -1)
        format(szBuffer, charsmax(szBuffer), "Взять 50 здоровья")
    else
    format
(szBuffer, charsmax(szBuffer), "\dВзять 50 здоровья")
    menu_additem(iMenu, szBuffer, "2")
    
    
//if(containi(g_szNamesHuman, szName) == -1)
        //format(szBuffer, charsmax(szBuffer), "Взять антидот")
    //else
    //format(szBuffer, charsmax(szBuffer), "\dВзять антидот")
   // menu_additem(iMenu, szBuffer, "3")
    
    menu_setprop
(iMenu, MPROP_EXITNAME, "Выход")
    menu_display(id, iMenu, 0)
}


public menu_vip_handler(id, menu, item) 
{
    if(item == MENU_EXIT) 
    
{
        menu_destroy(menu)
        return
    
}
    
    new data
[6], iName[64], access, callback
    menu_item_getinfo
(menu, item, access, data, 5, iName, 63, callback)
    
    if
(!is_user_alive(id))
    {
        ChatColor(id, "%s Доступно только живым!", PREFIX)
        return
    
}
    
    new key 
= str_to_num(data)
    
    new szName
[33]
    get_user_name(id, szName, charsmax(szName))
    
    switch
(key) 
    
{
        case 1:
        {
            if(!zp_get_user_zombie(id))
            {
                if(containi(g_szNamesArmor, szName) == -1)
                {
                    set_pev(id, pev_armorvalue, pev(id, pev_armorvalue) + float(ARMOR))
                    ChatColor(id, "%s Вы взяли !g%d брони", PREFIX, ARMOR)
                    add(g_szNamesArmor, charsmax(g_szNamesArmor), szName, charsmax(szName))
                }
                else
                ChatColor
(id, "%s Можно брать !g1 раз !yза карту", PREFIX)
            }
            else
            ChatColor
(id, "%s Вы должны быть !gчеловеком", PREFIX)
        }
        
        case 2
:
        {
            if(!zp_get_user_zombie(id))
            {
                if(containi(g_szNamesHp, szName) == -1)
                {
                    set_pev(id, pev_health, pev(id, pev_health) + float(HP))
                    ChatColor(id, "%s Вы взяли !g%d здоровья", PREFIX, HP)
                    add(g_szNamesHp, charsmax(g_szNamesHp), szName, charsmax(szName))
                }
                else
                ChatColor
(id, "%s Можно брать !g1 раз !yза карту", PREFIX)
            }
            else
            ChatColor
(id, "%s Вы должны быть !gчеловеком", PREFIX)
        }
        
        
//case 3:
        //{
           // if(zp_get_user_zombie(id))
           // {
               // if(!zp_is_nemesis_round() && !zp_is_survivor_round() && !zp_is_swarm_round() && !zp_is_plague_round())
               // {
                   // if(containi(g_szNamesHuman, szName) == -1)
                   // {
                     //   zp_disinfect_user(id, 0)
                     //   ChatColor(id, "%s Вы использовали !gАнтидот", PREFIX)
                      //  add(g_szNamesHuman, charsmax(g_szNamesHuman), szName, charsmax(szName))
                    //}
                    //else
                   // ChatColor(id, "%s Можно брать !g1 раз !yза карту", PREFIX)
              //  }
              //  else
               // ChatColor(id, "%s В этом раунде недоступно!", PREFIX)
            //}
           // else
           // ChatColor(id, "%s Доступно только для !gзомби", PREFIX)
       // }
    }
}

stock ChatColor(const id, const input[], any:...)
{
    new count = 1, players[32];
    static msg[191];
    vformat(msg, 190, input, 3);
    
    replace_all
(msg, 190, "!g", "^4");
    replace_all(msg, 190, "!y", "^1");
    replace_all(msg, 190, "!t", "^3");
    
    if 
(id) players[0] = id; else get_players(players, count, "ch");
    {
        for (new i = 0; i < count; i++)
        {
            if (is_user_connected(players[i]))
            {
                message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]);
                write_byte(players[i]);
                write_string(msg);
                message_end();
            }
        }
    }
}
слава великой сонтаранской империи !
Аватара пользователя
RSO_
 
Сообщения: 46
Зарегистрирован: 20 окт 2019, 21:40
Откуда: от верблюда
Благодарил (а): 13 раз.
Поблагодарили: 1 раз.
Опыт программирования: Меньше недели
Языки программирования: Unkown, 100 ISQ

Re: zp 4.3 Запрет использовать антидот, если кт один

Сообщение Максим_SerJanT » 17 ноя 2019, 22:38

Ты полностью антидот вырезал, а надо запретить, когда остаётся последний кт
Аватара пользователя
Максим_SerJanT
 
Сообщения: 23
Зарегистрирован: 16 авг 2017, 01:32
Благодарил (а): 2 раз.
Поблагодарили: 1 раз.
Языки программирования: Pawn
SourcePawn
C++
Php
Ruby
Python
C#

Re: zp 4.3 Запрет использовать антидот, если кт один  [Решено]

Сообщение RSO_ » 17 ноя 2019, 23:27

Код: Выделить всё
#include <amxmodx>
#include <cstrike>
#include <fun>
#include <fakemeta_util>
#include <zombieplague>

#define VIP_FLAG ADMIN_LEVEL_H

#define ARMOR 50 //Количество брони
#define HP 50 //Количество здоровья

#define PREFIX "!y[!gZP!y]" //Префикс

 new cs_get_ct = 0
 new cs_get_tt 
= 0


new g_szNamesArmor
[1090], g_szNamesHp[1090], g_szNamesHuman[1090]

public plugin_init() 
{
    register_plugin("VIP menu", "1.0", "Dorus")
    
    register_clcmd
("prem_menu", "vipmenu")
}

public vipmenu(id) 
{
    if(~get_user_flags(id) & VIP_FLAG)
    {
        ChatColor(id, "%s Доступно !gпремиум !yигрокам!", PREFIX)
        return
    
}
    
    if
(!is_user_alive(id))
    {
        ChatColor(id, "%s Доступно живым игрокам!", PREFIX)
        return
    
}
    
    new iMenu 
= menu_create("\yПремиум меню", "menu_vip_handler")
    new szBuffer[100], szName[33]
    get_user_name(id, szName, charsmax(szName))
    
    if
(containi(g_szNamesArmor, szName) == -1)
        format(szBuffer, charsmax(szBuffer), "Взять 50 брони")
    else
    format
(szBuffer, charsmax(szBuffer), "\dВзять 50 брони")
    menu_additem(iMenu, szBuffer, "1")
    
    if
(containi(g_szNamesHp, szName) == -1)
        format(szBuffer, charsmax(szBuffer), "Взять 50 здоровья")
    else
    format
(szBuffer, charsmax(szBuffer), "\dВзять 50 здоровья")
    menu_additem(iMenu, szBuffer, "2")
    
    if
(containi(g_szNamesHuman, szName) == -1)
        format(szBuffer, charsmax(szBuffer), "Взять антидот")
    else
    format
(szBuffer, charsmax(szBuffer), "\dВзять антидот")
    menu_additem(iMenu, szBuffer, "3")
    
    menu_setprop
(iMenu, MPROP_EXITNAME, "Выход")
    menu_display(id, iMenu, 0)
}


public menu_vip_handler(id, menu, item) 
{
    if(item == MENU_EXIT) 
    
{
        menu_destroy(menu)
        return
    
}
    
    new data
[6], iName[64], access, callback
    menu_item_getinfo
(menu, item, access, data, 5, iName, 63, callback)
    
    if
(!is_user_alive(id))
    {
        ChatColor(id, "%s Доступно только живым!", PREFIX)
        return
    
}
    
    new key 
= str_to_num(data)
    
    new szName
[33]
    get_user_name(id, szName, charsmax(szName))
    
    koli4estva_jblvblx
() //-----------------
    
    switch
(key) 
    
{
        case 1:
        {
            if(!zp_get_user_zombie(id))
            {
                if(containi(g_szNamesArmor, szName) == -1)
                {
                    set_pev(id, pev_armorvalue, pev(id, pev_armorvalue) + float(ARMOR))
                    ChatColor(id, "%s Вы взяли !g%d брони", PREFIX, ARMOR)
                    add(g_szNamesArmor, charsmax(g_szNamesArmor), szName, charsmax(szName))
                }
                else
                ChatColor
(id, "%s Можно брать !g1 раз !yза карту", PREFIX)
            }
            else
            ChatColor
(id, "%s Вы должны быть !gчеловеком", PREFIX)
        }
        
        case 2
:
        {
            if(!zp_get_user_zombie(id))
            {
                if(containi(g_szNamesHp, szName) == -1)
                {
                    set_pev(id, pev_health, pev(id, pev_health) + float(HP))
                    ChatColor(id, "%s Вы взяли !g%d здоровья", PREFIX, HP)
                    add(g_szNamesHp, charsmax(g_szNamesHp), szName, charsmax(szName))
                }
                else
                ChatColor
(id, "%s Можно брать !g1 раз !yза карту", PREFIX)
            }
            else
            ChatColor
(id, "%s Вы должны быть !gчеловеком", PREFIX)
        }
        
        case 3
:
        {
            if(zp_get_user_zombie(id) && cs_get_ct > 1) //-------------
            {
                if(!zp_is_nemesis_round() && !zp_is_survivor_round() && !zp_is_swarm_round() && !zp_is_plague_round())
                {
                    if(containi(g_szNamesHuman, szName) == -1)
                    {
                        zp_disinfect_user(id, 0)
                        ChatColor(id, "%s Вы использовали !gАнтидот", PREFIX)
                        add(g_szNamesHuman, charsmax(g_szNamesHuman), szName, charsmax(szName))
                    }
                    else
                    ChatColor
(id, "%s Можно брать !g1 раз !yза карту", PREFIX)
                }
                else
                ChatColor
(id, "%s В этом раунде недоступно!", PREFIX)
            }
            else
            ChatColor
(id, "%s Доступно только для !gзомби", PREFIX)
        }
    }
}



stock ChatColor(const id, const input[], any:...)
{
    new count = 1, players[32];
    static msg[191];
    vformat(msg, 190, input, 3);
    
    replace_all
(msg, 190, "!g", "^4");
    replace_all(msg, 190, "!y", "^1");
    replace_all(msg, 190, "!t", "^3");
    
    if 
(id) players[0] = id; else get_players(players, count, "ch");
    {
        for (new i = 0; i < count; i++)
        {
            if (is_user_connected(players[i]))
            {
                message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]);
                write_byte(players[i]);
                write_string(msg);
                message_end();
            }
        }
    }
}
 

public koli4estva_jblvblx
()
{
    
   new MaxPlayers 
= get_maxplayers()    
    cs_get_ct 
= 0
    cs_get_tt 
= 0
    
//ALL_CT_TT = 0
    
    for 
(new i=1; i <= MaxPlayers; i++) 
    
{
        if(is_user_alive(i) && !is_user_hltv(i)) 
        
{ 
            if
(cs_get_user_team(i)  ==  CS_TEAM_CT)
       {
           cs_get_ct++
                    
       
}   
       else if
(cs_get_user_team(i)  ==  CS_TEAM_T)
       {
           cs_get_tt++
                    
       
}  
            
//ALL_CT_TT = cs_get_ct + cs_get_tt
        }
    }


не тэстил не знаю как на зомби моде пашет
слава великой сонтаранской империи !
Аватара пользователя
RSO_
 
Сообщения: 46
Зарегистрирован: 20 окт 2019, 21:40
Откуда: от верблюда
Благодарил (а): 13 раз.
Поблагодарили: 1 раз.
Опыт программирования: Меньше недели
Языки программирования: Unkown, 100 ISQ


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

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

Сейчас этот форум просматривают: MSN [Bot] и гости: 1