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

    Регистрация:
    24.08.15
    Сообщения:
    145
    Симпатии:
    93
    Пол:
    Мужской
    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:
    1. #include <amxmodx>
    2. #include <fakemeta>
    3. #include <hamsandwich>
    4.  
    5. new const PLUGIN[] = "Admin Weapon Skins";
    6. new const VERSION[] = "1.0";
    7. new const AUTHOR[] = "mforce";
    8.  
    9.  
    10. #define ACCESS_FLAG    ADMIN_KICK
    11.  
    12. new Trie:weaponlist;
    13.  
    14. const m_pPlayer = 41
    15. const XO_WEAPON = 4
    16.  
    17. #define get_weapon_owner(%1)        get_pdata_cbase(%1, m_pPlayer, XO_WEAPON)
    18. #define AllocString(%1)             engfunc(EngFunc_AllocString,%1)
    19.  
    20. public plugin_init() {
    21.     register_plugin(PLUGIN, VERSION, AUTHOR);
    22.     weaponlist = TrieCreate();
    23. }
    24.  
    25. public plugin_precache() {
    26.     new sBuffer[256], sFile[64], sData[2][32], pFile;
    27.     get_localinfo("amxx_configsdir", sFile, charsmax(sFile));
    28.     format(sFile, charsmax(sFile), "%s/admin_weapon_skins.ini", sFile);
    29.     pFile = fopen(sFile, "rt");
    30.     if(pFile) {      
    31.         while(!feof(pFile)) {
    32.             fgets(pFile, sBuffer, charsmax(sBuffer));
    33.             trim(sBuffer);
    34.             if(sBuffer[0] == ';') continue;
    35.             parse(sBuffer, sData[0], charsmax(sData[]), sData[1], charsmax(sData[]));
    36.  
    37.             if((containi(sData[0], "weapon_") != -1) && (containi(sData[1], ".mdl") != -1) && (!TrieKeyExists(weaponlist, sData[0]))) {
    38.                 precache_model(sData[1])
    39.                 RegisterHam(Ham_Item_Deploy, sData[0], "ItemDeploy_Post", true);
    40.                 TrieSetString(weaponlist, sData[0], sData[1])
    41.             }
    42.         }
    43.         fclose(pFile);
    44.     }
    45.     else fprintf(pFile, ";^"weapon_ak47^" ^"models/adminskins/v_ak47.mdl^"^n");
    46. }
    47.  
    48. public ItemDeploy_Post(Ent) {
    49.     if(Ent <=0)
    50.         return HAM_IGNORED;
    51.  
    52.     new id = get_weapon_owner(Ent)
    53.     if((id > 0) && (get_user_flags(id) & ACCESS_FLAG)) {
    54.         new szWeapon[32], WeaponPath[32];
    55.         get_weaponname(Ent, szWeapon, charsmax(szWeapon));
    56.      
    57.         TrieGetString(weaponlist, szWeapon, WeaponPath, charsmax(WeaponPath));
    58.         set_pev_string(id, pev_viewmodel2, AllocString(WeaponPath));
    59.     }
    60.     return HAM_IGNORED;
    61. }
    62.  
    63. public plugin_end() {
    64.     TrieDestroy(weaponlist);
    65. }
     
  2. PRoSToC0der Разработчик

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

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


    PHP:
    1. #include <amxmodx>
    2. #include <cstrike>
    3. #include <fakemeta>
    4. #include <hamsandwich>
    5.  
    6. new const PLUGIN[] = "Admin Weapon Skins";
    7. new const VERSION[] = "1.0";
    8. new const AUTHOR[] = "mforce";
    9.  
    10.  
    11. new Trie:weaponlist
    12.  
    13. #define ACCESS_FLAG    ADMIN_KICK
    14.  
    15. const m_pPlayer = 41
    16. const XO_WEAPON = 4
    17.  
    18. #define get_weapon_owner(%1)        get_pdata_cbase(%1, m_pPlayer, XO_WEAPON)
    19. #define AllocString(%1)             engfunc(EngFunc_AllocString,%1)
    20.  
    21. public plugin_init() {
    22.     register_plugin(PLUGIN, VERSION, AUTHOR);
    23. }
    24.  
    25. public plugin_precache() {
    26.     weaponlist = TrieCreate()
    27.    
    28.     new sBuffer[256], sFile[64], sData[2][32], pFile;
    29.     get_localinfo("amxx_configsdir", sFile, charsmax(sFile));
    30.     format(sFile, charsmax(sFile), "%s/admin_weapon_skins.ini", sFile);
    31.     pFile = fopen(sFile, "rt");
    32.     if(pFile) {      
    33.         while(!feof(pFile)) {
    34.             fgets(pFile, sBuffer, charsmax(sBuffer));
    35.             trim(sBuffer);
    36.             if(sBuffer[0] == ';') continue;
    37.             parse(sBuffer, sData[0], charsmax(sData[]), sData[1], charsmax(sData[]));
    38.  
    39.             if((containi(sData[0], "weapon_") != -1) && (containi(sData[1], ".mdl") != -1) && (!TrieKeyExists(weaponlist, sData[0]))) {
    40.                 precache_model(sData[1])
    41.                 RegisterHam(Ham_Item_Deploy, sData[0], "ItemDeploy_Post", true);
    42.                 TrieSetString(weaponlist, sData[0], sData[1])
    43.             }
    44.         }
    45.         fclose(pFile);
    46.     }
    47.     else fprintf(pFile, ";^"weapon_ak47^" ^"models/adminskins/v_ak47.mdl^"^n");
    48. }
    49.  
    50. public ItemDeploy_Post(Ent) {
    51.     if(Ent <=0)
    52.         return HAM_IGNORED;
    53.  
    54.     new id = get_weapon_owner(Ent)
    55.     if((id > 0) && (get_user_flags(id) & ACCESS_FLAG)) {
    56.         new szWeapon[32], WeaponPath[32];
    57.         get_weaponname(cs_get_weapon_id(Ent), szWeapon, charsmax(szWeapon));
    58.        
    59.         TrieGetString(weaponlist, szWeapon, WeaponPath, charsmax(WeaponPath));
    60.         set_pev_string(id, pev_viewmodel2, AllocString(WeaponPath));
    61.     }
    62.     return HAM_IGNORED;
    63. }
    64.  
    65. public plugin_end() {
    66.     TrieDestroy(weaponlist);
    67. }
     
  4. neygomon Его Темнейшество :j Команда форума

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

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