[VIP] Core

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • Автор ресурса
  • #1,222
@Rezder, пишу по немногу, когда есть время
 
  • Мне нравится
Реакции: vb

StateByte

Fullstack Software Engineer.
Сообщения
431
Реакции
622
Да, бывает вот такое:
C-подобный:
L 10/08/2018 - 19:31:24: [vip/VIP_Core.smx] SQL_Callback_OnClientAuthorized: Lost connection to MySQL server during query
У всех випки слетают :(
Либо
C-подобный:
Socket ProcessAccept Error: Too many open files
Из-за этого возможно тоже...
 
Последнее редактирование:

September

Участник
Сообщения
5,238
Реакции
2,742
Да, бывает вот такое:
C-подобный:
L 10/08/2018 - 19:31:24: [vip/VIP_Core.smx] SQL_Callback_OnClientAuthorized: Lost connection to MySQL server during query
У всех випки слетают :(
Либо
C-подобный:
Socket ProcessAccept Error: Too many open files
Из-за этого возможно тоже...

Скорее всего создаётся много соединений с бд, и из за ограничений соединений (в настройках мускула) сервер теряет связь с сервером. Лишь предположение
 

norice

Не креативный создатель
Сообщения
137
Реакции
55
Привет, кто сталкивался с такой проблемой?
L 10/09/2018 - 20:24:44: Info (map "workshop/487039571/awp_lego_2") (file "errors_20181009.log")
L 10/09/2018 - 20:24:44: [vip/VIP_Core.smx] SQL_Callback_ErrorCheck: Incorrect string value: '\xF0\x9D\x93\xB4\xF0\x9D...' for column 'name' at row 1
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • Автор ресурса
  • #1,226
@norice, обновить ядро или исправлять в старом
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • Автор ресурса
  • #1,228
@norice, R1KO/VIP-Core
меняем на
PHP:
DB_UpdateClientName(iClient)
{
    SQL_FastQuery(g_hDatabase, "SET NAMES 'utf8'");

    decl String:sQuery[256], String:sName[MAX_NAME_LENGTH*2+1], iClientID;
    GetTrieValue(g_hFeatures[iClient], "ClientID", iClientID);
    GetClientName(iClient, sName, sizeof(sName));

    SQL_FormatQuery(sQuery, sizeof(sQuery), "UPDATE `vip_users` SET `name` = '%s' WHERE `id` = '%i';", sName, iClientID);
    SQL_TQuery(g_hDatabase, SQL_Callback_ErrorCheck, sQuery);
}

R1KO/VIP-Core
на
PHP:
GetClientName(iTarget, sName, sizeof(sName));

R1KO/VIP-Core
на
PHP:
strcopy(sAuth, sizeof(sAuth), sIdentity);
strcopy(sName, sizeof(sName), sAuth);

R1KO/VIP-Core и R1KO/VIP-Core
FormatEx на SQL_FormatQuery
 

#StrixX

Участник
Сообщения
35
Реакции
0
Вообщем проблему видно на скрине. Нет доступа
 

Вложения

  • upload_2018-10-11_15-59-59.png
    upload_2018-10-11_15-59-59.png
    376.5 КБ · Просмотры: 67

Alraune

Участник
Сообщения
216
Реакции
52
Возможно кто то знает в чем дело ..
Подключила оба сервера к одной базе vip ( 3.0 )
Но получается так , скажем - получают випку на сервере А , на B cервере она тоже появляется. А если на B , то на А сервере ее нет... Настройки абсолютно зеркальны.
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • Автор ресурса
  • #1,232
@Alraune, сервер ид проверь чтобы 0 везде стоял в конфигах ядра
 

Alraune

Участник
Сообщения
216
Реакции
52
@Alraune, сервер ид проверь чтобы 0 везде стоял в конфигах ядра
Так и стоит 0. И в базе при выдаче привилегий с обоих серверов в таблице указан 0 . Возможно потому что к базе пыл подключен сначала один сервер , затем через некоторое время уже сделала бэкап всего что связано с vip и перенесла на второй ? И вот там уже выданные випки на первом сервере не появляются. А планировала обьединение этих серверов по всем базам.
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • Автор ресурса
  • #1,234
@Alraune, насколько я помню ты есть у меня вк или скайпе, напиши туда
 

Aplesin4ik

Участник
Сообщения
318
Реакции
47
L 10/12/2018 - 15:35:45: [SM] [1] Line 252, C:\Users\Пк\Desktop\sourcemod\addons\sourcemod\scripting\duel_system.sp::RoundEnd
L 10/12/2018 - 15:46:15: [vip/VIP_Core.smx] SQL_Callback_ErrorCheck: near ")": syntax error

серв упал сегодня из за этого
SourceMod (1.9.0.6252) by AlliedModders LLC
"[VIP] Core" (2.1.1 R) by R1KO (skype: vova.andrienko1)

стоит обновить ядро?
 

Aplesin4ik

Участник
Сообщения
318
Реакции
47
обновил ядро плагина, перестал работать модуль vip skins, к сожалению не могу написать в тему с модулем (пишет недостаточно прав) то пишу сюда (уж извините). Произвел обновление модуля как описано по ссылке от рико
C-подобный:
#pragma semicolon 1

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

public Plugin:myinfo =
{
    name = "[VIP] Skins",
    author = "R1KO (skype: vova.andrienko1)",
    version = "1.0.5",
    url = "hlmod.ru"
};

#define DEBUG_MODE 0

#if DEBUG_MODE
new String:g_sDebugLogFile[PLATFORM_MAX_PATH];
#endif

#if DEBUG_MODE
stock DebugMsg(const String:sMsg[], any:...)
{
    decl String:sBuffer[250];
    VFormat(sBuffer, sizeof(sBuffer), sMsg, 2);
    LogToFile(g_sDebugLogFile, sBuffer);
}
#define DebugMessage(%0) DebugMsg(%0);
#else
#define DebugMessage(%0)
#endif

new bool:g_bIsCSGO;

static const char g_sFeature[][] = {"Skins", "Skins_Menu"};

new Handle:        g_hKeyValues                    = INVALID_HANDLE,
    Handle:        g_hCookieSkin[2]    = {INVALID_HANDLE, ...},
    bool:        g_bClientPreview[MAXPLAYERS+1],
    String:        g_sSkinModel[MAXPLAYERS+1][PLATFORM_MAX_PATH],
    String:        g_sArmsModel[MAXPLAYERS+1][PLATFORM_MAX_PATH];

new m_szArmsModel = -1;

new const String:g_sTeamNames[][] =
{
    "ALL",
    "TEAM_T",
    "TEAM_CT"
};
   
public VIP_OnVIPLoaded()
{
    VIP_RegisterFeature(g_sFeature[0], STRING, _, OnToggleItem);
    VIP_RegisterFeature(g_sFeature[1], _, SELECTABLE, OnSelectItem, _, OnDrawItem);

}

public OnPluginStart()
{
    #if DEBUG_MODE  
    BuildPath(Path_SM, g_sDebugLogFile, sizeof(g_sDebugLogFile), "logs/g_sFeature[0]_Debug.log");
    #endif

    g_bIsCSGO = bool:(GetEngineVersion() == Engine_CSGO);
   
    g_hCookieSkin[0] = RegClientCookie("VIP_Skin_T", "VIP_Skin_T", CookieAccess_Public);
    g_hCookieSkin[1] = RegClientCookie("VIP_Skin_CT", "VIP_Skin_CT", CookieAccess_Public);
    /*
    RegConsoleCmd("sm_skins", SkinsMenu_CMD);
    RegConsoleCmd("sm_models", SkinsMenu_CMD);
    */
    HookEvent("player_team", Event_PlayerTeam);
    if(VIP_IsVIPLoaded())
    {
        VIP_OnVIPLoaded();
    }
}

public OnPluginEnd()
{

    if(CanTestFeatures() && GetFeatureStatus(FeatureType_Native, "VIP_UnregisterFeature") == FeatureStatus_Available)
    {
        VIP_UnregisterFeature(g_sFeature[0]);
        VIP_UnregisterFeature(g_sFeature[1]);
    }
}

public OnMapStart()
{
    if(g_hKeyValues != INVALID_HANDLE)
    {
        CloseHandle(g_hKeyValues);
    }

    g_hKeyValues = CreateKeyValues("Skins");
   
    decl String:sBuffer[PLATFORM_MAX_PATH];
    BuildPath(Path_SM, sBuffer, sizeof(sBuffer), "data/vip/modules/skins.txt");

    if (!FileToKeyValues(g_hKeyValues, sBuffer)) SetFailState("Couldn't parse file %s", sBuffer);
   
    KvRewind(g_hKeyValues);
    if(KvGotoFirstSubKey(g_hKeyValues))
    {
        do
        {
            KvSetNum(g_hKeyValues, "loaded", 0);
            KvSetNum(g_hKeyValues, "arms_loaded", 0);
        //    KvGetSectionName(g_hKeyValues, sBuffer, sizeof(sBuffer));
            KvGetString(g_hKeyValues, "model", sBuffer, sizeof(sBuffer));
            DebugMessage("Read model: '%s'", sBuffer)
            if(sBuffer[0] && LoadSkin(sBuffer, true))
            {
                if(g_bIsCSGO)
                {
                    KvGetString(g_hKeyValues, "arms_model", sBuffer, sizeof(sBuffer));
                    DebugMessage("Read arms_model: '%s'", sBuffer)
                    if(sBuffer[0] && LoadSkin(sBuffer, false))
                    {
                        KvSetNum(g_hKeyValues, "arms_loaded", 1);
                    }
                }
                KvSetNum(g_hKeyValues, "loaded", 1);
            }
        } while (KvGotoNextKey(g_hKeyValues));
    }
}

bool:LoadSkin(const String:sModel[], bool:bNecessarily)
{
    DebugMessage("LoadSkin %b: '%s' -> Exists: %b", bNecessarily, sModel, FileExists(sModel))
    if(FileExists(sModel, true))
    {
        PrecacheModel(sModel, true);
        if(IsModelPrecached(sModel))
        {
            AddFileToDownloadsTable(sModel);
            return true;
        }
        else
        {
            LogError("Model '%s' doesn't pass precache", sModel);
        }
    }
    else if(bNecessarily)
    {
        LogError("File '%s' does not exist", sModel);
    }
    return false;
}

public OnClientPutInServer(iClient)
{
    g_sSkinModel[iClient][0] = '\0';
    if(g_bIsCSGO)
    {
        g_sArmsModel[iClient][0] = '\0';
    }
}

public OnClientDisconnect(iClient)
{
    g_sSkinModel[iClient][0] = '\0';
    if(g_bIsCSGO)
    {
        g_sArmsModel[iClient][0] = '\0';
    }
}

public bool:OnSelectItem(iClient, const String:sFeatureName[])
{
    if(GetClientTeam(iClient) <= 1)
    {
        VIP_PrintToChatClient(iClient, "%t", "JOIN_TEAM");
        return true;
    }
    DisplayMenu(CreateSkinsMenu(iClient), iClient, MENU_TIME_FOREVER);
    return false;
}

public OnDrawItem(iClient, const String:sFeatureName[], iStyle)
{
    switch(VIP_GetClientFeatureStatus(iClient, g_sFeature[0]))
    {
        case ENABLED: return ITEMDRAW_DEFAULT;
        case DISABLED: return ITEMDRAW_DISABLED;
        case NO_ACCESS: return ITEMDRAW_RAWLINE;
    }

    return iStyle;
}

Handle:CreateSkinsMenu(iClient)
{
    new Handle:hMenu = CreateMenu(SkinsMenu_Handler);
    SetMenuExitBackButton(hMenu, true);
    SetMenuTitle(hMenu, "%T\n \n", "SKINS", iClient);
   
    decl String:sClientSkins[128];
    FormatEx(sClientSkins, sizeof(sClientSkins), "%T\n \n", "DISABLE_SKIN", iClient);

    AddMenuItem(hMenu, "", sClientSkins);

    KvRewind(g_hKeyValues);
    if(KvGotoFirstSubKey(g_hKeyValues))
    {
        decl String:sBuffer[64], String:sName[64], bool:bAll, iSkinTeam, iTeam;
        VIP_GetClientFeatureString(iClient, g_sFeature[0], sClientSkins, sizeof(sClientSkins));
        bAll = StrEqual(sClientSkins, "all", false);
        iTeam = GetClientTeam(iClient);
        SetTrieValue(VIP_GetVIPClientTrie(iClient), "SkinTeam", iTeam);
        iTeam--;
        do
        {
            if(KvGetNum(g_hKeyValues, "loaded") == 0) continue;

            KvGetSectionName(g_hKeyValues, sBuffer, sizeof(sBuffer));

            KvGetString(g_hKeyValues, "team", sName, sizeof(sName));
            iSkinTeam = GetTeamFromString(sName);
            if(iSkinTeam == iTeam || iSkinTeam == 0)
            {
                KvGetString(g_hKeyValues, "name", sName, sizeof(sName), sBuffer);
                AddMenuItem(hMenu, sBuffer, sName, (bAll == false && StrContains(sClientSkins, sBuffer, false) == -1) ? ITEMDRAW_DISABLED:ITEMDRAW_DEFAULT);
            }
        } while (KvGotoNextKey(g_hKeyValues));
    }
   
    KvRewind(g_hKeyValues);
   
    if(GetMenuItemCount(hMenu) < 2)
    {
        FormatEx(sClientSkins, sizeof(sClientSkins), "%T", "NO_SKINS_AVAILABLE", iClient);
        AddMenuItem(hMenu, "", sClientSkins, ITEMDRAW_DISABLED);
    }

    return hMenu;
}

GetTeamFromString(const String:sBuffer[])
{
    switch(sBuffer[0])
    {
        case 'C', 'c':    return 2;
        case 'T', 't':    return 1;
        case 'A', 'a':    return 0;
        case '\0':        return -1;
    }
    return -1;
}

public SkinsMenu_Handler(Handle:hMenu, MenuAction:action, iClient, Item)
{
    switch(action)
    {
        case MenuAction_End:
        {
            CloseHandle(hMenu);
        }
        case MenuAction_Cancel:
        {
            if(Item == MenuCancel_ExitBack) VIP_SendClientVIPMenu(iClient);
        }
        case MenuAction_Select:
        {
            new iTeam = GetClientTeam(iClient), iSkinTeam;
            GetTrieValue(VIP_GetVIPClientTrie(iClient), "SkinTeam", iSkinTeam);
            if(iSkinTeam != 0 && iTeam != iSkinTeam)
            {
                VIP_PrintToChatClient(iClient, "%t", "ERROR");
                VIP_SendClientVIPMenu(iClient);
                return;
            }

            if(iTeam <= 1)
            {
                VIP_PrintToChatClient(iClient, "%t", "JOIN_TEAM");
                VIP_SendClientVIPMenu(iClient);
                return;
            }

            if(Item == 0)
            {
                g_sSkinModel[iClient][0] = '\0';
                if(g_bIsCSGO)
                {
                    g_sArmsModel[iClient][0] = '\0';
                }
                //SetClientDefSkin(iClient);
                CS_UpdateClientModel(iClient);
                VIP_SendClientVIPMenu(iClient);
                return;
            }
   
            decl String:sInfo[64];
            GetMenuItem(hMenu, Item, sInfo, sizeof(sInfo));

            DisplayMenu(CreateSkinInfoMenu(iClient, sInfo), iClient, MENU_TIME_FOREVER);
        }
    }
}

Handle:CreateSkinInfoMenu(iClient, const String:sKey[])
{
    new Handle:hMenu;
    KvRewind(g_hKeyValues);
    if(KvJumpToKey(g_hKeyValues, sKey, false))
    {
        hMenu = CreateMenu(SkinInfoMenu_Handler);
        SetMenuExitBackButton(hMenu, true);
        decl String:sName[64], iTeam;
        KvGetString(g_hKeyValues, "team", sName, sizeof(sName));
        iTeam = GetTeamFromString(sName);
        KvGetString(g_hKeyValues, "name", sName, sizeof(sName));
        SetMenuTitle(hMenu, "%T\n \n%T %s\n%T %T\n \n", "INFO", iClient, "NAME", iClient, sName, "TEAM", iClient, g_sTeamNames[iTeam], iClient);
       
        FormatEx(sName, sizeof(sName), "%T", g_bClientPreview[iClient] ? "DISABLE_PREVIEW":"ENABLE_PREVIEW", iClient);
        AddMenuItem(hMenu, sKey, sName, (GetClientTeam(iClient) > 1 && IsPlayerAlive(iClient)) ? ITEMDRAW_DEFAULT:ITEMDRAW_DISABLED);
       
        FormatEx(sName, sizeof(sName), "%T", "SET", iClient);
        AddMenuItem(hMenu, sKey, sName);
       
        AddMenuItem(hMenu, "", "", ITEMDRAW_NOTEXT);
        AddMenuItem(hMenu, "", "", ITEMDRAW_NOTEXT);
        AddMenuItem(hMenu, "", "", ITEMDRAW_NOTEXT);
        AddMenuItem(hMenu, "", "", ITEMDRAW_NOTEXT);
    }

    return hMenu;
}

public SkinInfoMenu_Handler(Handle:hMenu, MenuAction:action, iClient, Item)
{
    switch(action)
    {
        case MenuAction_End: CloseHandle(hMenu);
        case MenuAction_Cancel:
        {
            ClientPreview(iClient, _, false);
            if(Item == MenuCancel_ExitBack) DisplayMenu(CreateSkinsMenu(iClient), iClient, MENU_TIME_FOREVER);
        }
        case MenuAction_Select:
        {
            new iTeam = GetClientTeam(iClient), iSkinTeam;
            GetTrieValue(VIP_GetVIPClientTrie(iClient), "SkinTeam", iSkinTeam);
            if(iSkinTeam != 0 && iTeam != iSkinTeam)
            {
                VIP_PrintToChatClient(iClient, "%t", "ERROR");
                VIP_SendClientVIPMenu(iClient);
                return;
            }

            if(iTeam <= 1)
            {
                VIP_PrintToChatClient(iClient, "%t", "JOIN_TEAM");
                VIP_SendClientVIPMenu(iClient);
                return;
            }
   
            decl String:sInfo[64];
            GetMenuItem(hMenu, Item, sInfo, sizeof(sInfo));
            KvRewind(g_hKeyValues);
            if(KvJumpToKey(g_hKeyValues, sInfo, false))
            {
               
                switch(Item)
                {
                    case 0:
                    {
                        if(IsPlayerAlive(iClient))
                        {
                            if(g_bClientPreview[iClient])
                            {
                                ClientPreview(iClient, _, false);
                            }
                            else
                            {
                                decl String:sBuffer[PLATFORM_MAX_PATH];
                                KvGetString(g_hKeyValues, "model", sBuffer, sizeof(sBuffer));
                                ClientPreview(iClient, sBuffer, true);
                            }
                            DisplayMenu(CreateSkinInfoMenu(iClient, sInfo), iClient, MENU_TIME_FOREVER);
                        }
                        else
                        {
                            VIP_PrintToChatClient(iClient, "%t", "ERROR");
                            VIP_SendClientVIPMenu(iClient);
                        }
                       
                    }
                    case 1:
                    {
                        ClientPreview(iClient, _, false);
                        decl String:sName[64], String:sBuffer[64];
                        KvGetString(g_hKeyValues, "name", sName, sizeof(sName));
                        FormatEx(sBuffer, sizeof(sBuffer), "%T", g_sTeamNames[iTeam-1], iClient);
                        VIP_PrintToChatClient(iClient, "%t", "YOU_SET_SKIN", sName, sBuffer);
                        KvGetSectionName(g_hKeyValues, g_sSkinModel[iClient], sizeof(g_sSkinModel[]));
                        SetClientCookie(iClient, g_hCookieSkin[iTeam-2], g_sSkinModel[iClient]);
                        KvGetString(g_hKeyValues, "model", g_sSkinModel[iClient], sizeof(g_sSkinModel[]));
                        if(g_bIsCSGO && KvGetNum(g_hKeyValues, "arms_loaded") == 1)
                        {
                            KvGetString(g_hKeyValues, "arms_model", g_sArmsModel[iClient], sizeof(g_sArmsModel[]));
                        }

                        if(IsPlayerAlive(iClient))
                        {
                            SetClientVIPSkin(iClient);
                            SetClientVIPArms(iClient);
                        }

                        VIP_SendClientVIPMenu(iClient);
                    }
                }
            }  

           
        }
    }
}

ClientPreview(iClient, const String:sModel[] = "", bool:bEnabled = true)
{
    g_bClientPreview[iClient] = bEnabled;
    //static String:sOriginalModel[MAXPLAYERS+1][PLATFORM_MAX_PATH];
    if(IsClientInGame(iClient))
    {
        if (g_bClientPreview[iClient])
        {
            //GetClientModel(iClient, sOriginalModel[iClient], sizeof(sOriginalModel[]));
            SetEntityModel(iClient, sModel);
            SetEntPropEnt(iClient, Prop_Send, "m_hObserverTarget", 0);
            SetEntProp(iClient, Prop_Send, "m_iObserverMode", 1);
            SetEntProp(iClient, Prop_Send, "m_bDrawViewmodel", false);
            SetEntProp(iClient, Prop_Send, "m_iFOV", 120);
        } else
        {
            //PrecacheModel(sOriginalModel[iClient]);
            //SetEntityModel(iClient, sOriginalModel[iClient]);
            CS_UpdateClientModel(iClient);
            SetEntPropEnt(iClient, Prop_Send, "m_hObserverTarget", -1);
            SetEntProp(iClient, Prop_Send, "m_iObserverMode", 0);
            SetEntProp(iClient, Prop_Send, "m_bDrawViewmodel", true);
            SetEntProp(iClient, Prop_Send, "m_iFOV", 90);
        }
    }
}

public Event_PlayerTeam(Handle:hEvent, const String:name[], bool:dontBroadcast)
{
    new iClient = GetClientOfUserId(GetEventInt(hEvent, "userid"));
    if(g_bClientPreview[iClient])
    {
        ClientPreview(iClient, _, false);
    }
    if(iClient && VIP_IsClientVIP(iClient) && VIP_GetClientFeatureStatus(iClient, g_sFeature[0]) != NO_ACCESS)
    {
        new iTeam = GetEventInt(hEvent, "team");
        if (iTeam > 1 && iTeam != GetEventInt(hEvent, "oldteam"))
        {
            GetClientCookie(iClient, g_hCookieSkin[iTeam-2], g_sSkinModel[iClient], sizeof(g_sSkinModel[]));
            KvRewind(g_hKeyValues);
            if(KvJumpToKey(g_hKeyValues, g_sSkinModel[iClient], false))
            {
                if(KvGetNum(g_hKeyValues, "loaded") == 1)
                {
                    decl String:sTeam[10], iSkinTeam;
                    KvGetString(g_hKeyValues, "team", sTeam, sizeof(sTeam));
                    iSkinTeam = GetTeamFromString(sTeam);
                    if(iSkinTeam == 0 || iSkinTeam == iTeam-1)
                    {
                        KvGetString(g_hKeyValues, "model", g_sSkinModel[iClient], sizeof(g_sSkinModel[]));
                        if(g_bIsCSGO && KvGetNum(g_hKeyValues, "arms_loaded") == 1)
                        {
                            KvGetString(g_hKeyValues, "arms_model", g_sArmsModel[iClient], sizeof(g_sArmsModel[]));
                        }
                        return;
                    }
                }
            }

            g_sSkinModel[iClient][0] = '\0';
            if(g_bIsCSGO)
            {
                g_sArmsModel[iClient][0] = '\0';
            }
        }
    }
}

public VIP_OnPlayerSpawn(iClient, iTeam, bool:bIsVIP)
{
    if(g_bIsCSGO == false && bIsVIP && VIP_IsClientFeatureUse(iClient, g_sFeature[0])) SetClientVIPSkin(iClient);
}

public Event_PlayerSpawn(Handle:hEvent, const String:name[], bool:dontBroadcast)
{
    new iClient = GetClientOfUserId(GetEventInt(hEvent, "userid"));
    if(VIP_IsClientVIP(iClient) && VIP_IsClientFeatureUse(iClient, g_sFeature[0]) && IsPlayerAlive(iClient))
    {
        SetClientVIPSkin(iClient);
        SetClientVIPArms(iClient);
    }
}

SetClientVIPSkin(iClient)
{
    if(g_sSkinModel[iClient][0] != '\0')
    {
        SetEntityModel(iClient, g_sSkinModel[iClient]);
    }
}

SetClientVIPArms(iClient)
{
    if(g_sArmsModel[iClient][0] != '\0')
    {
        SetEntDataString(iClient, m_szArmsModel, g_sArmsModel[iClient], sizeof(g_sArmsModel[]));
    }
}

public Action:OnToggleItem(iClient, const String:sFeatureName[], VIP_ToggleState:OldStatus, &VIP_ToggleState:NewStatus)
{
    if(NewStatus == ENABLED)
    {
        if(GetClientTeam(iClient) > 1 && IsPlayerAlive(iClient))
        {
            SetClientVIPSkin(iClient);
            SetClientVIPArms(iClient);
        }
    }
    else
    {
        if(IsPlayerAlive(iClient)) CS_UpdateClientModel(iClient);
        //SetClientDefSkin(iClient);
    }

    return Plugin_Continue;
}

Правильно ли я его обновил? Скомпилировал на последнем sm 1.9 без ошибок и предупреждений. В меню вип есть вкладка скины, но при выборе пункта выбор скина просто закрывается меню
 
Последнее редактирование:

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • Автор ресурса
  • #1,237

Вложения

  • VIP_Skins_1.0.5.smx
    11.1 КБ · Просмотры: 9

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • Автор ресурса
  • #1,239
есть желающие сломать себе вип (потестить новую версию)?
Желательно не на основном сервере чтобы в случае (200 % вероятность) если всё сломается - это не стало проблемой.
 

Aplesin4ik

Участник
Сообщения
318
Реакции
47
есть желающие сломать себе вип (потестить новую версию)?
Желательно не на основном сервере чтобы в случае (200 % вероятность) если всё сломается - это не стало проблемой.
мне бы армор еще исправить, и к сожалению тестового серва нету (
 
Сверху Снизу