Пользователи, просматривающие тему (Пользователей: 0, Гостей: 0)

  1. Mistrick Разработчик

    Регистрация:
    13.07.15
    Сообщения:
    217
    Симпатии:
    133
    Пол:
    Мужской
    Weapon Skin System
    Автор: Mistrick
    Версия: v0.5 от 20.12.2016

    Описание:
    Позволяет каждому игроку выбрать скин для оружия.
    Скин сохраняется в оружии, что позволяет после его дропа и подбора сохранить измененную модель.
    После выбора скина в меню, он заменит текущий, если у вас есть данное оружие.
    Команды:
    /skins - вывод меню со скинами.
    /skinreset - сброс модели для оружия.
    Настройки:
    PHP:
    #define DEFAULT_SKIN_MENU // включает использование стандартных команд для смены модели
    weapon_models_api.inc
    PHP:
    enum
    {
       
    WEAPON_CAN_PICKUP,
       
    WEAPON_BLOCK_PICKUP
    };

    enum
    {
       
    WEAPON_MODEL_IGNORED,
       
    WEAPON_MODEL_CHANGED
    };

    enum
    {
       
    ADD_BY_WEAPONBOX,
       
    ADD_BY_ARMORY_ENTITY,
       
    ADD_BY_BUYZONE
    };

    /**
     * Called when weapon deployed.
     *
     * @param id                   Player index.
     * @param weapon               Weapon entity index.
     * @param weaponid               CSW_ const.
     */
    forward cs_weapon_deploy(idweaponweaponid);

    /**
     * Called when weapon holstered.
     *
     * @param id                   Player index.
     * @param weapon               Weapon entity index.
     * @param weaponid               CSW_ const.
     */
    forward cs_weapon_holster(idweaponweaponid);

    /**
     * Called when weapon droped.
     * Forward should return WEAPON_BLOCK_PICKUP for block pickup
     *
     * @param id                   Player index.
     * @param weaponbox               Weaponbox entity index.
     * @param weapon               Weapon entity index.
     * @param weaponid               CSW_ const.
     */
    forward cs_weapon_can_pickup(idweaponboxweaponweaponid);

    /**
     * Called when weapon droped.
     * Forward should return WEAPON_MODEL_CHANGED if weaponbox model changed
     *
     * @param id                   Player index.
     * @param weaponbox               Weaponbox entity index.
     * @param weapon               Weapon entity index.
     * @param weaponid               CSW_ const.
     */
    forward cs_weapon_drop(idweaponboxweaponweaponid);

    /**
     * Called when weapon added to player.
     *
     * @param id                   Player index.
     * @param weapon               Weapon entity index.
     * @param weaponid               CSW_ const.
     * @param type                   Add type.
     */
    forward cs_weapon_add_to_player(idweaponweaponidtype);
    weapon_skin_system.inc
    PHP:
    /**
     * Called when load skins from file.
     *
     * @param index                       Skin index
     * @param weaponid                   Skin CSW_ const
     * @param name                       Skin name
     */
    forward wss_loaded_skin(indexweaponidname[]);

    /**
     * Get weapon skin.
     *
     * @param weapon                   Weapon enity index
     */
    native wss_get_weapon_skin_index(weapon);

    /**
     * Get skin name by index.
     *
     * @param skin                       Skin index
     * @param name                       String for name
     * @param len                       Max string len
     */
    native wss_get_skin_name(skinname[], len);

    /**
     * Change player weapon skin.
     * If weaponid is NULL then reset all player skins.
     *
     * @param id                       Player index
     * @param weaponid                   Weapon CSW_ const
     * @param skin_index               Skin index from wss_loaded_skin()
     */
    native wss_set_user_skin(idweaponidskin_index 0);
    PHP:
    #include <amxmodx>
    #include <weapon_skin_system>

    #define PLUGIN "Weapon Skins: Addon"
    #define VERSION "0.1"
    #define AUTHOR "Mistrick"

    #pragma semicolon 1

    enum SkinInfo
    {
       
    SkinIndex,
       
    SkinWeaponid
    };

    enum Skins
    {
       
    SKIN_FRONTSIDE
    };

    new 
    g_iWeaponSkins[Skins][SkinInfo];

    public 
    plugin_init()
    {
       
    register_plugin(PLUGINVERSIONAUTHOR);
    }

    public 
    wss_loaded_skin(indexweaponidname[])
    {
       if(
    equal(name"AK-47 Frontside"))
       {
           
    g_iWeaponSkins[SKIN_FRONTSIDE][SkinIndex] = index;
           
    g_iWeaponSkins[SKIN_FRONTSIDE][SkinWeaponid] = weaponid;
       }
    }

    public 
    client_putinserver(id)
    {
       if(
    is_user_steam(id))
       {
           
    wss_set_user_skin(idg_iWeaponSkins[SKIN_FRONTSIDE][SkinWeaponid], g_iWeaponSkins[SKIN_FRONTSIDE][SkinIndex]);
       }
    }

    stock is_user_steam(id)
    {
       static 
    dp_pointer;
       if(
    dp_pointer || (dp_pointer get_cvar_pointer("dp_r_id_provider")))
       {
           
    server_cmd("dp_clientinfo %d"id); server_exec();
           return (
    get_pcvar_num(dp_pointer) == 2) ? true false;
       }
       return 
    false;
    }

     

    Вложения:

    Последнее редактирование: 19.12.16
    Cloud, kpykpy, Le$hiy и 9 другим нравится это.
  2. KoPa6JIuK

    Регистрация:
    27.02.15
    Сообщения:
    671
    Симпатии:
    52
    Пол:
    Мужской
    Код:
    version
    Protocol version 48
    Exe version 1.6.3.7 (cstrike)
    Exe build: 22:24:29 Apr 21 2016 (740)
    ReHLDS API version 2.11
    Код:
     [  1] Admin Base              1.8.2       AMXX Dev Team     admin.amxx       ru
    nning
    [  2] unknown                 unknown     unknown           weapon_skin_sys  er
    ror
    [  3] Weapon Models API       0.4.0-15    Mistrick          weapon_models_a  ru
    nning
    [  4] Admin Commands          1.8.2       AMXX Dev Team     admincmd.amxx    ru
    nning
    [  5] Slots Reservation       1.8.2       AMXX Dev Team     adminslots.amxx  ru
    nning
    [  6] Menus Front-End         1.8.1.3746  AMXX Dev Team     menufront.amxx   ru
    nning
    [  7] Commands Menu           1.8.2       AMXX Dev Team     cmdmenu.amxx     ru
    nning
    [  8] Players Menu            1.8.2       AMXX Dev Team     plmenu.amxx      ru
    nning
    [  9] Maps Menu               1.8.2       AMXX Dev Team     mapsmenu.amxx    ru
    nning
    [ 10] Admin Chat              1.8.2       AMXX Dev Team     adminchat.amxx   ru
    nning
    [ 11] Admin Votes             1.8.2       AMXX Dev Team     adminvote.amxx   ru
    nning
    [ 12] NextMap                 1.8.2       AMXX Dev Team     nextmap.amxx     ru
    nning
    [ 13] Nextmap Chooser         1.8.2       AMXX Dev Team     mapchooser.amxx  ru
    nning
    [ 14] TimeLeft                1.8.2       AMXX Dev Team     timeleft.amxx    ru
    nning
    [ 15] Reset_Score             1.0         DARTHMOON         Resetscore.amxx  ru
    nning
    [ 16] Afk Control             0.5.1       neygomon          afk_control.amx  ru
    nning
    [ 17] Ping Control            1.31        neygomon          Ping_Control.am  ru
    nning
    [ 18] Screen Fade             0.1         neygomon          Screen_Fade.amx  ru
    nning
    [ 19] AutoJoin Team           1.0         neygomon          autojoin_team.a  ru
    nning
    [ 20] Lite Translit           2.8         neygomon          lite_translit.a  ru
    nning
    (  2) Error: File is empty!
    20 plugins, 19 running
    
    Код:
    Currently loaded modules:
          name                    version     author               status
    [ 1] MySQL                   1.8.2-dev   AMX Mod X Dev Team   running
    [ 2] Fun                     1.8.2-dev   AMX Mod X Dev Team   running
    [ 3] Engine                  1.8.2-dev   AMX Mod X Dev Team   running
    [ 4] FakeMeta                1.8.2-dev   AMX Mod X Dev Team   running
    [ 5] Sockets                 1.8.2-dev   HLSW Dev Team        running
    [ 6] RegEx                   1.8.2-dev   AMX Mod X Dev Team   running
    [ 7] nVault                  1.8.2-dev   AMX Mod X Dev Team   running
    [ 8] CStrike                 1.8.2-dev   AMX Mod X Dev Team   running
    [ 9] CSX                     1.8.2-dev   AMX Mod X Dev Team   running
    [10] Ham Sandwich            1.8.2-dev   AMX Mod X Dev Team   running
    [11] hackdetector            0.15.305m.  AGHL.RU Dev Team     running
    11 modules, 11 correct
    


    Компилил под 1.8.2

    Код:
    L 12/15/2016 - 21:37:58: Info (map "css_cache") (file "addons/amxmodx/logs/error_20161215.log")
    L 12/15/2016 - 21:37:58: [AMXX] Plugin ("weapon_skin_system.amxx") is setting itself as failed.
    L 12/15/2016 - 21:37:58: [AMXX] Plugin says: File is empty!
    L 12/15/2016 - 21:37:58: [AMXX] Displaying debug trace (plugin "weapon_skin_system.amxx")
    L 12/15/2016 - 21:37:58: [AMXX] Run time error 1: forced exit
    L 12/15/2016 - 21:37:58: [AMXX]    [0] weapon_skin_system.sma::plugin_precache (line 122)
     
  3. Mistrick Разработчик

    Регистрация:
    13.07.15
    Сообщения:
    217
    Симпатии:
    133
    Пол:
    Мужской
    @KoPa6JIuK, написано же, что у вас пустой файл.
     
  4. msmrbtsk

    Регистрация:
    29.03.15
    Сообщения:
    360
    Симпатии:
    96
    Пол:
    Мужской
    @Mistrick, за плату сделаете дополнение которое позволит получать игрокам сrины за звание AES/Army Ranks Ultimate ?
     
  5. Mistrick Разработчик

    Регистрация:
    13.07.15
    Сообщения:
    217
    Симпатии:
    133
    Пол:
    Мужской
    @msmrbtsk, не занимаюсь заказами.
     
  6. msmrbtsk

    Регистрация:
    29.03.15
    Сообщения:
    360
    Симпатии:
    96
    Пол:
    Мужской
    @Mistrick, ну тогда подумай на свое усмотрение, людям это будет интересно и актуально, многие хотят такое дополнение.
     
  7. Mistrick Разработчик

    Регистрация:
    13.07.15
    Сообщения:
    217
    Симпатии:
    133
    Пол:
    Мужской
    @msmrbtsk, я предоставляю возможность для создания таких дополнений. Причем вам достаточно написать 50-100 строк в дополнительном плагине, для реализации ваших хотелок. И то если делать тупо по определенному уровню, без какой-либо привязки к конкретным игрокам, нужно и того меньше. Даже в примере, который в первом посте уже достаточно. Заменяете is_user_steam() на проверку уровня в нужной вам статистике и всё. Конечно если игрок апнет нужный уровень в процессе игры, то ему скин не выдаст. Нужен дополнительный код для отлова данного момента.
     
  8. msmrbtsk

    Регистрация:
    29.03.15
    Сообщения:
    360
    Симпатии:
    96
    Пол:
    Мужской
    @Mistrick, я в написании плагинов ровным счетом ноль. Поэтому собственно и обращаюсь к тебе, или к кому-то еще кто сможет реализовать данную фишку.
     
  9. BaJIepbI4

    Регистрация:
    12.05.15
    Сообщения:
    1.110
    Симпатии:
    220
    Пол:
    Мужской
    Skype:
    BaJIepbI4_sky
    @Mistrick , ты делаешь отличные качественные вещи (чатменеджер, мапменеджер и т.д), за что огромное спасибо, но в данном случае мне не очень понятно на кого расчитан данный продукт, ведь 95% серверодержателей не шарят в скриптинге, поэтому слова "Заменяете is_user_steam() на проверку уровня в нужной вам статистике и всё. " для нас как инструкция на китайском :)
    К тому же если брать твое апи и идти к другому скриптеру с просьбой допилить под "наши хотелки" (а они довольно распространенные и стандартные - дамаг для определенных скинов, скины под определенный уровень ранк-системы и т.д. - собсвтенно для этих целей то и создавался данный продукт), врят ли он будет разбираться в чужом коде, так как ему будет проще по своим наработкам выполнить ТЗ.
    В общем от имени всем серверодержателей я хочу призвать тебя все же сделать через конфиг или отдельными двумя плагинами интеграцию с AES (выдачу скинов под определенный уровень), вкючение/отключение повышенного урона (в плагине через define или через кончиг) для определенного скина ну и доступ к меню для определенного флага.
    В любом случае спасибо! :)
     
    umic нравится это.
  10. Mistrick Разработчик

    Регистрация:
    13.07.15
    Сообщения:
    217
    Симпатии:
    133
    Пол:
    Мужской
    @BaJIepbI4, если я развиваю API в данных плагинах, значит плагин рассчитан на тех, кто может его использовать.
    Чтобы использовать API не нужно как-либо менять мои плагины. Тем самым не нужно разбираться в моем коде. Есть функция "выдать скин", выдаем скин и не паримся, что она там сделала.
    Если скриптер пишет "ой, тут в коде разбираться надо", когда в плагине есть API. Значит данный скриптер просто не умеет использовать созданные другими скриптерами функции.

    Плагин сделан исключительно для скриптеров. Вот они и могут сделать что-то под ваши хотелки. А я лишь могу расширить предоставляемые возможности.
     
    gudaus, MakapoH., neygomon и ещё 1-му нравится это.
  11. Mistrick Разработчик

    Регистрация:
    13.07.15
    Сообщения:
    217
    Симпатии:
    133
    Пол:
    Мужской
    Обновил.
    - Добавлен форвард cs_weapon_holster()
    - Добавлен натив wss_get_skin_name()
     
  12. Mistrick Разработчик

    Регистрация:
    13.07.15
    Сообщения:
    217
    Симпатии:
    133
    Пол:
    Мужской
    Обновил.
    - Добавлен форвард cs_weapon_can_pickup()
    - Добавлены константы для более понятного написания кода.
     
  13. foxy

    Регистрация:
    30.01.16
    Сообщения:
    2
    Симпатии:
    0
    Пол:
    Мужской
    @Mistrick, скажите пожалуйста, для какой версии HLDS/ReHLDS? Или работает и там и там?
     
  14. KoPa6JIuK

    Регистрация:
    27.02.15
    Сообщения:
    671
    Симпатии:
    52
    Пол:
    Мужской
    @foxy, на обеих версиях) По крайне мере на ReHLDS у меня стоит