Вопрос по плагину 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
Все же вопрос актуальный , в твоём плагине при выбросе оружия , когда другой подбирает модельки нету и все походу завязано на проверке в коде, просто так не убрать эту функцию.
Я как-то тоже искал такой плагин и прикрепил рабочий аналог ) поищи на форуме
 

Вложения

Сверху Снизу