Вопрос по плагину Weapons Skins Manager

Swed48

Пользователь
Регистрация
4 Апр 2020
Сообщения
24
Симпатии
0
OS
Linux
Amx Mod X
AMXX 1.9.0
Билд
ReHLDS version: 3.3.0.604-dev
Metamod
v1.20
Meta модули
Код:
description      stat pend  file                      vers               src  load  unload
[ 1] SafeNameAndChat  RUN   -    SafeNameAndChat.so        v1.1               ini  ANY   ANY
[ 2] Reunion          RUN   -    reunion_mm_i386.so        v0.1.0.92c         ini  Start Never
[ 3] AMX Mod X        RUN   -    amxmodx_mm_i386.so        v1.9.0.5241        ini  Start ANY
[ 4] VoiceTranscoder  RUN   -    VoiceTranscoder.so        v2017RC5           ini  ANY   ANY
[ 5] ReAuthCheck      RUN   -    reauthcheck_mm_i386.so    v0.1.6             ini  Start Never
[ 6] ReSRDetector     RUN   -    resrdetector_mm_i386.so   v0.1.0             ini  Chlvl ANY
[ 7] Rechecker        RUN   -    rechecker_mm_i386.so      v2.5               ini  Chlvl ANY
[ 8] ReSemiclip       RUN   -    resemiclip_mm_i386.so     v2.3.9             ini  Chlvl ANY
[ 9] WHBlocker        RUN   -    whblocker_mm_i386.so      v1.5.696           ini  Chlvl ANY
[10] MySQL            RUN   -    mysql_amxx_i386.so        v1.9.0.5241        pl3  ANY   ANY
[11] AuthEmu          RUN   -    authemu_amxx_i386.so      v4.2.12.311-dev+m  pl3  ANY   Never
[12] FakeMeta         RUN   -    fakemeta_amxx_i386.so     v1.9.0.5241        pl3  ANY   ANY
[13] CStrike          RUN   -    cstrike_amxx_i386.so      v1.9.0.5241        pl3  ANY   ANY
[14] Engine           RUN   -    engine_amxx_i386.so       v1.9.0.5241        pl3  ANY   ANY
[15] Ham Sandwich     RUN   -    hamsandwich_amxx_i386.so  v1.9.0.5241        pl3  ANY   ANY
[16] ReAPI            RUN   -    reapi_amxx_i386.so        v5.12.0.192-dev    pl3  ANY   Never
16 plugins, 16 running
Плагины
Код:
name                    version     author            file             status 

