Участник
Пользователь
- Сообщения
- 460
- Реакции
- 68
- Помог
- 7 раз(а)
- Ошибка
-
Приложу скрины.
- ОС
- Linux
- Amx Mod X
-
AMX Mod X 1.9.0.5263 (http://www.amxmodx.org)
Authors:
David "BAILOPAN" Anderson, Pavol "PM OnoTo" Marko
Felix "SniperBeamer" Geyer, Jonny "Got His Gun" Bergstrom
Lukasz "SidLuke" Wlasinski, Christian "Basic-Master" Hammacher
Borja "faluco" Ferrer, Scott "DS" Ehlert
Compiled: Oct 27 2019 16:23:31
Built from: https://github.com/alliedmodders/amxmodx/commit/15a14a0
Build ID: 5263:15a14a0
Core mode: JIT+ASM32
- Билд
-
Protocol version 48
Exe version 1.1.2.7/Stdio (cstrike)
ReHLDS version: 3.7.0.692-dev
Build date: 18:58:01 Sep 21 2019 (1988)
Build from: https://github.com/dreamstalker/rehlds/commit/e7232be
- ReGamedll
-
ReGameDLL version: 5.13.0.447-dev+m
Build date: 18:11:04 Jan 15 2020
Build from: https://github.com/s1lentq/ReGameDLL_CS/commit/2eba3b1
- Версия Metamod
-
Metamod-r v1.3.0.128, API (5:13)
Metamod-r build: 17:47:54 Aug 24 2018
Metamod-r from: https://github.com/theAsmodai/metamod-r/commit/0cf2f70
- Список метамодулей
-
[ 1] Reunion RUN - reunion_mm_i386.so v0.1.0.133 ini Start Never
[ 2] ReAuthCheck RUN - reauthcheck_mm_i386.so v0.1.6 ini Start Never
[ 3] VoiceTranscoder RUN - VoiceTranscoder.so v2017RC4 ini ANY ANY
[ 4] AMX Mod X RUN - amxmodx_mm_i386.so v1.9.0.5263 ini Start ANY
[ 5] WHBlocker RUN - whblocker_mm_i386.so v1.5.696 ini Chlvl ANY
[ 6] ReSemiclip RUN - resemiclip_mm_i386.so v2.3.9 ini Chlvl ANY
[ 7] Rechecker RUN - rechecker_mm_i386.so v2.5 ini Chlvl ANY
[ 8] ReAimDetector RUN - reaimdetector_amxx_i386.so v0.2.2 pl4 ANY Never
[ 9] ReAPI RUN - reapi_amxx_i386.so v5.12.0.192-dev pl4 ANY Never
[10] SQLite RUN - sqlite_amxx_i386.so v1.9.0.5263 pl4 ANY ANY
[11] hackdetector RUN - hackdetector_amxx_i386.so v0.15.328.lite pl4 ANY ANY
[12] CStrike RUN - cstrike_amxx_i386.so v1.9.0.5263 pl4 ANY ANY
[13] Engine RUN - engine_amxx_i386.so v1.9.0.5263 pl4 ANY ANY
[14] FakeMeta RUN - fakemeta_amxx_i386.so v1.9.0.5263 pl4 ANY ANY
[15] Ham Sandwich RUN - hamsandwich_amxx_i386.so v1.9.0.5263 pl4 ANY ANY
[16] SxGeo RUN - sxgeo_amxx_i386.so v2.2 pl4 ANY Never
16 plugins, 16 running
- Список плагинов
-
[ 1] ReAimDetector API 0.2.2 ReHLDS Team reaimdetector.a running
[ 2] CSStatsX SQL 0.7.4+2 serfreeman1337 csstatsx_sql.am debug
[ 3] FreshBans 1.4.2b kanagava fresh_bans_142_ running
[ 4] ScreenMaker 1.1 neygomon screen_maker.am running
[ 5] RC BaseChanger freesrv custom rc_basechanger. stopped
[ 6] ReChecker Logging freesrv custom rc_logging.amxx running
[ 7] Admin Base 1.9.0.5263 AMXX Dev Team admin.amxx running
[ 8] Ping Control 1.31f neygomon(+wopox ping_control_wo running
[ 9] AFK Control ReNew 1.2(a) neygomon afk_control.amx running
[ 10] [ReAPI] AWPoff 1.4.3 PAffAEJIkA :3 awp_off.amxx running
[ 11] AES: StatsX 0.5+1 serfreeman1337 aes_statsx_cstr running
[ 12] Stats Configuration 1.10.0.525 AMXX Dev Team statscfg.amxx running
[ 13] Advanced Gag 1.9.0 neygomon amx_gag.amxx running
[ 14] Maps Menu 1.9.0.5263 AMXX Dev Team mapsmenu.amxx running
[ 15] Server Menu 1.5.0 F@nt0M server_menu.amx running
[ 16] Parachute for ALL [ReA 3.0 Leo_[BH] parachute_leo.a running
[ 17] Demo Recorder 2.4.1 F@nt0M demo_recorder.a running
[ 18] Rock to Ban 1.02 Safety1st rock2ban.amxx running
[ 19] Players Menu 1.7 neugomon players_menu.am running
[ 20] [ReAPI] Kills Counter 0.3 serfreeman1337 kills_counter.a running
[ 21] Killer ScreenFade 0.0.5 Vaqtincha reapi_killer_sc running
[ 22] SF Warn Menu 0.1.4g serfreeman1337 sf_admin_warns. running
[ 23] AES: StatsX Info Rank 0.1 serfreeman1337 aes_statsx_rank running
[ 24] KiLL Assist poka_4to_b PRoSToTeM@ Kill_assist_rea running
[ 25] [SxGeo] Connect Info 1.0 s1lent sxgeo_connect_i running
[ 26] Grab 2.5 Support123 grab_new.amxx running
[ 27] Damager 0.0.6 steelzzz damager.amxx running
[ 28] Multiple Game Names дата автор mgn.amxx running
[ 29] Vzruv Golovu 1.0 eL vzruv_golovu.am running
[ 30] AntiFlood Change Name 28.11.2018 sergrib AntiFlood_Chang running
[ 31] [ReAPI] Random Weapons 2.4.9 neugomon/h1k3 Random_Weapons_ running
[ 32] SF Bets 0.1.5 serfreeman1337 sf_bets.amxx running
[ 33] Radio Hudmsg Block 1.0 AcE radio_hudmsg_bl running
[ 34] C4 Timer on roundtime 0.3.3a neygomon c4timer.amxx running
[ 35] Advanced MapChooser 1.4 neygomon map_chooser.amx running
[ 36] [ReAPI] No Team Flash 0.0.2 Vaqtincha no_team_flash.a running
[ 37] Items Restrict 1.0 s1lent items_restrict. running
[ 38] RE Me&HP 1.1 neygomon, AcE re_sayme.amxx running
[ 39] Mode 2x2 2.5re s1lent mode.amxx running
[ 40] Models Replacement 0.0.2 ConnorMcLeod | V models_replacem running
[ 41] Lite Translit 2.8 neygomon lite_translit_c running
[ 42] Advanced Experience Sy 0.5.9 [REA serfreeman1337/s aes_main.amxx running
[ 43] AES: CStrike Addon 0.5.9 [REA serfreeman1337/s aes_exp_cstrike running
[ 44] AES: Informer 0.5.9 [REA serfreeman1337/s aes_informer.am running
[ 45] AES: Admin Tools 0.5.9 [REA serfreeman1337/s aes_exp_editor. debug
[ 46] AES: Bonus System 0.5.9 Vega serfreeman1337/s aes_bonus_syste running
[ 47] AES: Bonus CSTRIKE 0.5.9 [REA serfreeman1337/s aes_bonus_cstri running
[ 48] V.I.P Custom Weapons 1.0.0 Vaqtincha vip_custom.amxx running
[ 49] V.I.P Custom DEAGLE 1.0.0 Vaqtincha custom_deagle.a running
[ 50] V.I.P Custom M4A1 1.0.0 Vaqtincha custom_m4a1.amx running
[ 51] V.I.P Custom AK-47 1.0.0 Vaqtincha custom_ak47.amx running
[ 52] V.I.P Custom AWP 1.0.0 Vaqtincha custom_awp.amxx running
52 plugins, 51 running
- Автор плагина
- ConnorMcLeod | Vaqtincha
- Версия плагина
- 0.0.2
- Исходный код
-
// #define SET_MODELINDEX
#define MAX_MODEL_LEN 64
#define MAX_PATH_LEN 128
#define MAX_PLAYERS 32
#define MAX_BUFFER_LEN MAX_MODEL_LEN + MAX_MODEL_LEN
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#define VERSION "0.0.2"
#define UserValidTeam(%1) (CS_TEAM_TT <= get_pdata_int(%1, m_iTeam) <= CS_TEAM_CT)
#define AllocString(%1) engfunc(EngFunc_AllocString,%1)
#define SetModel(%1,%2) engfunc(EngFunc_SetModel,%1,%2)
#define IsPlayer(%1) (1 <= %1 <= g_iMaxPlayers)
#define SetUserModeled(%1) g_bModeled |= 1<<(%1 & 31)
#define SetUserNotModeled(%1) g_bModeled &= ~( 1<<(%1 & 31))
#define IsUserModeled(%1) (g_bModeled & 1<<(%1 & 31))
#define SetUserConnected(%1) g_bConnected |= 1<<(%1 & 31)
#define SetUserNotConnected(%1) g_bConnected &= ~( 1<<(%1 & 31))
#define IsUserConnected(%1) (g_bConnected & 1<<(%1 & 31))
const ClCorpse_ModelName = 1
const ClCorpse_PlayerID = 12
const CS_TEAM_TT = 1
const CS_TEAM_CT = 2
// offsets
const m_iTeam = 114
const m_pPlayer = 41
const g_ulModelIndexPlayer = 491
new const MODEL[] = "model"
new const g_szMapEntitys[][] = {"cycler_sprite", "cycler", "armoury_entity"}
new const g_szDefaultModels[][] = {"", "urban", "terror", "leet", "arctic",
"gsg9", "gign", "sas", "guerilla", "vip", "militia", "spetsnaz"
}
new const g_szWeaponNames[CSW_P90+1][] = {"","p228","","scout","hegrenade","xm1014","c4","mac10",
"aug","smokegrenade","elite","fiveseven","ump45","sg550","galil","famas","usp","glock18","awp",
"mp5navy","m249","m3","m4a1","tmp","g3sg1","flashbang","deagle","sg552","ak47","knife","p90"
}
new g_iWeaponIds[CSW_P90+1]
new Trie:g_tDefaultModels, Trie:g_tModelIndexes, Trie:g_tMapModels
new Trie:g_tViewModels, Trie:g_tWeaponModels, Trie:g_tWorldModels
new g_bConnected, g_bModeled, g_iMaxPlayers, bool:g_bPlayerModels
new g_szCurrentModel[MAX_PLAYERS+1][MAX_MODEL_LEN]
public plugin_init()
{
register_plugin("Models Replacement", VERSION, "ConnorMcLeod | Vaqtincha")
if(g_bPlayerModels)
{
register_forward(FM_SetClientKeyValue, "SetClientKeyValue_Pre", 0)
register_message(get_user_msgid("ClCorpse"), "Message_ClCorpse")
}
if(g_tWorldModels)
{
register_forward(FM_SetModel, "SetModel_Pre", 0)
}
if(g_tMapModels)
{
SetMapModels()
}
g_iMaxPlayers = get_maxplayers()
}
public plugin_precache()
{
new szConfigFile[MAX_PATH_LEN]
get_localinfo("amxx_configsdir", szConfigFile, charsmax(szConfigFile))
add(szConfigFile, charsmax(szConfigFile), "/models_replacement.ini")
if(file_exists(szConfigFile))
{
new iFile = fopen(szConfigFile, "rt")
if(!iFile)
{
set_fail_state("[MODELS_REPLACEMENT] ERROR: Failed reading file!")
return
}
new szDatas[MAX_BUFFER_LEN + 10], szWeaponClass[32], iId, c
new szOldModel[MAX_MODEL_LEN], szNewModel[MAX_MODEL_LEN]
new Trie:tRegisterWeaponDeploy = TrieCreate()
new Trie:tWeaponsIds = TrieCreate()
g_tModelIndexes = TrieCreate()
g_tDefaultModels = TrieCreate()
for(new i = 1; i<sizeof(g_szDefaultModels); i++)
{
TrieSetCell(g_tDefaultModels, g_szDefaultModels[i], i)
}
for(new i = CSW_P228; i <= CSW_P90; i++)
{
TrieSetCell(tWeaponsIds, g_szWeaponNames[i], g_iWeaponIds[i])
}
while(!feof(iFile))
{
fgets(iFile, szDatas, charsmax(szDatas))
trim(szDatas)
if(!(c = szDatas[0]) || c == ';' || c == '#')
{
continue
}
if(parse(szDatas, szOldModel, charsmax(szOldModel), szNewModel, charsmax(szNewModel)) != 2)
{
continue
}
if(!szOldModel[0] || !szNewModel[0] || equal(szNewModel, szOldModel))
{
continue
}
if(TrieKeyExists(g_tDefaultModels, szOldModel))
{
if(PrecachePlayerModel(szNewModel))
{
TrieSetString(g_tDefaultModels, szOldModel, szNewModel)
g_bPlayerModels = true
}
}else{
if(((c = szOldModel[0]) == 'p' || c == 'v' ) && szOldModel[1] == '_')
{
if(equal(szOldModel[2], "mp5", 3))
{
copy(szWeaponClass, charsmax(szWeaponClass), "weapon_mp5navy")
}else{
formatex(szWeaponClass, charsmax(szWeaponClass), "weapon_%s", szOldModel[2])
}
if(!TrieGetCell(tWeaponsIds, szWeaponClass[7], iId))
{
server_print("[MODELS_REPLACEMENT] WARNING: Invalid weapon class ^"%s^" will be skipped!", szWeaponClass)
continue
}
if(!TrieKeyExists(tRegisterWeaponDeploy, szWeaponClass))
{
TrieSetCell
(
tRegisterWeaponDeploy,
szWeaponClass,
RegisterHam(Ham_Item_Deploy, szWeaponClass, "ItemDeploy_Post", true)
)
}
format(szNewModel, charsmax(szNewModel), "models/%s.mdl", szNewModel)
if(c == 'v')
{
if(!g_tViewModels)
{
g_tViewModels = TrieCreate()
}
if(PrecacheWeaponModel(szNewModel))
{
TrieSetCell(g_tViewModels, szWeaponClass, AllocString(szNewModel))
}
}else{
if(!g_tWeaponModels)
{
g_tWeaponModels = TrieCreate()
}
if(PrecacheWeaponModel(szNewModel))
{
TrieSetCell(g_tWeaponModels, szWeaponClass, AllocString(szNewModel))
}
}
}else{
format(szOldModel, charsmax(szOldModel), "models/%s.mdl", szOldModel)
format(szNewModel, charsmax(szNewModel), "models/%s.mdl", szNewModel)
if(c == 'w')
{
if(!g_tWorldModels)
{
g_tWorldModels = TrieCreate()
}
else if(TrieKeyExists(g_tWorldModels, szOldModel))
{
continue
}
if(PrecacheWeaponModel(szNewModel))
{
TrieSetString(g_tWorldModels, szOldModel, szNewModel)
}
}
}
if(!g_tMapModels)
{
g_tMapModels = TrieCreate()
}
if(PrecacheWeaponModel(szNewModel))
{
TrieSetString(g_tMapModels, szOldModel, szNewModel)
}
}
}
fclose(iFile)
TrieDestroy(tRegisterWeaponDeploy)
TrieDestroy(tWeaponsIds)
}else{
new iFile = fopen(szConfigFile, "w")
if(!iFile)
{
set_fail_state("[MODELS_REPLACEMENT] ERROR: Failed creating file!")
return
}
fputs(iFile, "^n; Format: ^"old model^" ^"new model^" (without 'models/' & '.mdl')^n;^n; Examples:^n")
fputs(iFile, "^n; ^"arctic^" ^"vip^"^n; ^"chick^" ^"winebottle^"")
fputs(iFile, "^n; ^"v_awp^" ^"custom/v_awp^"^n; ^"p_awp^" ^"custom/p_awp^"^n; ^"w_awp^" ^"custom/w_awp^"")
fclose(iFile)
}
}
public client_putinserver(id)
{
if(!is_user_hltv(id))
{
SetUserConnected(id)
}
}
public client_disconnected(id)
{
SetUserNotModeled(id)
SetUserNotConnected(id)
}
public ItemDeploy_Post(wEnt)
{
if(wEnt <= 0)
{
return
}
new id = get_pdata_cbase(wEnt, m_pPlayer, .linuxdiff = 4)
if(IsPlayer(id))
{
new iszNewModel, szWeaponClass[32]
pev(wEnt, pev_classname, szWeaponClass, charsmax(szWeaponClass))
if(g_tViewModels && TrieGetCell(g_tViewModels, szWeaponClass, iszNewModel))
{
set_pev(id, pev_viewmodel, iszNewModel)
}
if(g_tWeaponModels && 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 szNewModel[MAX_MODEL_LEN]
if(TrieGetString(g_tWorldModels, szModel, szNewModel, charsmax(szNewModel)))
{
SetModel(iEnt, szNewModel)
return FMRES_SUPERCEDE
}
return FMRES_IGNORED
}
public SetClientKeyValue_Pre(id, const szInfoBuffer[], const szKey[], const szValue[])
{
if(!equal(szKey, MODEL) || !IsUserConnected(id) || !UserValidTeam(id))
{
return FMRES_IGNORED
}
new szSupposedModel[MAX_MODEL_LEN]
if(TrieGetString(g_tDefaultModels, szValue, szSupposedModel, charsmax(szSupposedModel)))
{
if(szSupposedModel[0])
{
if(!IsUserModeled(id) || !equal(g_szCurrentModel[id], szSupposedModel) || !equal(szValue, szSupposedModel))
{
copy(g_szCurrentModel[id], MAX_MODEL_LEN-1, szSupposedModel)
SetUserModeled(id)
set_user_info(id, MODEL, szSupposedModel)
#if defined SET_MODELINDEX
new iModelIndex
TrieGetCell(g_tModelIndexes, szSupposedModel, iModelIndex)
// set_pev(id, pev_modelindex, iModelIndex); // is this needed ?
set_pdata_int(id, g_ulModelIndexPlayer, iModelIndex)
#endif
return FMRES_SUPERCEDE
}
}
if(IsUserModeled(id))
{
SetUserNotModeled(id)
g_szCurrentModel[id][0] = 0
}
}
return FMRES_IGNORED
}
public Message_ClCorpse()
{
new id = get_msg_arg_int(ClCorpse_PlayerID)
if(IsUserModeled(id))
{
set_msg_arg_string(ClCorpse_ModelName, g_szCurrentModel[id])
}
}
public plugin_end()
{
if(g_tModelIndexes)
{
TrieDestroy(g_tModelIndexes)
}
if(g_tViewModels)
{
TrieDestroy(g_tViewModels)
}
if(g_tWeaponModels)
{
TrieDestroy(g_tWeaponModels)
}
if(g_tWorldModels)
{
TrieDestroy(g_tWorldModels)
}
if(g_tMapModels)
{
TrieDestroy(g_tMapModels)
}
}
SetMapModels()
{
new iEnt = FM_NULLENT
new szSupposedModel[MAX_MODEL_LEN], szModel[MAX_MODEL_LEN]
for(new i = 0; i <sizeof(g_szMapEntitys); i++)
{
while((iEnt = engfunc(EngFunc_FindEntityByString, iEnt, "classname", g_szMapEntitys[i])))
{
pev(iEnt, pev_model, szModel, charsmax(szModel))
if(TrieGetString(g_tMapModels, szModel, szSupposedModel, charsmax(szSupposedModel)))
{
SetModel(iEnt, szSupposedModel)
}
}
}
}
PrecacheWeaponModel(const szModel[])
{
new szMsg[MAX_MODEL_LEN + 64]
if(!file_exists(szModel))
{
formatex(szMsg, charsmax(szMsg), "[MODELS_REPLACEMENT] ERROR: Model ^"%s^" not found!", szModel)
set_fail_state(szMsg)
return 0
}
precache_model(szModel)
return 1
}
PrecachePlayerModel(const szModel[])
{
if(TrieKeyExists(g_tModelIndexes, szModel) || TrieKeyExists(g_tDefaultModels, szModel))
{
return 1
}
new szFileToPrecache[64], szMsg[MAX_MODEL_LEN + 64]
formatex(szFileToPrecache, charsmax(szFileToPrecache), "models/player/%s/%s.mdl", szModel, szModel)
if(!file_exists(szFileToPrecache))
{
formatex(szMsg, charsmax(szMsg), "[MODELS_REPLACEMENT] ERROR: Player model ^"%s^" not found!", szFileToPrecache)
set_fail_state(szMsg)
return 0
}
TrieSetCell(g_tModelIndexes, szModel, precache_model(szFileToPrecache))
formatex(szFileToPrecache, charsmax(szFileToPrecache), "models/player/%s/%st.mdl", szModel, szModel)
if(file_exists(szFileToPrecache))
{
precache_model(szFileToPrecache)
return 1
}
formatex(szFileToPrecache, charsmax(szFileToPrecache), "models/player/%s/%sT.mdl", szModel, szModel)
if(file_exists(szFileToPrecache))
{
precache_model(szFileToPrecache)
return 1
}
return 1
}
Привет форумчане нужна ваша помощь. После установки плагина вот такие макрошки на экране) Даже не знаю что происходит. Может кто столкнулся с такой проблемой подскажите решение.