[ZP] Как сделать поднятие предмета по флагу?
Как сделать поднятие предмета по флагу?

Всем привет, частенько вижу, что ребята спрашивают - как можно запретить поднимать предмет или какое либо оружие без определенного флага. Или же как запретить человеку поднимать оружие если у него нет привилегии.Расскажу вам про самый как по мне простой способ блокировки

1. Для начало впишем все необходимые нам инклуды:
#include amxmodx
#include hamsandwich
#include zombieplague
#include fakemeta_util

2. Создадим макросы с w_ моделью нашего предмета и флага доступа:
#define FLAGACCESS               ADMIN_BAN                     // Флаг, с которым игрок сможет поднять предмет.
#define WEAPONMODEL_W        "models/anime/hentai.mdl"    // W_ модель предмета, на который ставим ограничение. Это может быть что угодно (Пушка, сундук, ящик, подарок и так далее)

3.Далее нам нужно зарегистрировать момент поднятия предмета с земли:
Дописываем в public plugin_init:
register_plugin("HentaiOneLoveForever", "1.0", "Mireille (Universe)");
RegisterHam(Ham_Touch, "weaponbox", "Ham_PlayerTouch");

4.Теперь перейдем к самой функции:
public Ham_PlayerTouch(iItem, iPlayer)
{
     if(!pev_valid(iItem) || !is_user_alive(iPlayer) || zp_get_user_zombie(iPlayer))
          return HAM_IGNORED;

     new szModelName[32];
     pev(iItem, pev_model, szModelName, charsmax(szModelName));

     if(equal(szModelName, WEAPONMODEL_W))
     {
          if(!(get_user_flags(iPlayer) & FLAGACCESS))
          {
               static Float:flLastTouch[33]; 
               new Float:flGameTime = get_gametime(); 

               if(flLastTouch[iPlayer] < flGameTime) 
               { 
                      flLastTouch[iPlayer] = flGameTime + 3.0; 
                      client_print(iPlayer, print_chat, "Чтобы взять данный предмет, нужны определенные права!");

                      return HAM_SUPERCEDE;
               }
          }
     }

     return HAM_IGNORED;
}


Все готово. Если что не получилось, вот готовый пример, сделанный мной:

You do not have access to download files from our Website.

Hello, Our administration publishes only cannon content, put like under the post below and write the top comment, we are preparing the material just for you, Darling Гость.

Donate You can make the author Universe, a gift in the form of a donation to his Paypal ;)


Comments 13
  1. Mort3m
    Mort3m
    • 0
    я конечно в павне 0, но сообщение в чате по идее будет флудить
    т.к событие срабатывает не 1 раз уж точно
    более того, есть и другие способы блокировки ( отдельный pev_, или по виапонкею ) 
    • 28 March 2019 18:58
  2. Universe
    Цитата: Mort3m
    я конечно в павне 0, но сообщение в чате по идее будет флудить
    т.к событие срабатывает не 1 раз уж точно
    более того, есть и другие способы блокировки ( отдельный pev_, или по виапонкею ) 

    Внатуре, не подумал о флуде, сейчас уберу его. А насчет других способов, показал самым простым
    • 28 March 2019 18:59
  3. Mark
    Mark
    • 0
    Можно поставить блокировку сообщения, чтобы показывалось 1 раз в 5 сек, дабы избежать флуд.
    Метод хорош и прост.
    • 28 March 2019 19:11
  4. 1337
    1337
    • -1
    Можно еще такой вариант использовать, флуда в чате не будет и ошибок никаких не вызывает.

    #define ACCESS_TOUCH ADMIN_ADMIN
    #define W_MODEL "models/w_.mdl"

    new Float:fLastTouch[33];

    public plugin_init( ) {
    ...
    register_touch("weaponbox", "player", "fw_Touch");
    }

    public fw_Touch(ent, id)
    {
    if (!pev_valid(ent) || !is_user_alive(id) || zp_get_user_zombie(id))
    return PLUGIN_CONTINUE;

    new model[32];
    pev(ent, pev_model, model, charsmax(model));

    if(equal(model, W_MODEL))
    {
    if(get_user_flags(id) & ACCESS_TOUCH)
    {
    new Float:fTime = get_gametime();

    if (fLastTouch[id] < fTime)
    {
    fLastTouch[id] = fTime + 1.5;
    ChatColor(id, "Низя")
    }

    return PLUGIN_HANDLED;
    }
    }

    return PLUGIN_CONTINUE;
    }
    • 28 March 2019 20:30
    1. Mort3m
      Mort3m
      • 0
      а разница?
      тем более что reigster_touch это функция engine ( намек на то, что ты инклуд забыл дописать нужный )
      ничего не имею против engine, но сейчас многие скриптеры на фреше
      • 28 March 2019 22:58
    2. xUnicorn
      Абсолютно тоже самое,только не Ham_Touch а register_touch. Код 1 в 1 вообще
      • 28 March 2019 23:17
  5. xUnicorn
    Интересна, аткуда взял этат код?
    • 28 March 2019 22:35
    1. Mort3m
      Mort3m
      • 0
      я увирен ни от тибя патаму што ти не скриптор!!!
      • 28 March 2019 22:52
      1. xUnicorn
        Как сказал бог всего павна (и мира), Валасенка, я ноунейм
        • 28 March 2019 23:16
  6. Dezses
    Dezses
    • 0
    Хорошая статья, пригодится
    • 21 April 2019 14:34
Users belonging to group Guests cannot add comments to this article.
Base for Your Build
Information

Welcome to TB-TEAM.COM!

To become a full-fledged user of our portal, you need to register.
Register
Create your own account!

Register Now
Log In
Already registered? Go ahead and log in!

Log In