[VIP] Core

LansRus

Участник
Сообщения
99
Реакции
17
vip/VIP_Tag_1.0.0.smx ([VIP] Tag): Native "VIP_HookClientSpawn" was not found
Не работают ВИП Теги
 

September

Участник
Сообщения
5,238
Реакции
2,742
я пытался и не получилось
правда?
1572203472101.png1572203518560.png
 

Мировой

Участник
Сообщения
342
Реакции
53
Этого недостаточно.
Потребуется ещё сменить кодировку базы, самих таблиц, колонок, и сам плагин перекомпилировать, заменив предварительно здесь везде utf8 на utf8mb4.
кодировку базы в таблицах utf8mb4 поставил и всё роди норм ошибка исчезла
 

LansRus

Участник
Сообщения
99
Реакции
17

September

Участник
Сообщения
5,238
Реакции
2,742
Ничего мне это недало! Все что там пишут чушь! Я сюда пишу ни чтобы такие как ты мне про поиск говорили! Если не можешь помочь, не отвечай

гуглим ошибку
1572281418467.png



переходим по второй ссылке


ЧИТАЕМ:
Этот плагин призван исправить ошибку, имитируя поведение этой функции на новой версии ядра.
Скомпилировать по старому написанный модуль Вы по прежнему не сможете. Придётся использовать include-файл от 2.1.1 версии и ниже.

УСТАНАВЛИВАЕМ И РАДУЕМСЯ
 

Kruzya

Участник
Сообщения
12,970
Реакции
10,914
@September, осталось ещё сильнее разжевать и установить за человека плагин на сервер.

Ну серьёзно. Я плагин писал в надежде, что люди, которые не хотят залезать в исходник, будут ставить его вместо того, чтобы морочить всем на форуме мозги "А КАК ПОФИКСИТЬ".
@R1KO, добавь в FAQ пункт "для ленивых" с ссылкой на плагин или пост, где будет описано, зачем и что нужно сделать, чтобы исправить ошибку.
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • Автор ресурса
  • #1,850
@R1KO, добавь в FAQ пункт "для ленивых" с ссылкой на плагин или пост, где будет описано, зачем и что нужно сделать, чтобы исправить ошибку.
пусть страдают коль не умеют читать и голову включать. когда-то допишу вики
 

LansRus

Участник
Сообщения
99
Реакции
17
Сам справился с данной ошибкой, предложение модератора никак не повлияло и не помогло! Все было намного проще. Просто в каких-то файлах во время загрузки произошла ошибка, и нужно было переустановить плагин.
 

Kruzya

Участник
Сообщения
12,970
Реакции
10,914
предложение модератора никак не повлияло и не помогло!
Ну, начнем с того, что плашка "Модератор" (и даже "Супермодератор") не гарантирует, что человек вообще разбирается в серверах.
А совет @September по установке стороннего плагина (для плагинов (дожили: ставить сторонние плагины, чтобы сторонние плагины для ядра работали)) помог, просто Вы скорее всего не перезагружали сервер, потому эффекта и не заметили, сообщив нам, что "не сработало".
 

LansRus

Участник
Сообщения
99
Реакции
17
Ну, начнем с того, что плашка "Модератор" (и даже "Супермодератор") не гарантирует, что человек вообще разбирается в серверах.
А совет @September по установке стороннего плагина (для плагинов (дожили: ставить сторонние плагины, чтобы сторонние плагины для ядра работали)) помог, просто Вы скорее всего не перезагружали сервер, потому эффекта и не заметили, сообщив нам, что "не сработало".
Я перезагружал! До меня сначала не доперло, потом я сделал все, и перезагиущил естественно. Но никакого эффекта не было, ошибиться я не мог, так как я решил попробовать 2 раз! Я наверняка лучше знаю помог его совет или нет) Как ни как ситуации разные могут быть, может быть помимо этой ошибки была еще какая-то. И я выложил это в обсуждении чтобы помочь людям с подобной ситуацией, а не с целью обсудить возможности модераторов;)
 

September

Участник
Сообщения
5,238
Реакции
2,742
Я перезагружал! До меня сначала не доперло, потом я сделал все, и перезагиущил естественно. Но никакого эффекта не было, ошибиться я не мог, так как я решил попробовать 2 раз! Я наверняка лучше знаю помог его совет или нет) Как ни как ситуации разные могут быть, может быть помимо этой ошибки была еще какая-то. И я выложил это в обсуждении чтобы помочь людям с подобной ситуацией, а не с целью обсудить возможности модераторов;)

