Пропадают модели игроков

Статус
В этой теме нельзя размещать новые ответы.
Сообщения
34
Реакции
1
Доброго времени суток уважаемые коллеги!
Имеется сервер, на котором установлен плагин ChangeModels который меняет скины игрокам по нику/ip/steam.
Код:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>

#pragma semicolon 1

#define PLUGIN "ChangeModel (free) for amx-x.ru"
#define VERSION "1.0"
#define AUTHOR "Pain96"

#define CS_TEAM_T 1
#define CS_TEAM_CT 2

//                                путь/имя конфигурационного файла; префикс в качестве ключа для setinfo, содержащий пароль; причина кика, если пароль не совпадает
new const g_Library[][] = {"", "/addons/amxmodx/configs/models.ini", "_pw", "Неверный пароль"};

new szInfoPlayerModelCt[33], szInfoPlayerModelTt[33],
szAccessUser[33];

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR);
    register_event("ResetHUD", "ChangeModel", "b");
}

public plugin_precache()
{
    new szInfo[256], szInfoPrecache[128],
    szInfoUser[32], szInfoUserPassword[32],
    szInfoModelCt[64], szInfoModelTt[64],
    iNum;
    
    for(new iLine = 0; read_file(g_Library[1], iLine, szInfo, charsmax(szInfo), iNum); iLine++)
    {
        if(iNum && szInfo[0] != ';')
        {
            parse(szInfo, szInfoUser, charsmax( szInfoUser ),
            szInfoUserPassword, charsmax(szInfoUserPassword),
            szInfoModelCt, charsmax(szInfoModelCt),
            szInfoModelTt, charsmax(szInfoModelTt)
            );
            
            formatex(szInfoPrecache, charsmax(szInfoPrecache), "models/player/%s/%s.mdl", szInfoModelCt, szInfoModelCt);
            precache_model(szInfoPrecache);
            formatex(szInfoPrecache, charsmax(szInfoPrecache), "models/player/%s/%s.mdl", szInfoModelTt, szInfoModelTt);
            precache_model(szInfoPrecache);
        }
    }
}

public client_connect(id)
{
    set_task(0.5, "CheckPlayerInfo", id);
    szAccessUser[id] = false;
    szInfoPlayerModelCt[id] = false;
    szInfoPlayerModelTt[id] = false;
}

public client_infochanged(id)
{
    set_task(0.5, "CheckPlayerInfo", id);
    szAccessUser[id] = false;
    szInfoPlayerModelCt[id] = false;
    szInfoPlayerModelTt[id] = false;
}

public CheckPlayerInfo(id)
{   
    new szInfo[256], szName[32],
    szSteam[32], szIP[32],
    szPassword[32], szInfoUser[32],
    szInfoUserPassword[32], szInfoModelCt[64],
    szInfoModelTt[64], iNum;
    
    if (!is_user_connected(id))
        return 0;
        
    get_user_name(id, szName, charsmax(szName));
    get_user_authid(id, szSteam, charsmax(szSteam));
    get_user_ip(id, szIP, charsmax(szIP), 1);
    
    for(new iLine = 0; read_file(g_Library[1], iLine, szInfo, charsmax(szInfo), iNum); iLine++)
    {
        if(iNum && szInfo[0] != ';')
        {
            parse(szInfo, szInfoUser, charsmax( szInfoUser ),
            szInfoUserPassword, charsmax(szInfoUserPassword),
            szInfoModelCt, charsmax(szInfoModelCt),
            szInfoModelTt, charsmax(szInfoModelTt)
            );

            if (equal(szName, szInfoUser))
            {
                get_user_info(id, g_Library[2], szPassword, charsmax(szPassword));
                
                if(!equal(szInfoUserPassword, szPassword))
                    return server_cmd("kick %s ^"%s^"", szName, g_Library[3]);
                
                copy(szInfoPlayerModelCt[id], charsmax(szInfoPlayerModelCt), szInfoModelCt);
                copy(szInfoPlayerModelTt[id], charsmax(szInfoPlayerModelTt), szInfoModelTt);
                szAccessUser[id] = true;
                break;
            }
            else if (equal(szSteam, szInfoUser))
            {               
                copy(szInfoPlayerModelCt[id], charsmax(szInfoPlayerModelCt), szInfoModelCt);
                copy(szInfoPlayerModelTt[id], charsmax(szInfoPlayerModelTt), szInfoModelTt);
                szAccessUser[id] = true;
                break;
            }
            else if (equal(szIP, szInfoUser))
            {
                copy(szInfoPlayerModelCt[id], charsmax(szInfoPlayerModelCt), szInfoModelCt);
                copy(szInfoPlayerModelTt[id], charsmax(szInfoPlayerModelTt), szInfoModelTt);
                szAccessUser[id] = true;
                break;
            }
        }
    }
    return 1;
}

