Дата: Пятница, 18.01.2019, 14:18 | Сообщение #
5
Любитель
Offline
Цитата Ragamafona (
)
Ссылки на скриптеров предоставь, и исходноки их работ.
EpisCape https://cs-amba.ru/index/8-5901 не доделал и пропал уже более 3 месяцев Второй скриптер ToJI9IHGaa игнорщик тот еще при заказе такой отзывчивый. а потом жду ответа по 10 дней. он редактировал плагин но в конечном итоге баги остались В меню 2 пункта Мужские и женские скины + кнопка убрать модель. На данные момент я вписал в конфиг название моделей но почему то в меню перепутано: к примеру Модель называеться Агент смит а выдает совсем другую модель. И еще 1 баг когда жмешь в меню убрать модель то команда не работает /models чтобы взять другую модель
#include
#include #include #define PLUGIN "Models Menu" #define VERSION "1.0" #define AUTHOR "EpisCape" new const PATH_MODELS[] = "addons/amxmodx/configs/models_list.cfg"; // Путь к кфг файлу new const PATH_DATABASE[] = "addons/amxmodx/data/adm_mdl_db.txt"; // БД const FLAG_ADMIN = ADMIN_LEVEL_H; // Флаг админов const FLAG_WOMAN = ADMIN_LEVEL_A; // Флаг девушек new g_sManModels[32][64], g_sWomanModels[32][64]; new g_iLimitManModel, g_iLimitWomanModel, g_iMainMenu, g_iManMenu, g_iWomanMenu, g_iCurModel[33]; public plugin_precache() { static bool: IsLoaded; if(!IsLoaded) { write_file(PATH_DATABASE, "[База данных] [Models Menu]", 0); write_file(PATH_MODELS, " ================ Список загружаемых моделей ================ ", 0); new iLine = 1, iLen, sData[128], sName[64], bool: bMode; g_iManMenu = menu_create("\yМодели для \rадминов", "Menu_ManModels_Handler"); g_iWomanMenu = menu_create("\yМодели для \rдевушек", "Menu_WomanModels_Handler"); while((iLine = read_file(PATH_MODELS, iLine, sData, charsmax(sData), iLen))) { if(sData[0] == '/' || sData[1] == '/') continue; if(sData[0] == '*') { bMode = true; continue; } parse(sData, sName, charsmax(sName), sData, charsmax(sData)); remove_quotes(sData); remove_quotes(sName); if(bMode) { menu_additem(g_iWomanMenu, sName); format(g_sWomanModels[g_iLimitWomanModel++], 63, "%s", sData); }else{ menu_additem(g_iManMenu, sName); format(g_sManModels[g_iLimitManModel++], 63, "%s", sData); } } IsLoaded = true; } new sPath[128]; for(new i; i < g_iLimitManModel; i++) { formatex(sPath, charsmax(sPath), "models/player/%s/%s.mdl", g_sManModels, g_sManModels); if(file_exists(sPath)) precache_model(sPath); else log_amx( "I don't find %s", sPath ); } for(new i; i < g_iLimitWomanModel; i++) { formatex(sPath, charsmax(sPath), "models/player/%s/%s.mdl", g_sWomanModels, g_sWomanModels); if(file_exists(sPath)) precache_model(sPath); else log_amx( "I don't find %s", sPath ); } } public client_putinserver(id) { new iLine = 1, iLen, sData[64], sID[3], sKey[38], sAuthID[38]; get_user_authid(id, sAuthID, charsmax(sAuthID)); while((iLine = read_file(PATH_DATABASE, iLine, sData, charsmax(sData), iLen))) { parse(sData, sKey, charsmax(sKey), sID, charsmax(sID)); if(equal(sKey, sAuthID)) { g_iCurModel [id]= str_to_num(sID); return; } } g_iCurModel [id]= -1; } public client_disconnect(id) { new iLine = 1, iLen, sData[64], sKey[38], sAuthID[38]; get_user_authid(id, sAuthID, charsmax(sAuthID)); while((iLine = read_file(PATH_DATABASE, iLine, sData, charsmax(sData), iLen))) { parse(sData, sKey, charsmax(sKey)); if(equal(sKey, sAuthID)) { format(sData, charsmax(sData), "%s %i", sAuthID, g_iCurModel[id]); write_file(PATH_DATABASE, sData, iLine-1); return; } } format(sData, charsmax(sData), "%s %i", sAuthID, g_iCurModel[id]); write_file(PATH_DATABASE, sData, -1); } public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR); g_iMainMenu = menu_create("\yМеню моделей", "Menu_ChooseModel_Handler"); menu_additem(g_iMainMenu, "\wМеню \yмоделей \dдля \rадминов"); menu_additem(g_iMainMenu, "\wМеню \yмоделей \dдля \rдевушек"); menu_additem(g_iMainMenu, "\wСнять \rмодель"); menu_setprop(g_iMainMenu, MPROP_EXITNAME, "Выход"); register_clcmd("say /models", "Menu_ChooseModel"); RegisterHam(Ham_Spawn, "player", "fwHam_PlayerSpawn_Post", true); } public Menu_ChooseModel(id) { if(!is_user_alive(id)) { client_print(id, print_center, "Меню недоступно для мертвых"); return; } new iFlag = get_user_flags(id); if(~iFlag & FLAG_ADMIN || ~iFlag & FLAG_WOMAN) { client_print(id, print_center, "Меню недоступно для вас"); return; } menu_display(id, g_iMainMenu); } public Menu_ChooseModel_Handler(id, iMenu, iItem) { if(!is_user_alive(id)) { client_print(id, print_center, "Меню недоступно для мертвых"); return; } if(iItem == MENU_EXIT) { client_print(id, print_center, "Меню недоступно для мертвых"); return; } switch(iItem) { case 0: { if(~get_user_flags(id) & FLAG_ADMIN) { client_print(id, print_center, "Меню недоступно для вас"); return; } menu_display(id, g_iManMenu); } case 1: { if(~get_user_flags(id) & FLAG_WOMAN) { client_print(id, print_center, "Меню недоступно для вас"); return; } menu_display(id, g_iWomanMenu); } case 2: { g_iCurModel [id]= -1; cs_reset_user_model(id); } } } public Menu_ManModels_Handler(id, iMenu, iItem) { if(iItem == MENU_EXIT) return; if(g_iCurModel [id]== iItem) { client_print(id, print_center, "Выбранная модель является вашей текущей"); return; } new iMiss, sData[64]; menu_item_getinfo(iMenu, iItem, iMiss, sData, charsmax(sData), sData, charsmax(sData), iMiss); g_iCurModel [id]= iItem; new sPath[64]; formatex(sPath, charsmax(sPath), "models/player/%s/%s.mdl", g_sManModels[iItem], g_sManModels[iItem]); if(file_exists(sPath)){ cs_set_user_model(id, g_sManModels[iItem]); client_print(id, print_center, "Вы выбрали модель: %s", g_sWomanModels[iItem]); } else client_print(id, print_center, "Ошибка"); } public Menu_WomanModels_Handler(id, iMenu, iItem) { if(iItem == MENU_EXIT) return; if(g_iCurModel [id]== iItem) { client_print(id, print_center, "Выбранная модель является вашей текущей"); return; } new iMiss, sData[64]; menu_item_getinfo(iMenu, iItem, iMiss, sData, charsmax(sData), sData, charsmax(sData), iMiss); g_iCurModel [id]= iItem; new sPath[64]; formatex(sPath, charsmax(sPath), "models/player/%s/%s.mdl", g_sWomanModels[iItem], g_sWomanModels[iItem]); if(file_exists(sPath)){ cs_set_user_model(id, g_sWomanModels[iItem]); client_print(id, print_center, "Вы выбрали модель: %s", g_sWomanModels[iItem]); } else client_print(id, print_center, "Ошибка"); } public fwHam_PlayerSpawn_Post(id) { if(!is_user_alive(id)) return; if(get_user_flags(id) & FLAG_ADMIN) cs_set_user_model(id, g_sManModels[g_iCurModel[id]]); else if(get_user_flags(id) & FLAG_WOMAN) cs_set_user_model(id, g_sWomanModels[g_iCurModel[id]]); } Добавлено (18.01.2019, 14:20) --------------------------------------------- в инете похожих плагинов не видел кто отписывал что так тяжело в гугле забить
Добавлено (18.01.2019, 14:23) ---------------------------------------------
Цитата marisingle (
)
Аналогичный плагин playermodel вроде называется все редактируется в models.ini
Ну это же не меню. плагин а для замены определеному игроку определеную модель. а мне надо что админы сами могли выбрать себе модель на сервере
Сообщение отредактировал tehmast3r - Пятница, 18.01.2019, 14:19