Статус темы:
Закрыта.
  1. mforce Пользователь

    Регистрация:
    24.08.15
    Сообщения:
    145
    Симпатии:
    96
    Пол:
    Мужской
    It happens to all Trie natives. How to solve this problem?

    L 04/16/2016 - 14:25:32: Invalid trie handle provided (0)
    L 04/16/2016 - 14:25:32: [AMXX] Run time error 10 (plugin "admin_weapon_skins.amxx") (native "TrieKeyExists") - debug not enabled!
    L 04/16/2016 - 14:25:32: [AMXX] To enable debug mode, add "debug" after the plugin name in plugins.ini (without quotes).


    PHP:
    #include <amxmodx>
    #include <fakemeta>
    #include <hamsandwich>

    new const PLUGIN[] = "Admin Weapon Skins";
    new const 
    VERSION[] = "1.0";
    new const 
    AUTHOR[] = "mforce";


    #define ACCESS_FLAG    ADMIN_KICK

    new Trie:weaponlist;

    const 
    m_pPlayer 41
    const XO_WEAPON 4

    #define get_weapon_owner(%1)        get_pdata_cbase(%1, m_pPlayer, XO_WEAPON)
    #define AllocString(%1)             engfunc(EngFunc_AllocString,%1)

    public plugin_init() {
        
    register_plugin(PLUGINVERSIONAUTHOR);
        
    weaponlist TrieCreate();
    }

    public 
    plugin_precache() {
        new 
    sBuffer[256], sFile[64], sData[2][32], pFile;
        
    get_localinfo("amxx_configsdir"sFilecharsmax(sFile));
        
    format(sFilecharsmax(sFile), "%s/admin_weapon_skins.ini"sFile);
        
    pFile fopen(sFile"rt");
        if(
    pFile) {      
            while(!
    feof(pFile)) {
                
    fgets(pFilesBuffercharsmax(sBuffer));
                
    trim(sBuffer);
                if(
    sBuffer[0] == ';') continue;
                
    parse(sBuffersData[0], charsmax(sData[]), sData[1], charsmax(sData[]));

                if((
    containi(sData[0], "weapon_") != -1) && (containi(sData[1], ".mdl") != -1) && (!TrieKeyExists(weaponlistsData[0]))) {
                    
    precache_model(sData[1])
                    
    RegisterHam(Ham_Item_DeploysData[0], "ItemDeploy_Post"true);
                    
    TrieSetString(weaponlistsData[0], sData[1])
                }
            }
            
    fclose(pFile);
        }
        else 
    fprintf(pFile";^"weapon_ak47^" ^"models/adminskins/v_ak47.mdl^"^n");
    }

    public 
    ItemDeploy_Post(Ent) {
        if(
    Ent <=0)
            return 
    HAM_IGNORED;

        new 
    id get_weapon_owner(Ent)
        if((
    id 0) && (get_user_flags(id) & ACCESS_FLAG)) {
            new 
    szWeapon[32], WeaponPath[32];
            
    get_weaponname(EntszWeaponcharsmax(szWeapon));
          
            
    TrieGetString(weaponlistszWeaponWeaponPathcharsmax(WeaponPath));
            
    set_pev_string(idpev_viewmodel2AllocString(WeaponPath));
        }
        return 
    HAM_IGNORED;
    }

    public 
    plugin_end() {
        
    TrieDestroy(weaponlist);
    }
     
    grusha нравится это.
  2. PRoSToC0der Разработчик

    Регистрация:
    22.02.16
    Сообщения:
    338
    Симпатии:
    148
    Пол:
    Мужской
    Your Trie should be created in plugin_precache, because plugin_precache is called earlier than plugin_init.
     
    mforce нравится это.
  3. mforce Пользователь

    Регистрация:
    24.08.15
    Сообщения:
    145
    Симпатии:
    96
    Пол:
    Мужской
    Problem solved, thanks :)


    PHP:
    #include <amxmodx>
    #include <cstrike>
    #include <fakemeta>
    #include <hamsandwich>

    new const PLUGIN[] = "Admin Weapon Skins";
    new const 
    VERSION[] = "1.0";
    new const 
    AUTHOR[] = "mforce";


    new 
    Trie:weaponlist

    #define ACCESS_FLAG    ADMIN_KICK

    const m_pPlayer 41
    const XO_WEAPON 4

    #define get_weapon_owner(%1)        get_pdata_cbase(%1, m_pPlayer, XO_WEAPON)
    #define AllocString(%1)             engfunc(EngFunc_AllocString,%1)

    public plugin_init() {
        
    register_plugin(PLUGINVERSIONAUTHOR);
    }

    public 
    plugin_precache() {
        
    weaponlist TrieCreate()
       
        new 
    sBuffer[256], sFile[64], sData[2][32], pFile;
        
    get_localinfo("amxx_configsdir"sFilecharsmax(sFile));
        
    format(sFilecharsmax(sFile), "%s/admin_weapon_skins.ini"sFile);
        
    pFile fopen(sFile"rt");
        if(
    pFile) {       
            while(!
    feof(pFile)) {
                
    fgets(pFilesBuffercharsmax(sBuffer));
                
    trim(sBuffer);
                if(
    sBuffer[0] == ';') continue;
                
    parse(sBuffersData[0], charsmax(sData[]), sData[1], charsmax(sData[]));

                if((
    containi(sData[0], "weapon_") != -1) && (containi(sData[1], ".mdl") != -1) && (!TrieKeyExists(weaponlistsData[0]))) {
                    
    precache_model(sData[1])
                    
    RegisterHam(Ham_Item_DeploysData[0], "ItemDeploy_Post"true);
                    
    TrieSetString(weaponlistsData[0], sData[1])
                }
            }
            
    fclose(pFile);
        }
        else 
    fprintf(pFile";^"weapon_ak47^" ^"models/adminskins/v_ak47.mdl^"^n");
    }

    public 
    ItemDeploy_Post(Ent) {
        if(
    Ent <=0)
            return 
    HAM_IGNORED;

        new 
    id get_weapon_owner(Ent)
        if((
    id 0) && (get_user_flags(id) & ACCESS_FLAG)) {
            new 
    szWeapon[32], WeaponPath[32];
            
    get_weaponname(cs_get_weapon_id(Ent), szWeaponcharsmax(szWeapon));
           
            
    TrieGetString(weaponlistszWeaponWeaponPathcharsmax(WeaponPath));
            
    set_pev_string(idpev_viewmodel2AllocString(WeaponPath));
        }
        return 
    HAM_IGNORED;
    }

    public 
    plugin_end() {
        
    TrieDestroy(weaponlist);
    }
     
    grusha нравится это.
  4. neygomon Его Темнейшество :j Команда форума

    Регистрация:
    26.02.15
    Сообщения:
    7.925
    Симпатии:
    4.323
    Пол:
    Мужской
    mforce, thread close?
     
  5. mforce Пользователь

    Регистрация:
    24.08.15
    Сообщения:
    145
    Симпатии:
    96
    Пол:
    Мужской
    if you need to
     
Статус темы:
Закрыта.