проблема решается только двумя способами.

1. обновить модуль
2. Поставить плагин

других вариантов нет, не придумывайте чушь)
 

LansRus

Участник
Сообщения
99
Реакции
17
проблема решается только двумя способами.

1. обновить модуль
2. Поставить плагин

других вариантов нет, не придумывайте чушь)
Ну конечно! Я сам себе это придумал, и когда решал эту проблему с сервером, сервер поверил в мою чушь, и волшебным образом починился. Вуаля!
Сообщения автоматически склеены:

Ну конечно! А сам себе это придумал, и когда решал эту проблему с сервером, сервер поверил в мою чушь, и волшебным образом починился. Вуаля!
И вообще, я так и решил ее если что! Закинул обновленную версию плага!
Что вы мне тогда втираете что такого быть не может?)))
 

LansRus

Участник
Сообщения
99
Реакции
17
Модуля вернее! [VIP] Tag
Я изначально закинул более позднюю версию, и он выдал ошибку. Потом когда закинул последнюю версию с форума все пошло на лад!)
Хотя с модулем BunnyHop было наоборот. На последней версии выдавал ошибку, и я выкопал где-то струю версию и все стало отлично!
Я хз как это работает)
 

Dragokas

Добрая душа
Сообщения
229
Реакции
213
Здравствуйте!

Подскажите, пожалуйста, как исправить данную ошибку?

L 11/01/2019 - 13:49:33: [SM] Exception reported: Feature "AURA_M" is invalid/Функция "AURA_M" не существует
L 11/01/2019 - 13:49:33: [SM] Blaming: vip/VIP_Core.smx
L 11/01/2019 - 13:49:33: [SM] Call stack trace:
L 11/01/2019 - 13:49:33: [SM] [0] ThrowNativeError
L 11/01/2019 - 13:49:33: [SM] [1] Line 861, vip/API.sp::Native_UnregisterFeature
L 11/01/2019 - 13:49:33: [SM] [3] VIP_UnregisterFeature
L 11/01/2019 - 13:49:33: [SM] [4] Line 67, H:\_To_games\Left4Dead_2\My_mods\VIP\VIP_Aura_Pulse\scripting\VIP_Aura_Pulse.sp::OnPluginEnd
L 11/01/2019 - 13:49:33: Error log file session closed.

sm 1.9, L4D1
версия VIP-core - последняя на данный момент на github
Все модули вип удалены, кроме одного:
C-подобный:
#pragma semicolon 1
#pragma newdecls required

#include <sourcemod>
#include <sdktools>
#include <vip_core>
#include <clientprefs>

public Plugin myinfo =
{
    name = "[VIP] AURA",
    author = "R1KO & Pheonix (˙·٠●Феникс●٠·˙) & Dragokas",
    version = "1.0.1",
    url = ""
};

/*
    Fork by Dragokas
    
    1.0.1
     - Added new aura.
     - Added different colors, including random and changeful color.
     - updated to new syntax and metodmaps.
     - updated for using with newest VIP_core, added missing 'GetRGBAFromString'.
     - added translation into English.
     - made alpha level unnecessary to specify in config file.
     - made menu restore currently selected page.
*/

#define VIP_AURA_M            "AURA_M"
#define VIP_AURA            "AURA"

int g_clientColor[MAXPLAYERS+1][4];
VIP_ToggleState g_bHasAura[MAXPLAYERS+1];
Handle g_hTimer[MAXPLAYERS+1], g_hCookie;
KeyValues g_hKv;
Menu g_hmenu;
int g_iBeamSprite, g_iHaloSprite;
int g_iBeamSprite2;
bool g_bBeamRandomColor[MAXPLAYERS+1];
float g_iBeamLifeTime = 0.7;
int g_iAlphaColor = 128;

public void OnPluginStart()
{
    LoadTranslations("Aura_Pulse.phrases");

    if(VIP_IsVIPLoaded())
    {
        VIP_OnVIPLoaded();
    }
    
    if (g_hKv != INVALID_HANDLE) delete g_hKv;
    g_hKv = new KeyValues("Aura_Colors");
    
    char buffer[PLATFORM_MAX_PATH];
    BuildPath(Path_SM, buffer, sizeof(buffer), "data/vip/modules/aura_colors.ini");
    if (!g_hKv.ImportFromFile(buffer)) SetFailState("Couldn't parse file %s", buffer);
    
    g_hCookie = RegClientCookie("VIP_AURA", "VIP_AURA", CookieAccess_Public);
}