public ChangeModel(id, level, cid)
{
    if (szAccessUser[id])
    {
        new iTeam = get_user_team(id);
        switch(iTeam)
        {
            case CS_TEAM_T: cs_set_user_model(id, szInfoPlayerModelTt[id]);
            case CS_TEAM_CT: cs_set_user_model(id, szInfoPlayerModelCt[id]);

            default: cs_reset_user_model(id);
        }
    }
    return 0;
}
Проблема заключается в том что если на сервере играют два игрока которые имеют скин у того кто первым зашел после захода второго у которого есть скин пропадает скин в целом. И ещё скин появляется после 2-3 убийств и иногда пропадает у игрока.

Сборка сервера - reHLDS 3.11.0.767-dev
Mod - reCSDM 3.6.6

ChangeModels.amxx ; смена внешнего вида игроков
RegisterSystem.amxx ; Система регистрации
backweapons.amxx ; Оружие сзади
best_player_notice.amxx ; лучший игрок раунда
HostnameTimeleft.amxx ; таймлефт в названии сервера
killa_hp.amxx ; информация о том кто убил
bf2rank.amxx debug ; BF2 Ранги
lite_screen_fade.amxx ; Fade
Advanced_bullet_damage.amxx ; Дамагер
amx_gore_ultimate.amxx ; Больше крови и мяса на сервере
weapon_icon.amxx ; Иконки оружия
vampire.amxx ; Прибавляет хп при убийстве
pingfaker.amxx ; pingfaker
resetscore.amxx ; Обнуление счета
join_leave.amxx ; Показывает кто зашел на сервер и кто вышел
AdminPrefixes.amxx ; админ префиксы
Camera_Changer.amxx ; смена вида
ad_manager.amxx ; реклама на сервере
AdvancedMusicPlayer.amxx ; mp3
hat.amxx ; Шапки
autobinds.amxx ; автобинд
GameNameChanger.amxx ; смена названия игры
; Admin Base - Always one has to be activated
admin.amxx ; admin base (required for any admin-related)
;admin_sql.amxx ; admin base - SQL version (comment admin.amxx)

; Basic
admincmd.amxx ; basic admin console commands
adminhelp.amxx ; help command for admin console commands
adminslots.amxx ; slot reservation
multilingual.amxx ; Multi-Lingual management

; Menus
menufront.amxx ; front-end for admin menus
cmdmenu.amxx ; command menu (speech, settings)
plmenu.amxx ; players menu (kick, ban, client cmds.)
telemenu.amxx ; teleport menu (Fun Module required!)
mapsmenu.amxx ; maps menu (vote, changelevel)
pluginmenu.amxx ; Menus for commands/cvars organized by plugin

; Chat / Messages
adminchat.amxx ; console chat commands
antiflood.amxx ; prevent clients from chat-flooding the server
scrollmsg.amxx ; displays a scrolling message
imessage.amxx ; displays information messages
adminvote.amxx ; vote commands

; Map related
;nextmap.amxx ; displays next map in mapcycle
;mapchooser.amxx ; allows to vote for next map
;timeleft.amxx ; displays time left on map

; Configuration
pausecfg.amxx ; allows to pause and unpause some plugins
statscfg.amxx ; allows to manage stats plugins via menu and commands

; Counter-Strike
csstatsx_sql.amxx
aes_statsx_cstrike.amxx
server_menu.amxx ; менею сервера
amx_autodemorec.amxx ; Запись демки
adminmenu181.amxx ; Админ меню
weaponmenu_ru.amxx ; меню оружий
;restmenu.amxx ; restrict weapons menu
;statsx.amxx ; stats on death or round end (CSX Module required!)
miscstats.amxx ; bunch of events announcement for Counter-Strike
;stats_logging.amxx ; weapons stats logging (CSX Module required!)
;Основной плагин CSDM мода
csdm_main.amxx

;Меню снаряжения и оружия
csdm_equip.amxx

;Редактор точек возрождений и предустановленные точки.
;Конфигурации карт находятся в файлах находящихся в configs/csdm
;csdm_spawn_preset.amxx

;Дополнительные функции, такие как: бесконечные боеприпасы, удаление целей карт и прочее
csdm_misc.amxx

;Удаление дополнительных объектов карт и другого
;csdm_stripper.amxx

;Защита при возрождении
csdm_protection.amxx

map_manager_core.amxx
map_manager_scheduler.amxx

; Addons
map_manager_rtv.amxx
map_manager_nomination.amxx
map_manager_blocklist.amxx
map_manager_online_sorter.amxx
map_manager_effects.amxx
map_manager_inform
1693750917942.png
1693750878564.png
 

Ayk

Сообщения
763
Реакции
478
Помог
19 раз(а)
Somon007,

  • В данном разделе размещаются темы, в которых требуется помощь с доработкой или объяснением материала, а также по настройке плагинов. В теме должны быть опубликованы попытки (diff кода или последовательность действий) самостоятельного поиска решения.
    Если у вас нет наработок и попыток самому вникнуть в проблему, тогда вам в раздел "Покупка", где ваши шансы на решение вопроса увеличиваются многократно, за ваш счёт, естественно.
 
Статус
В этой теме нельзя размещать новые ответы.

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу