[MANUAL] Создание модулей

Ice_Sochi

Участник
Сообщения
709
Реакции
413
Подскажите пожалуйста, как отловить момент получения вип-статуса, именно получения, грубо говоря выполнение на игрока команды addvip, и в этот самый момент выполнить определенный код? Для ядра 2.х.х
В апи не разглядел, надеюсь, что не слепой
 

Макаров

Участник
Сообщения
123
Реакции
7
Как нужно создать модуль для vip что нужно скачать что бы самому создавать модули
 

iLoco

Пишу плагины за печеньки 🍪🍪🍪
Сообщения
2,265
Реакции
1,323

Макаров

Участник
Сообщения
123
Реакции
7
46477

Сообщения автоматически склеены:

блин не понял как нужно
Сообщения автоматически склеены:

напиши конкретнее не понимаю как нужно делать
 
Последнее редактирование:

iLoco

Пишу плагины за печеньки 🍪🍪🍪
Сообщения
2,265
Реакции
1,323
Посмотреть вложение 46477
Сообщения автоматически склеены:

блин не понял как нужно
Сообщения автоматически склеены:

напиши конкретнее не понимаю как нужно делать
То-есть вот модули, берёш найболее подходящий, и редактируешь внутренности (переименовать не забудь)
Если не знаешь как это делается, то учи это, ибо без знания основ, ты модуль не напишешь.
 

Патриот Анархии

Чиполлино
Сообщения
113
Реакции
68
Вообще, просто попробовать поиграться с этим. Мол, интерес возник, а вот манула нет.
Ну как, хотелось попробовать "show damage" привязать к Vip.
Где-то я уже это видел, но щас не могу найти.
 

iLoco

Пишу плагины за печеньки 🍪🍪🍪
Сообщения
2,265
Реакции
1,323
Вообще, просто попробовать поиграться с этим. Мол, интерес возник, а вот манула нет.
Ну как, хотелось попробовать "show damage" привязать к Vip.
Где-то я уже это видел, но щас не могу найти.
какой именно show damage? может уже есть версия под вип для него
 

Патриот Анархии

Чиполлино
Сообщения
113
Реакции
68
Честно говоря, название с трудом могу вспомнить. Могу только описать стиль.
Я имею в виду: Информация о дамаге (нанесённом или полученном) выводится игроку, как важное сообщение.
 

Nekro

Терра инкогнита
Сообщения
4,025
Реакции
2,260
C-подобный:
funcenum ItemSelectCallback
{
    Action:public(iClient, const String:sFeatureName[], VIP_ToggleState:OldStatus, &VIP_ToggleState:NewStatus), // Используется когда тип ф-и TOGGLABLE
    bool:public(iClient, const String:sFeatureName[]) // Используется когда тип ф-и SELECTABLE
};


А как это в новом синтаксисе?
 

Kruzya

Участник
Сообщения
12,970
Реакции
10,914
  • Команда форума
  • #36
@Nekro,
C-подобный:
typeset ItemSelectCallback
{
    function Action(int iClient, const char[] sFeatureName, VIP_ToggleState OldStatus VIP_ToggleState &NewStatus);
    function bool(int iClient, const char[] sFeatureName);
};
 

TOWUK

Участник
Сообщения
24
Реакции
2
Re: Создание модулей

Хотелось бы рассказать как привязать любой плагин к VIP плагину.
Зачем это нужно? Ну например добавить VIP-игроку иммунитет от чего-то.

И так, начнем. Подключаем библиотеку:

PHP:
#include <vip_core>

Далее решаем хотим мы это сделать для всех VIP-игроков или же тем, кому выдан доступ.

Если для всех то достаточно проверки:
PHP:
if(VIP_IsClientVIP(iClient))
{
    // Это VIP-игрок
}

Если же только по доступу то:
PHP:
static const String:g_sFeature[] = "MyFunc"; // Уникальное имя ф-и

public VIP_OnVIPLoaded()
{
    VIP_RegisterFeature(g_sFeature, BOOL, HIDE);
    // Если пишем BOOL то в параметрах 1/0
    // HIDE значит что ф-я скрыта, она не будет показана у игрока в меню, её нельзя отключить и не нужно добавлять в перевод.
    // Если HIDE не писать то ф-ю можно будет вкл/выкл и нужно добавить фразу в перевод.
}

А дальше просто в нужном месте проверяем:
PHP:
if(VIP_IsClientVIP(iClient) && VIP_IsClientFeatureUse(iClient, g_sFeature))
{
    // Это VIP-игрок и он имеет доступ к ф-и.
}
можно обновление, не найдено iClient и пишет что чтото устарело String
 

Ice_Sochi

Участник
Сообщения
709
Реакции
413
Извините за тупой вопрос
Как определить, что отключился вип-игрок с используемой привилегией?

Работает:
public void OnClientDisconnect(int iClient)
{
    if(!IsFakeClient(iClient))
    {
        //...
    }
}

Не работает:
public void OnClientDisconnect(int iClient)
{
    if(VIP_IsClientVIP(iClient) && VIP_IsClientFeatureUse(iClient, VIP_FEATURE))
    {
        //...
    }
}

Целесообразно ли делать через VIP_OnVIPClientRemoved -> !IsClientInGame?
 

iLoco

Пишу плагины за печеньки 🍪🍪🍪
Сообщения
2,265
Реакции
1,323
Извините за тупой вопрос
Как определить, что отключился вип-игрок с используемой привилегией?

Работает:
public void OnClientDisconnect(int iClient)
{
    if(!IsFakeClient(iClient))
    {
        //...
    }
}

Не работает:
public void OnClientDisconnect(int iClient)
{
    if(VIP_IsClientVIP(iClient) && VIP_IsClientFeatureUse(iClient, VIP_FEATURE))
    {
        //...
    }
}

Целесообразно ли делать через VIP_OnVIPClientRemoved -> !IsClientInGame?
Можно попробовать так:
C-подобный:
#define g_sFeature "VIP FEATURE"

public void OnPluginStart()
{
    HookEvent("player_disconnect", Event_PlayerDisconnectPre, EventHookMode_Pre);
}

public Action Event_PlayerDisconnect(Event event, const char[] name, bool dontBroadcast)
{
    int client = GetClientOfUserId(GetEventInt(event, "userid"));

    if(!IsFakeClient(client) && VIP_IsClientVIP(client) && VIP_GetClientFeatureStatus(client, g_sFeature) ==ENABLED) {
        // У игрока включена функция
    }
}

Игрок выгружается из випки при `OnClientDisconnect`, не думаю что его данные ещё можно будет получить.
 
Сверху Снизу