public void OnPluginEnd()
{
    if(CanTestFeatures() && GetFeatureStatus(FeatureType_Native, "VIP_UnregisterFeature") == FeatureStatus_Available)
    {
        VIP_UnregisterFeature(VIP_AURA_M);
        VIP_UnregisterFeature(VIP_AURA);
    }
}

public void OnMapStart()
{
    g_iBeamSprite = PrecacheModel("materials/sprites/laser.vmt");
    g_iBeamSprite2 = PrecacheModel("materials/sprites/blueflare1.vmt");
    g_iHaloSprite = PrecacheModel("materials/sprites/glow08.vmt");
}

public void VIP_OnVIPLoaded()
{
    VIP_RegisterFeature(VIP_AURA_M, _,         SELECTABLE, Open_aura,             OnDisplayItem,         OnDrawItem);
    VIP_RegisterFeature(VIP_AURA,     BOOL,     _,             ToggleItemCallback, OnDisplayItem_f);
}

public void VIP_OnVIPClientLoaded(int client)
{
    if(VIP_IsClientFeatureUse(client, VIP_AURA))
    {
        g_bHasAura[client] = ENABLED;
        char sInfo[64];
        GetClientCookie(client, g_hCookie, sInfo, 64);
        if(sInfo[0])
        {
            GetRGBAFromString(sInfo, g_clientColor[client]);
            AdjustColor(client);
            return;
        }
        else {
            g_bBeamRandomColor[client] = false;
            g_clientColor[client][0] = 0;
            g_clientColor[client][1] = 0;
            g_clientColor[client][2] = 255;
            g_clientColor[client][3] = g_iAlphaColor;
            return;
        }
    }
    for(int i=0; i < 4; i++) g_clientColor[client][i] = 255;
}

void GetRGBAFromString(const char[] sInfo, int color[4])
{
    char sColors[4][4];
    ExplodeString(sInfo, " ", sColors, sizeof(sColors), sizeof(sColors[]));
    color[0] = StringToInt(sColors[0]);
    color[1] = StringToInt(sColors[1]);
    color[2] = StringToInt(sColors[2]);
    if (sColors[3][0] != '\0' && !StrEqual(sColors[3][0], "0")) {
        color[3] = StringToInt(sColors[3]); // alpha
    }
    else {
        color[3] = g_iAlphaColor;
    }
}

public bool Open_aura(int client, const char[] sFeatureName)
{
    char buffer[50], sColor[50];
    g_hmenu = new Menu(AuraMenuHandler);
    g_hmenu.ExitBackButton = true;
    g_hmenu.SetTitle("%T\n ", "Choose_Aura", client);
    g_hKv.Rewind();
    if (g_hKv.GotoFirstSubKey())
    {
        do
        {
            if (g_hKv.GetSectionName(buffer, 256))
            {
                Format(sColor, sizeof(sColor), "%T", buffer, client);
                g_hmenu.AddItem(buffer, sColor);
            }
        }
        while (g_hKv.GotoNextKey());
    }
    g_hKv.Rewind();

    g_hmenu.Display(client, MENU_TIME_FOREVER);
    return false;
}

public int AuraMenuHandler(Menu hMenu, MenuAction action, int client, int Item)
{
    switch(action)
    {
        case MenuAction_Cancel:
        {
            if(Item == MenuCancel_ExitBack) VIP_SendClientVIPMenu(client);
        }
        case MenuAction_Select:
        {
            char sInfo[64];
            hMenu.GetItem(Item, sInfo, 64);
            g_hKv.Rewind();
            if (g_hKv.JumpToKey(sInfo, false))
            {
                g_hKv.GetColor("color", g_clientColor[client][0],  g_clientColor[client][1],  g_clientColor[client][2],  g_clientColor[client][3]);
                g_hKv.Rewind();
                PrintToChat(client, "\x03%t \x04%t", "Aura_changed", sInfo);
                FormatEx(sInfo, 64, "%i %i %i %i", g_clientColor[client][0],  g_clientColor[client][1],  g_clientColor[client][2],  g_clientColor[client][3]);
                if (g_clientColor[client][3] == 0)
                    g_clientColor[client][3] = g_iAlphaColor;
                SetClientCookie(client, g_hCookie, sInfo);
                AdjustColor(client);
            }
            else PrintToChat(client, "Failed to use \"%s\"!.", sInfo);
            g_hmenu.DisplayAt(client, hMenu.Selection, MENU_TIME_FOREVER);
        }
    }
}

