Проблема с Tag Mismatch

Тема в разделе "Программирование / Скриптинг", создана пользователем CrazyHackGUT, 1 окт 2015.

  1. CrazyHackGUT

    CrazyHackGUT Меня здесь нет

    Сообщения:
    814
    Симпатии:
    518
    Вообщем, следующая проблема.
    По заказу одного сервера, делаю VIP-плагин. При разработке ядра, на котором всё будет завязано, случился ступор.
    Есть код объявления хэндла для массивов с модулями к ядру:
    Код:
    enum VIPMenuEnum
    {
    	PluginName,
    	PluginCommand,
    	PluginReturnMenu,
    	Plugin_FileName
    }
    
    new Handle:VIP_Menu_Array[VIPMenuEnum];
    Проблема следующая. При попытке что-либо сделать с этими хэндлами (например, создать массив в VIP_Menu_Array[PluginName]) и закомпилировать итоговый плагин, компилятор орёт:
    Код:
    //SourceMod Batch Compiler
    // by the SourceMod Dev Team
    
    
    //// VIP_Core.sp
    //
    // C:\Documents and Settings\Administrator\Desktop\scripting\VIP\VIP_Core.sp(34)
     : warning 213: tag mismatch
    // C:\Documents and Settings\Administrator\Desktop\scripting\VIP\VIP_Core.sp(35)
     : warning 213: tag mismatch
    <... тут много других похожих ошибок...>
    // C:\Documents and Settings\Administrator\Desktop\scripting\VIP\VIP_Core.sp(254
    ) : warning 213: tag mismatch
    // C:\Documents and Settings\Administrator\Desktop\scripting\VIP\VIP_Core.sp(258
    ) : warning 213: tag mismatch
    // Code size:             8080 bytes
    // Data size:             3732 bytes
    // Stack/heap size:      16384 bytes
    // Total requirements:   28196 bytes
    //
    // 25 Warnings.
    //
    // Compilation Time: 0,12 sec
    // ----------------------------------------
    
    Press enter to exit ...
    А теперь вопрос: как правильно объявить подобные хэндлы для массивов? До объявления такого метода перечисления хэндлов, варнингов не было.
     
  2. R1KO

    R1KO Супер-модератор

    Сообщения:
    5.970
    Симпатии:
    2.977
    PHP:
    #define PLUGIN_NAME                0
    #define PLUGIN_COMMAND            1
    #define PLUGIN_RETURN_MENU        2
    #define PLUGIN_FILE_NAME        3
    #define PLUGIN_INFO_SIZE        4

    new Handle:VIP_Menu_Array[PLUGIN_INFO_SIZE];

    public 
    OnPluginStart()
    {
        
    VIP_Menu_Array[PLUGIN_NAME] = CreateArray();
    }
     
  3. CrazyHackGUT

    CrazyHackGUT Меня здесь нет

    Сообщения:
    814
    Симпатии:
    518
    R1KO, Спасибо. Это работает.
     
  4. rom4s

    rom4s

    Сообщения:
    100
    Симпатии:
    31
    Код:
    	[B]Handle:[/B]VIP_Menu_Array[PluginName] = CreateArray(); 
    // -- или, начиная с SM 1.7 --
    	[B]view_as<Handle>[/B]VIP_Menu_Array[PluginName] = CreateArray(); 
    // -- или, попробуйте объявить сразу в Enum нужный тип --
    enum VIPMenuEnum
    {
    	[B]Handle:[/B]PluginName,
    	...
    }