[  1] CSStatsX SQL            0.7.4+2     serfreeman1337    csstatsx_sql.am  running
[  2] CSXSQL: Onlinetime Awa  0.2         serfreeman1337    csstatsx_playti  running
[  3] AES: StatsX             0.5+1       serfreeman1337    aes_statsx_cstr  running
[  4] AuthEmu API             1.0         Dev-MS Team       authemu.amxx     running
[ 5] Simple Admin Models     1.0         WhiteBlue         simpleadminmode  running
[ 11] Weapons Skins Manager   0.0.1       Vaqtincha         weapons_skin_pl  running
[ 12] Admin Commands          1.9.0.5241  AMXX Dev Team     admincmd.amxx    running
[ 13] Admin Help              1.9.0.5241  AMXX Dev Team     adminhelp.amxx   running
[ 14] Slots Reservation       1.9.0.5241  AMXX Dev Team     adminslots.amxx  running
[ 15] Menus Front-End         1.9.0.5241  AMXX Dev Team     menufront.amxx   running
[ 16] Commands Menu           1.9.0.5241  AMXX Dev Team     cmdmenu.amxx     running
[ 17] Players Menu            1.9.0.5241  AMXX Dev Team     plmenu.amxx      running
[ 18] Maps Menu               1.9.0.5241  AMXX Dev Team     mapsmenu.amxx    running
[ 19] Plugin Menu             1.9.0.5241  AMXX Dev Team     pluginmenu.amxx  running
[ 20] Admin Chat              1.9.0.5241  AMXX Dev Team     adminchat.amxx   running
[ 21] Anti Flood              1.9.0.5241  AMXX Dev Team     antiflood.amxx   running
[ 22] Scrolling Message       1.9.0.5241  AMXX Dev Team     scrollmsg.amxx   running
[ 23] Info. Messages          1.9.0.5241  AMXX Dev Team     imessage.amxx    running
[ 24] Admin Votes             1.9.0.5241  AMXX Dev Team     adminvote.amxx   running
[ 25] NextMap                 1.9.0.5241  AMXX Dev Team     nextmap.amxx     running
[ 26] Nextmap Chooser         1.9.0.5241  AMXX Dev Team     mapchooser.amxx  running
[ 27] TimeLeft                1.9.0.5241  AMXX Dev Team     timeleft.amxx    running
[ 28] Pause Plugins           1.9.0.5241  AMXX Dev Team     pausecfg.amxx    running
[ 29] Stats Configuration     1.9.0.5241  AMXX Dev Team     statscfg.amxx    running
[ 30] StatsX                  1.9.0.5263  AMXX Dev Team     statsx.amxx      running
[ 31] Advanced Experience Sy  0.5.9 [REA  serfreeman1337/s  aes_main.amxx    running
[ 32] AES: CStrike Addon      0.5.9 [REA  serfreeman1337/s  aes_exp_cstrike  running
[ 33] AES: Informer           0.5.9 [REA  serfreeman1337/s  aes_informer.am  running
[ 34] AES: Admin Tools        0.5.9 [REA  serfreeman1337/s  aes_exp_editor.  running
[ 35] AES: Bonus System       0.5.9 Vega  serfreeman1337/s  aes_bonus_syste  running
[ 36] AES: Bonus CSTRIKE      0.5.9.1 [R  serfreeman1337/s  aes_bonus_cstri  running
[ 37] AES: Status Info        0.1         serfreeman1337    aes_status_info  running
[ 38] AES Bonus: Flags        0.1         Sonyx             aes_bonus_flags  running
Amxx Модули
Код:
Список загруженных модулей:
Наименовани  верси  Автор           Состо
MySQL                   1.9.0.5241  AMX Mod X Dev Team   running  
AuthEmu                 4.2.12.311  Dev-MS.ru            running  
FakeMeta                1.9.0.5241  AMX Mod X Dev Team   running  
CStrike                 1.9.0.5241  AMX Mod X Dev Team   running  
JSON                    1.9.0.5241  AMX Mod X Dev Team   running  
Engine                  1.9.0.5241  AMX Mod X Dev Team   running  
Ham Sandwich            1.9.0.5241  AMX Mod X Dev Team   running  
dummy_csx               1.0         AGHL.RU Dev Team     running  
ReAPI                   5.12.0.192  Asmodai & s1lent     running  
Всего 9 модулей
Ошибка
Код:
-
Исходник
Код:
// Copyright © 2016 Vaqtincha
/******************************************************************
*    Credits: to
*
*    - ConnorMcLeod for plugin "Weapon Models"
*
*******************************************************************/

#define VERSION "0.0.1"

#define MAX_MODEL_LENGTH     64
#define MAX_PATH_LENGTH     128
#define MAX_PLAYERS            32
#define MAX_PARAMETERS        4

#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>

#define AllocString(%1)         engfunc(EngFunc_AllocString,%1)
#define SetModel(%1,%2)         engfunc(EngFunc_SetModel,%1,%2)
#define IsPlayer(%1)            (1 <= %1 <= g_iMaxPlayers)

new Trie:g_tViewModels
new Trie:g_tWeaponModels
new Trie:g_tWorldModels
new g_iAccess, g_iMaxPlayers

public plugin_precache()
{
    new szConfigFile[MAX_PATH_LENGTH], szMsg[128]
    get_localinfo("amxx_configsdir", szConfigFile, charsmax(szConfigFile))
    add(szConfigFile, charsmax(szConfigFile), "/weapons_skins.ini")

    if(!file_exists(szConfigFile))
    {
        formatex(szMsg, charsmax(szMsg), "[ERROR] Config file ^"%s^" not found!", szConfigFile)
        set_fail_state(szMsg)
        return
    }
    new iFilePointer = fopen(szConfigFile, "rt")
    if(!iFilePointer)
    {
        return
    }

    new Trie:tRegisterWeaponDeploy = TrieCreate()
    new szDatas[192], szSetting[12], szSymb[3], szFlags[32]
    new szWeaponClass[32]
    new szViewModel[MAX_MODEL_LENGTH], szWeaponModel[MAX_MODEL_LENGTH], szWorldModel[MAX_MODEL_LENGTH]
    new szOldWorldModel[MAX_MODEL_LENGTH]

    while(!feof(iFilePointer))
    {
        fgets(iFilePointer, szDatas, charsmax(szDatas))
        trim(szDatas)
        if(!szDatas[0] || szDatas[0] == ';' || szDatas[0] == '#')
        {
            continue
        }
        if(equal(szDatas, "AccessFlag", 10))
        {
            parse(szDatas, szSetting, charsmax(szSetting), szSymb, charsmax(szSymb), szFlags, charsmax(szFlags))
            g_iAccess = read_flags(szFlags)
            continue
        }
        if(parse(szDatas, szWeaponClass, charsmax(szWeaponClass),
        szViewModel, charsmax(szViewModel), szWeaponModel, charsmax(szWeaponModel),
        szWorldModel, charsmax(szWorldModel)) == MAX_PARAMETERS)
        {
            if(!TrieKeyExists(tRegisterWeaponDeploy, szWeaponClass))
            {
                TrieSetCell
                (
                    tRegisterWeaponDeploy,
                    szWeaponClass,
                    RegisterHam(Ham_Item_Deploy, szWeaponClass, "ItemDeploy_Post", true)
                )
            }
            format(szViewModel, charsmax(szViewModel), "models/%s.mdl", szViewModel)
            if(file_exists(szViewModel))
            {
                if(!g_tViewModels)
                {
                    g_tViewModels = TrieCreate()
                }
                TrieSetCell(g_tViewModels, szWeaponClass, AllocString(szViewModel))
                precache_model(szViewModel)
            }
            format(szWeaponModel, charsmax(szWeaponModel), "models/%s.mdl", szWeaponModel)
            if(file_exists(szWeaponModel))
            {
                if(!g_tWeaponModels)
                {
                    g_tWeaponModels = TrieCreate()
                }
                TrieSetCell(g_tWeaponModels, szWeaponClass, AllocString(szWeaponModel))
                precache_model(szWeaponModel)
            }
            format(szWorldModel, charsmax(szWorldModel), "models/%s.mdl", szWorldModel)
            if(file_exists(szWorldModel))
            {
                if(!g_tWorldModels)
                {
                    g_tWorldModels = TrieCreate()
                }
                if(szWeaponClass[10] == 'n') // weapon_mp5navy
                {
                    // replace(szWeaponClass, charsmax(szWeaponClass), "navy", "")
                    szWeaponClass[10] = EOS
                }
                formatex(szOldWorldModel, charsmax(szOldWorldModel), "models/w_%s.mdl", szWeaponClass[7])
                if(!TrieKeyExists(g_tWorldModels, szOldWorldModel))
                {
                    TrieSetString(g_tWorldModels, szOldWorldModel, szWorldModel)
                    precache_model(szWorldModel)
                }
            }
        }
    }
    fclose(iFilePointer)
    TrieDestroy(tRegisterWeaponDeploy)
}

public plugin_init()
{
    register_plugin("Weapons Skins Manager", VERSION, "Vaqtincha")

    if(g_tWorldModels)
    {
        register_forward(FM_SetModel, "SetModel_Pre", 0)
    }
    g_iMaxPlayers = get_maxplayers()
}

public ItemDeploy_Post(wEnt)
{
    if(wEnt <= 0)
        return

    const m_pPlayer = 41

    new id = get_pdata_cbase(wEnt, m_pPlayer, .linuxdiff = 4)
    if(IsPlayer(id) && get_user_flags(id) & g_iAccess)
    {
        new iszNewModel, szWeaponClass[32]
        pev(wEnt, pev_classname, szWeaponClass, charsmax(szWeaponClass))
        if(g_tViewModels)
        {
            if(TrieGetCell(g_tViewModels, szWeaponClass, iszNewModel))
            {
                set_pev(id, pev_viewmodel, iszNewModel)
            }
        }
        if(g_tWeaponModels)
        {
            if(TrieGetCell(g_tWeaponModels, szWeaponClass, iszNewModel))
            {
                set_pev(id, pev_weaponmodel, iszNewModel)
            }
        }
    }
}

public SetModel_Pre(iEnt, const szModel[])
{
    // if(!pev_valid(iEnt))
        // return FMRES_IGNORED

    new id = pev(iEnt, pev_owner)
    if(!IsPlayer(id) || ~get_user_flags(id) & g_iAccess)
        return FMRES_IGNORED

    new szNewModel[MAX_MODEL_LENGTH]
    if(TrieGetString(g_tWorldModels, szModel, szNewModel, charsmax(szNewModel)))
    {
        SetModel(iEnt, szNewModel)
        return FMRES_SUPERCEDE
    }
    return FMRES_IGNORED
}

public plugin_end()
{
    if(g_tViewModels)
        TrieDestroy(g_tViewModels)
    if(g_tWeaponModels)
        TrieDestroy(g_tWeaponModels)
    if(g_tWorldModels)
        TrieDestroy(g_tWorldModels)
}
Добрый вечер, вопрос по плагину Weapons Skins Manager
Данный плагин работает только под определенный флаг ?

Или можно несколько флагов разных привязывать к разным моделькам оружия ?
к примеру

Код:
AccessFlag = "a"
"weapon_ak47" "weapons/ak47fire/v_ak47fire" "weapons/ak47fire/p_ak47fire" "weapons/ak47fire/w_ak47fire"

AccessFlag = "b"
"weapon_m4a1" "weapons/m4a1fire/v_m4a1" "weapons/m4a1fire/p_m4a1fire" "weapons/m4a1fire/w_m4a1fire"
при таком наборе работают оба при флаге "b", при флаге "a" не работает первая выдача

Из этого я понял что только одному флагу может привязаться этот плагин. Поправьте меня если не прав или же может как то разделить их можно в этом файле ини?

Код:
; Конфигурационный файл «Менеджер скинов».

;=============================================================================

; ● Флаги доступа по умолчанию:


;=============================== МОДЕЛИ =================================

; ● Если вы получите эту ошибку: [HAMSANDWICH] Failed to retrieve class type for "weapon_xxx"
; [HAMSANDWICH] Не удалось получить тип класса для "weapon_xxx". Вы должны проверить ошибки в названиях оружия.

; ● Правильные имена оружия:
; weapon_elite, weapon_fiveseven, weapon_usp, weapon_glock18, weapon_p228, weapon_deagle
; weapon_scout, weapon_xm1014, weapon_mac10, weapon_aug, weapon_ump45, weapon_sg550,
; weapon_galil, weapon_famas, weapon_awp, weapon_mp5navy, weapon_m249, weapon_m3,
; weapon_m4a1, weapon_tmp, weapon_g3sg1, weapon_sg552, weapon_ak47, weapon_p90
; weapon_knife, weapon_c4 weapon_flashbang, weapon_hegrenade, weapon_smokegrenade

; ● Формат:
; "weaponname" "v_model" "p_model" "w_model" (without 'models/' & '.mdl')

; ● Примеры:
; Set awp model
; "weapon_awp" "custom/v_awp" "custom/p_awp" "custom/w_awp"

; Установите модель ножа без 'w_' model
; "weapon_knife" "custom/v_knife" "custom/p_knife" ""

; ● Примечания:
; Не забывайте о пределе прекеша 512!

AccessFlag = "a"
"weapon_ak47" "weapons/ak47fire/v_ak47fire" "weapons/ak47fire/p_ak47fire" "weapons/ak47fire/w_ak47fire"

AccessFlag = "b"
"weapon_m4a1" "weapons/m4a1fire/v_m4a1" "weapons/m4a1fire/p_m4a1fire" "weapons/m4a1fire/w_m4a1fire"

Да и если к одному все же привязан, если есть знающие скриптеры тут подскажите сложно ли доделать будет данный плагин ?
Благодарю за уделенное время!
 

hooligan***

Пользователь
Регистрация
9 Июн 2017
Сообщения
377
Симпатии
105
Пол
Мужской
Я как-то тоже искал такой плагин и прикрепил рабочий аналог ) поищи на форуме
 

Swed48

Пользователь
Регистрация
4 Апр 2020
Сообщения
24
Симпатии
0
Все же вопрос актуальный , в твоём плагине при выбросе оружия , когда другой подбирает модельки нету и все походу завязано на проверке в коде, просто так не убрать эту функцию.
Я как-то тоже искал такой плагин и прикрепил рабочий аналог ) поищи на форуме
 

Вложения

Сверху Снизу