void AdjustColor(int client)
{
    g_bBeamRandomColor[client] = false;
    
    if (g_clientColor[client][0] == 0 && g_clientColor[client][1] == 0 && g_clientColor[client][2] == 0) {
        SetBeamRandomColor(client);
    }
    else if (g_clientColor[client][0] == 1 && g_clientColor[client][1] == 1 && g_clientColor[client][2] == 1) {
        SetBeamRandomColor(client);
        g_bBeamRandomColor[client] = true;
    }
}

public int OnDrawItem(int client, const char[] sMenuOptionName, int style)
{
    return VIP_GetClientFeatureStatus(client, VIP_AURA) != ENABLED ? ITEMDRAW_DISABLED : style;
}

public bool OnDisplayItem(int client, const char[] sFeatureName, char[] sDisplay, int maxlen)
{
    FormatEx(sDisplay, maxlen, "%T", "Aura_Color", client);
    return true;
}

public Action ToggleItemCallback(int client, const char[] sFeatureName, VIP_ToggleState OldStatus, VIP_ToggleState &NewStatus)
{
    g_bHasAura[client] = NewStatus;
    if(NewStatus == ENABLED) SetClientAura(client);
    return Plugin_Continue;
}

public bool OnDisplayItem_f(int client, const char[] sFeatureName, char[] sDisplay, int maxlen)
{
    FormatEx(sDisplay, maxlen, "%T [%T]", "Aura", client, VIP_IsClientFeatureUse(client, VIP_AURA) ? "Enabled": "Disabled", client);
    return true;
}

public void OnClientDisconnect(int client)
{
    g_bHasAura[client] = DISABLED;
    g_hTimer[client] = INVALID_HANDLE;
}

public void VIP_OnPlayerSpawn(int client, int iTeam, bool bIsVIP)
{
    if(bIsVIP && g_bHasAura[client])
    {
        SetClientAura(client);
    }
}

void SetClientAura(int client)
{
    if(g_hTimer[client] == INVALID_HANDLE) {
        g_hTimer[client] = CreateTimer(g_iBeamLifeTime, Timer_SetAura, client, TIMER_REPEAT);
    }
}

public Action Timer_SetAura(Handle timer, int client)
{
    if (g_bBeamRandomColor[client]) SetBeamRandomColor(client);
    
    if(IsClientInGame(client) && IsPlayerAlive(client) && g_bHasAura[client] == ENABLED)
    {
        float g_AuraVec[3];
        GetClientAbsOrigin(client, g_AuraVec);
        g_AuraVec[2] += 10.0;
        TE_SetupBeamRingPoint(g_AuraVec, GetRandomFloat(0.0, 20.0), GetRandomFloat(40.0, 55.0), GetRandomInt(0, 1) == 0 ? g_iBeamSprite : g_iBeamSprite2, g_iHaloSprite, 0, 15, GetRandomFloat(0.5, 1.2), 15.0, 1.0, g_clientColor[client], 1, 0);
        TE_SendToAll();
        return Plugin_Continue;
    }
    else {
        g_hTimer[client] = INVALID_HANDLE;
    }
    return Plugin_Stop;
}

void SetBeamRandomColor(int client)
{
    g_clientColor[client][0] = GetRandomInt(0, 255);
    g_clientColor[client][1] = GetRandomInt(0, 255);
    g_clientColor[client][2] = GetRandomInt(0, 255);
}

Спасибо.
 

RusJJ

Доброе утро девачьки
Сообщения
2,582
Реакции
1,075
Переписать плагин правильно
 

Dragokas

Добрая душа
Сообщения
229
Реакции
213
Переписать плагин правильно
Почему бы вам сразу не послать меня в гугл? Какую реакцию на ваше сообщение вы от меня ожидаете.
Сообщения автоматически склеены:

Хорошо, поставлю вопрос иначе:
1. Почему возникает эта ошибка? Могу предположить, что плагин загружается раньше ядра и поэтому функция не регистрируется.
Понятно, что в целях безопасности полезно сделать проверку через VIP_IsValidFeature перед выгрузкой, но тогда вопрос - как правильно регистрировать функцию в таком случае.
2. Есть ли где-нибудь документация для разработчиков (кроме файла inc) ?
Переписать плагин правильно
3. Тогда где можно найти "правильный" шаблон плагина?
В тех плагинах, что я просмотрел, написано либо точно так же, либо вообще отсутствует удаление регистрации функции.
 
Последнее редактирование:
Сверху Снизу