Ето така трябва вече да е ок..
VIP
|
Cs-PlovdiV.com - Aim Attack 93.123.16.4:27022 |
aim_map2 Играчи: 4/16 |
|
VIP
|
93.123.16.4:27022 | Cs-PlovdiV.com - Aim Attack | aim_map2 | 4/16 |
Menu Skin Girl
-
Huehue
Извън линия - Модератор
- Мнения: 357
- Регистриран на: 16 Яну 2017, 23:42
- Местоположение: София
- Се отблагодари: 9 пъти
- Получена благодарност: 175 пъти
- Обратна връзка:
Re: Menu Skin Girl
LOYAL TO THE OATH OF OMERTА̀
Зад монитора мъжкари, това не го разбирам..
На живо сте мишкари, това го гарантирам!
Седиш на 30 метра от мен като препариран!
Ако има нещо брат, номерът ми е блокиран..
My GitHub Profile
GitHub
My AMXX Includes Collection
AMXX Include Libraries
My Steam Profile (from SteamDB)
Зад монитора мъжкари, това не го разбирам..
На живо сте мишкари, това го гарантирам!
Седиш на 30 метра от мен като препариран!
Ако има нещо брат, номерът ми е блокиран..
My GitHub Profile
GitHub
My AMXX Includes Collection
AMXX Include Libraries
My Steam Profile (from SteamDB)
- Value: 4179€
- Games owned: 1855
- Games played: 754 (40%)
- Hours on record: 4,994.9h
-
cgozzie75
Извън линия - Потребител
- Мнения: 47
- Регистриран на: 08 Ное 2023, 12:46
- Се отблагодари: 25 пъти
- Получена благодарност: 2 пъти
Re: Menu Skin Girl
Не е за вярване работи перфектно но темата да не се затваря нека мине малко време да се тества се пак с играчи.А ако реша някаква промяна или да се добави нещо да мога да пиша веднага.Благодаря и на двама ви че помагате това да се усъществи,радвам се че има хора като вас ..
-
cgozzie75
Извън линия - Потребител
- Мнения: 47
- Регистриран на: 08 Ное 2023, 12:46
- Се отблагодари: 25 пъти
- Получена благодарност: 2 пъти
Re: Menu Skin Girl
Здравей доогледах нещата и реших да се добави опция за премахване на текущия скин ако случайно мацката реши да не ползва скин.В момента ако си е избрала и го запазва и само може да сменя с други но не може да се върне по дефаут.Добави опция по дефаут ако се пак реши да не ползва..
Код за потвърждение: Избери целия код
// AMXXBG Request Topic: https://amxx-bg.info/forum/viewtopic.php?t=12407
#include <amxmodx>
#include <reapi>
#include <fvault>
#include <cstrike>
// Uncomment the line if you want to use the setinfo as model set
//#define USE_SETINFO
#define USE_CSTRIKE_MODELSET
new const g_szFVault_DB[] = "DB_fVault_GirlSkins"
#define VERSION "1.0.0"
enum _:eModelsData
{
SKIN_NAME[MAX_NAME_LENGTH],
MODEL[MAX_NAME_LENGTH]
}
new const g_szModels_TT[][eModelsData] =
{
{ "[TR] [GIRL SKIN] BARBIE #1", "barbi1" },
{ "[TR] [GIRL SKIN] CAT #2", "cat1" },
{ "[TR] [GIRL SKIN] KIT #3", "kit1" }
}
new const g_szModels_CT[][eModelsData] =
{
{ "[CT] [GIRL SKIN] BARBIE #1", "barbi2" },
{ "[CT] [GIRL SKIN] CAT #2", "cat2" },
{ "[CT] [GIRL SKIN] KIT #3", "kit2" }
}
enum _:ePlayerTeamData
{
TT,
CT
}
new g_bCustomPlayerModel[MAX_CLIENTS + 1][ePlayerTeamData]
new g_szName[MAX_CLIENTS + 1][MAX_NAME_LENGTH]
new g_bActiveCustomPlayerModel[MAX_CLIENTS + 1]
#if !defined _reapi_stocks_included
#define rg_get_user_team(%0) get_member(%0, m_iTeam)
#endif
public plugin_init()
{
register_plugin("xGirls Skin Menu [AMXXBG Request]", VERSION, "Huehue @ AMXX-BG.INFO")
#if defined USE_SETINFO
RegisterHookChain(RG_CBasePlayer_SetClientUserInfoModel, "CBasePlayer_SetClientUserInfoModel", false)
#endif
RegisterHookChain(RG_CBasePlayer_Spawn, "CBasePlayer_Spawn", true)
register_clcmd("say /girl", "Command_GirlSkinMenu")
register_clcmd("say_team /girl", "Command_GirlSkinMenu")
}
public plugin_precache()
{
static i
for (i = 0; i < sizeof g_szModels_CT; i++)
try_precache_player_model(g_szModels_CT[i][MODEL])
for (i = 0; i < sizeof g_szModels_TT; i++)
try_precache_player_model(g_szModels_TT[i][MODEL])
}
#if defined USE_SETINFO
public CBasePlayer_SetClientUserInfoModel(const id, szInfoBuffer[], szNewModel[])
{
if (g_bActiveCustomPlayerModel[id])
{
switch (rg_get_user_team(id))
{
case TEAM_TERRORIST:
{
SetHookChainArg(3, ATYPE_STRING, g_szModels_TT[g_bCustomPlayerModel[id][TT]][MODEL])
}
case TEAM_CT:
{
SetHookChainArg(3, ATYPE_STRING, g_szModels_CT[g_bCustomPlayerModel[id][CT]][MODEL])
}
}
}
}
#endif
public CBasePlayer_Spawn(id)
{
if (is_user_alive(id))
set_task(0.5, "Update_User_Info", id) // Safecase just because no idea when your other models set
}
public Command_GirlSkinMenu(id)
{
static iMenu, i, iCallBack
iMenu = menu_create(fmt("\wChoose Girl Skin for %s", rg_get_user_team(id) == TEAM_TERRORIST ? "\rTerrorist" : "\yCounter-Terrorist"), "GirlSkinMenu_Handler")
iCallBack = menu_makecallback("GirlSkinMenu_CallBack")
switch (rg_get_user_team(id))
{
case TEAM_TERRORIST:
{
for (i = 0; i < sizeof g_szModels_TT; i++)
{
menu_additem(iMenu, g_szModels_TT[i][SKIN_NAME], .callback = iCallBack)
}
}
case TEAM_CT:
{
for (i = 0; i < sizeof g_szModels_CT; i++)
{
menu_additem(iMenu, g_szModels_CT[i][SKIN_NAME], .callback = iCallBack)
}
}
}
menu_display(id, iMenu)
return PLUGIN_HANDLED
}
public GirlSkinMenu_CallBack(id, iMenu, Item)
{
if (g_bActiveCustomPlayerModel[id])
{
if (g_bCustomPlayerModel[id][TT] == Item && rg_get_user_team(id) == TEAM_TERRORIST)
{
menu_item_setname(iMenu, Item, fmt("%s \d[SELECTED]", g_szModels_TT[Item][SKIN_NAME]))
return ITEM_DISABLED
}
if (g_bCustomPlayerModel[id][CT] == Item && rg_get_user_team(id) == TEAM_CT)
{
menu_item_setname(iMenu, Item, fmt("%s \d[SELECTED]", g_szModels_CT[Item][SKIN_NAME]))
return ITEM_DISABLED
}
}
return ITEM_ENABLED
}
public GirlSkinMenu_Handler(id, iMenu, Item)
{
if (Item == MENU_EXIT)
{
menu_destroy(iMenu)
return PLUGIN_HANDLED
}
g_bActiveCustomPlayerModel[id] = true
switch(rg_get_user_team(id))
{
case TEAM_TERRORIST:
{
g_bCustomPlayerModel[id][TT] = Item
client_print_color(id, print_team_default, "^4[Girl Skins] ^1You have selected skin ^3%s", g_szModels_TT[Item][SKIN_NAME])
}
case TEAM_CT:
{
g_bCustomPlayerModel[id][CT] = Item
client_print_color(id, print_team_default, "^4[Girl Skins] ^1You have selected skin ^3%s", g_szModels_CT[Item][SKIN_NAME])
}
}
Update_User_Info(id)
menu_destroy(iMenu)
return PLUGIN_HANDLED
}
public Update_User_Info(id)
{
if (is_user_alive(id) && g_bActiveCustomPlayerModel[id])
{
switch (rg_get_user_team(id))
{
#if defined USE_CSTRIKE_MODELSET
case TEAM_TERRORIST: cs_set_user_model(id, g_szModels_TT[g_bCustomPlayerModel[id][TT]][MODEL])
case TEAM_CT: cs_set_user_model(id, g_szModels_CT[g_bCustomPlayerModel[id][CT]][MODEL])
#else
#if defined USE_SETINFO
case TEAM_TERRORIST: set_user_info(id, "model", g_szModels_TT[g_bCustomPlayerModel[id][TT]][MODEL])
case TEAM_CT: set_user_info(id, "model", g_szModels_CT[g_bCustomPlayerModel[id][CT]][MODEL])
#else
case TEAM_TERRORIST: rg_set_user_model(id, g_szModels_TT[g_bCustomPlayerModel[id][TT]][MODEL])
case TEAM_CT: rg_set_user_model(id, g_szModels_CT[g_bCustomPlayerModel[id][CT]][MODEL])
#endif
#endif
}
#if defined USE_SETINFO
rh_update_user_info(id)
#endif
if (~get_user_flags(id) & ADMIN_LEVEL_D)
{
remove_user_flags(id, read_flags("z"))
set_user_flags(id, read_flags("p"))
}
}
}
// Save & Load data
public Save_Data(id, szName[])
{
new szData[64]
formatex(szData, charsmax(szData), "%i#%i#%i", g_bActiveCustomPlayerModel[id], g_bCustomPlayerModel[id][TT], g_bCustomPlayerModel[id][CT])
fvault_set_data(g_szFVault_DB, szName, szData)
}
public Load_Data(szName[], id)
{
if (!is_user_connected(id))
return
new szData[64]
if(fvault_get_data(g_szFVault_DB, szName, szData, charsmax(szData)))
{
parse_loaded_data(id, szData, charsmax(szData))
}
else
{
register_new_player(id)
}
}
public parse_loaded_data(id, szData[], iLen)
{
replace_all(szData, iLen, "#", " ")
new szActiveCustomPlayerModel[10], szCustomModelTT[10], szCustomModelCT[10]
parse(szData, szActiveCustomPlayerModel, charsmax(szActiveCustomPlayerModel), szCustomModelTT, charsmax(szCustomModelTT), szCustomModelCT, charsmax(szCustomModelCT))
g_bActiveCustomPlayerModel[id] = str_to_num(szActiveCustomPlayerModel) == 1 ? true : false
g_bCustomPlayerModel[id][TT] = str_to_num(szCustomModelTT)
g_bCustomPlayerModel[id][CT] = str_to_num(szCustomModelCT)
Update_User_Info(id)
}
public register_new_player(id)
{
g_bActiveCustomPlayerModel[id] = false
g_bCustomPlayerModel[id][TT] = 0
g_bCustomPlayerModel[id][CT] = 0
#if defined USE_CSTRIKE_MODELSET
cs_reset_user_model(id)
#else
#if defined USE_SETINFO
set_user_info(id, "model", "")
rh_update_user_info(id)
#else
rg_reset_user_model(id)
#endif
#endif
}
public client_infochanged(id)
{
if (!is_user_connected(id))
return PLUGIN_HANDLED
new szNewName[32], szOldName[32]
get_user_name(id, szOldName, charsmax(szOldName))
get_user_info(id, "name", szNewName, charsmax(szNewName))
if (!equal(szNewName, szOldName))
{
g_szName[id] = szNewName
Save_Data(id, szOldName)
set_task(0.1, "Load_Data", id, szNewName, sizeof(szNewName))
return PLUGIN_HANDLED
}
return PLUGIN_HANDLED
}
public client_putinserver(id)
{
get_user_name(id, g_szName[id], charsmax(g_szName[]))
set_task(0.1, "Load_Data", id, g_szName[id], sizeof(g_szName[]))
}
public client_disconnected(id)
{
Save_Data(id, g_szName[id])
}
#if !defined _reapi_stocks_included
stock try_precache_player_model(const name[], &id = 0) {
new model[128]
formatex(model, charsmax(model), "models/player/%s/%sT.mdl", name, name)
if(file_exists(model))
id = precache_generic(model)
static const extension[] = "T.mdl"
#pragma unused extension
copy(model[strlen(model) - charsmax(extension)], charsmax(model), ".mdl")
return precache_model(model)
}
#endif
-
Huehue
Извън линия - Модератор
- Мнения: 357
- Регистриран на: 16 Яну 2017, 23:42
- Местоположение: София
- Се отблагодари: 9 пъти
- Получена благодарност: 175 пъти
- Обратна връзка:
Re: Menu Skin Girl
Код за потвърждение: Избери целия код
// AMXXBG Request Topic: https://amxx-bg.info/forum/viewtopic.php?t=12407
// Comment the line if you don't want to use the setinfo as model set
//#define USE_SETINFO
// Comment this line to stop using the cstrike method of setting player models
#define USE_CSTRIKE_MODELSET
// Comment this line to stop the chat command
#define USE_CHAT_COMMAND
// Commant this line to stop option to stop the skin from menu
#define USE_MENU_OPTION
#include <amxmodx>
#include <fvault>
#include <reapi>
#if defined USE_CSTRIKE_MODELSET
#include <cstrike>
#endif
new const g_szFVault_DB[] = "DB_fVault_GirlSkins"
#define VERSION "1.0.0"
enum _:eModelsData
{
SKIN_NAME[MAX_NAME_LENGTH],
MODEL[MAX_NAME_LENGTH]
}
new const g_szModels_TT[][eModelsData] =
{
{ "[TR] [GIRL SKIN] BARBIE #1", "barbi1" },
{ "[TR] [GIRL SKIN] CAT #2", "cat1" },
{ "[TR] [GIRL SKIN] KIT #3", "kit1" }
}
new const g_szModels_CT[][eModelsData] =
{
{ "[CT] [GIRL SKIN] BARBIE #1", "barbi2" },
{ "[CT] [GIRL SKIN] CAT #2", "cat2" },
{ "[CT] [GIRL SKIN] KIT #3", "kit2" }
}
enum _:ePlayerTeamData
{
TT,
CT
}
new g_bCustomPlayerModel[MAX_CLIENTS + 1][ePlayerTeamData]
new g_szName[MAX_CLIENTS + 1][MAX_NAME_LENGTH]
new g_bActiveCustomPlayerModel[MAX_CLIENTS + 1]
#if !defined _reapi_stocks_included
#define rg_get_user_team(%0) get_member(%0, m_iTeam)
#endif
public plugin_init()
{
register_plugin("xGirls Skin Menu [AMXXBG Request]", VERSION, "Huehue @ AMXX-BG.INFO")
#if defined USE_SETINFO
RegisterHookChain(RG_CBasePlayer_SetClientUserInfoModel, "CBasePlayer_SetClientUserInfoModel", false)
#endif
RegisterHookChain(RG_CBasePlayer_Spawn, "CBasePlayer_Spawn", true)
register_clcmd("say /girl", "Command_GirlSkinMenu")
register_clcmd("say_team /girl", "Command_GirlSkinMenu")
#if defined USE_CHAT_COMMAND
register_clcmd("say /girlskin", "Command_GirlSkinRemove")
register_clcmd("say_team /girlskin", "Command_GirlSkinRemove")
#endif
}
public plugin_precache()
{
static i
for (i = 0; i < sizeof g_szModels_CT; i++)
try_precache_player_model(g_szModels_CT[i][MODEL])
for (i = 0; i < sizeof g_szModels_TT; i++)
try_precache_player_model(g_szModels_TT[i][MODEL])
}
#if defined USE_SETINFO
public CBasePlayer_SetClientUserInfoModel(const id, szInfoBuffer[], szNewModel[])
{
if (g_bActiveCustomPlayerModel[id])
{
switch (rg_get_user_team(id))
{
case TEAM_TERRORIST:
{
SetHookChainArg(3, ATYPE_STRING, g_szModels_TT[g_bCustomPlayerModel[id][TT]][MODEL])
}
case TEAM_CT:
{
SetHookChainArg(3, ATYPE_STRING, g_szModels_CT[g_bCustomPlayerModel[id][CT]][MODEL])
}
}
}
}
#endif
public CBasePlayer_Spawn(id)
{
if (is_user_alive(id))
set_task(0.5, "Update_User_Info", id) // Safecase just because no idea when your other models set
}
#if defined USE_CHAT_COMMAND
public Command_GirlSkinRemove(id)
{
if (g_bActiveCustomPlayerModel[id])
{
g_bActiveCustomPlayerModel[id] = false
#if defined USE_CSTRIKE_MODELSET
cs_reset_user_model(id)
#else
#if defined USE_SETINFO
set_user_info(id, "model", "")
rg_reset_user_model(id)
rh_update_user_info(id)
#else
rg_reset_user_model(id)
#endif
#endif
client_print_color(id, print_team_red, "^4[Girl Skins] ^1You have ^3disabled ^1your ^4custom girl skin^1!")
}
else
{
if (g_bCustomPlayerModel[id][TT] != -1 || g_bCustomPlayerModel[id][CT] != -1)
{
g_bActiveCustomPlayerModel[id] = true
Update_User_Info(id)
client_print_color(id, print_team_blue, "^4[Girl Skins] ^1You have ^3enabled ^1your ^4custom girl skin^1!")
}
else
{
g_bActiveCustomPlayerModel[id] = false
Command_GirlSkinMenu(id)
client_print_color(id, print_team_grey, "^4[Girl Skins] ^1You haven't ^3selected ^1your skin yet.. ^4Please, choose it now.")
}
}
return PLUGIN_HANDLED
}
#endif
public Command_GirlSkinMenu(id)
{
static iMenu, i, iCallBack
iMenu = menu_create(fmt("\wChoose Girl Skin for %s", rg_get_user_team(id) == TEAM_TERRORIST ? "\rTerrorist" : "\yCounter-Terrorist"), "GirlSkinMenu_Handler")
#if defined USE_MENU_OPTION
static szMenuItem[MAX_NAME_LENGTH * 2]
#endif
iCallBack = menu_makecallback("GirlSkinMenu_CallBack")
switch (rg_get_user_team(id))
{
case TEAM_TERRORIST:
{
for (i = 0; i < sizeof g_szModels_TT; i++)
{
#if defined USE_MENU_OPTION
if (i == charsmax(g_szModels_CT))
formatex(szMenuItem, charsmax(szMenuItem), "%s^n", g_szModels_TT[i][SKIN_NAME])
else
formatex(szMenuItem, charsmax(szMenuItem), "%s", g_szModels_TT[i][SKIN_NAME])
menu_additem(iMenu, szMenuItem, .callback = iCallBack)
#else
menu_additem(iMenu, g_szModels_TT[i][SKIN_NAME], .callback = iCallBack)
#endif
}
}
case TEAM_CT:
{
for (i = 0; i < sizeof g_szModels_CT; i++)
{
#if defined USE_MENU_OPTION
if (i == charsmax(g_szModels_CT))
formatex(szMenuItem, charsmax(szMenuItem), "%s^n", g_szModels_CT[i][SKIN_NAME])
else
formatex(szMenuItem, charsmax(szMenuItem), "%s", g_szModels_CT[i][SKIN_NAME])
menu_additem(iMenu, szMenuItem, .callback = iCallBack)
#else
menu_additem(iMenu, g_szModels_CT[i][SKIN_NAME], .callback = iCallBack)
#endif
}
}
}
#if defined USE_MENU_OPTION
menu_additem(iMenu, "Remove Custom Model", "*", .callback = iCallBack)
#endif
menu_display(id, iMenu)
return PLUGIN_HANDLED
}
public GirlSkinMenu_CallBack(id, iMenu, Item)
{
#if defined USE_MENU_OPTION
static szData[6], iAccess, iCallBack
menu_item_getinfo(iMenu, Item, iAccess, szData, charsmax(szData), _, _, iCallBack)
if (szData[0] == '*')
{
if (!g_bActiveCustomPlayerModel[id])
{
menu_item_setname(iMenu, Item, fmt("Choose your Skin First.."))
return ITEM_DISABLED
}
}
#endif
if (g_bActiveCustomPlayerModel[id])
{
if (g_bCustomPlayerModel[id][TT] == Item && rg_get_user_team(id) == TEAM_TERRORIST)
{
#if defined USE_MENU_OPTION
menu_item_setname(iMenu, Item, fmt("%s \r[SELECTED]%s", g_szModels_TT[Item][SKIN_NAME], ((Item == charsmax(g_szModels_TT)) ? "^n" : "")))
#else
menu_item_setname(iMenu, Item, fmt("%s \r[SELECTED]", g_szModels_TT[Item][SKIN_NAME]))
#endif
return ITEM_DISABLED
}
if (g_bCustomPlayerModel[id][CT] == Item && rg_get_user_team(id) == TEAM_CT)
{
#if defined USE_MENU_OPTION
menu_item_setname(iMenu, Item, fmt("%s \r[SELECTED]%s", g_szModels_CT[Item][SKIN_NAME], ((Item == charsmax(g_szModels_CT)) ? "^n" : "")))
#else
menu_item_setname(iMenu, Item, fmt("%s \r[SELECTED]", g_szModels_CT[Item][SKIN_NAME]))
#endif
return ITEM_DISABLED
}
}
return ITEM_ENABLED
}
public GirlSkinMenu_Handler(id, iMenu, Item)
{
if (Item == MENU_EXIT)
{
menu_destroy(iMenu)
return PLUGIN_HANDLED
}
#if defined USE_MENU_OPTION
static szData[6], iAccess, iCallBack
menu_item_getinfo(iMenu, Item, iAccess, szData, charsmax(szData), _, _, iCallBack)
if (szData[0] == '*')
{
g_bActiveCustomPlayerModel[id] = false
g_bCustomPlayerModel[id][TT] = g_bCustomPlayerModel[id][CT] = -1
#if defined USE_CSTRIKE_MODELSET
cs_reset_user_model(id)
#else
#if defined USE_SETINFO
set_user_info(id, "model", "")
rg_reset_user_model(id)
rh_update_user_info(id)
#else
rg_reset_user_model(id)
#endif
#endif
menu_destroy(iMenu)
return PLUGIN_HANDLED
}
#endif
g_bActiveCustomPlayerModel[id] = true
switch(rg_get_user_team(id))
{
case TEAM_TERRORIST:
{
g_bCustomPlayerModel[id][TT] = Item
client_print_color(id, print_team_default, "^4[Girl Skins] ^1You have selected skin ^3%s", g_szModels_TT[Item][SKIN_NAME])
}
case TEAM_CT:
{
g_bCustomPlayerModel[id][CT] = Item
client_print_color(id, print_team_default, "^4[Girl Skins] ^1You have selected skin ^3%s", g_szModels_CT[Item][SKIN_NAME])
}
}
Update_User_Info(id)
menu_destroy(iMenu)
return PLUGIN_HANDLED
}
public Update_User_Info(id)
{
if (is_user_alive(id) && g_bActiveCustomPlayerModel[id])
{
switch (rg_get_user_team(id))
{
#if defined USE_CSTRIKE_MODELSET
case TEAM_TERRORIST: cs_set_user_model(id, g_szModels_TT[g_bCustomPlayerModel[id][TT]][MODEL])
case TEAM_CT: cs_set_user_model(id, g_szModels_CT[g_bCustomPlayerModel[id][CT]][MODEL])
#else
#if defined USE_SETINFO
case TEAM_TERRORIST: set_user_info(id, "model", g_szModels_TT[g_bCustomPlayerModel[id][TT]][MODEL])
case TEAM_CT: set_user_info(id, "model", g_szModels_CT[g_bCustomPlayerModel[id][CT]][MODEL])
#else
case TEAM_TERRORIST: rg_set_user_model(id, g_szModels_TT[g_bCustomPlayerModel[id][TT]][MODEL])
case TEAM_CT: rg_set_user_model(id, g_szModels_CT[g_bCustomPlayerModel[id][CT]][MODEL])
#endif
#endif
}
#if defined USE_SETINFO
rh_update_user_info(id)
#endif
if (~get_user_flags(id) & ADMIN_LEVEL_D)
{
remove_user_flags(id, read_flags("z"))
set_user_flags(id, read_flags("p"))
}
}
}
// Save & Load data
public Save_Data(id, szName[])
{
new szData[64]
formatex(szData, charsmax(szData), "%i#%i#%i", g_bActiveCustomPlayerModel[id], g_bCustomPlayerModel[id][TT], g_bCustomPlayerModel[id][CT])
fvault_set_data(g_szFVault_DB, szName, szData)
}
public Load_Data(szName[], id)
{
if (!is_user_connected(id))
return
new szData[64]
if(fvault_get_data(g_szFVault_DB, szName, szData, charsmax(szData)))
{
parse_loaded_data(id, szData, charsmax(szData))
}
else
{
register_new_player(id)
}
}
public parse_loaded_data(id, szData[], iLen)
{
replace_all(szData, iLen, "#", " ")
new szActiveCustomPlayerModel[10], szCustomModelTT[10], szCustomModelCT[10]
parse(szData, szActiveCustomPlayerModel, charsmax(szActiveCustomPlayerModel), szCustomModelTT, charsmax(szCustomModelTT), szCustomModelCT, charsmax(szCustomModelCT))
g_bActiveCustomPlayerModel[id] = str_to_num(szActiveCustomPlayerModel) == 1 ? true : false
g_bCustomPlayerModel[id][TT] = str_to_num(szCustomModelTT)
g_bCustomPlayerModel[id][CT] = str_to_num(szCustomModelCT)
Update_User_Info(id)
}
public register_new_player(id)
{
g_bActiveCustomPlayerModel[id] = false
g_bCustomPlayerModel[id][TT] = -1
g_bCustomPlayerModel[id][CT] = -1
#if defined USE_CSTRIKE_MODELSET
cs_reset_user_model(id)
#else
#if defined USE_SETINFO
set_user_info(id, "model", "")
rh_update_user_info(id)
#else
rg_reset_user_model(id)
#endif
#endif
}
public client_infochanged(id)
{
if (!is_user_connected(id))
return PLUGIN_HANDLED
new szNewName[32], szOldName[32]
get_user_name(id, szOldName, charsmax(szOldName))
get_user_info(id, "name", szNewName, charsmax(szNewName))
if (!equal(szNewName, szOldName))
{
g_szName[id] = szNewName
Save_Data(id, szOldName)
set_task(0.1, "Load_Data", id, szNewName, sizeof(szNewName))
return PLUGIN_HANDLED
}
return PLUGIN_HANDLED
}
public client_putinserver(id)
{
get_user_name(id, g_szName[id], charsmax(g_szName[]))
set_task(0.1, "Load_Data", id, g_szName[id], sizeof(g_szName[]))
}
public client_disconnected(id)
{
Save_Data(id, g_szName[id])
}
#if !defined _reapi_stocks_included
stock try_precache_player_model(const name[], &id = 0) {
new model[128]
formatex(model, charsmax(model), "models/player/%s/%sT.mdl", name, name)
if(file_exists(model))
id = precache_generic(model)
static const extension[] = "T.mdl"
#pragma unused extension
copy(model[strlen(model) - charsmax(extension)], charsmax(model), ".mdl")
return precache_model(model)
}
#endif
LOYAL TO THE OATH OF OMERTА̀
Зад монитора мъжкари, това не го разбирам..
На живо сте мишкари, това го гарантирам!
Седиш на 30 метра от мен като препариран!
Ако има нещо брат, номерът ми е блокиран..
My GitHub Profile
GitHub
My AMXX Includes Collection
AMXX Include Libraries
My Steam Profile (from SteamDB)
Зад монитора мъжкари, това не го разбирам..
На живо сте мишкари, това го гарантирам!
Седиш на 30 метра от мен като препариран!
Ако има нещо брат, номерът ми е блокиран..
My GitHub Profile
GitHub
My AMXX Includes Collection
AMXX Include Libraries
My Steam Profile (from SteamDB)
- Value: 4179€
- Games owned: 1855
- Games played: 754 (40%)
- Hours on record: 4,994.9h
-
cgozzie75
Извън линия - Потребител
- Мнения: 47
- Регистриран на: 08 Ное 2023, 12:46
- Се отблагодари: 25 пъти
- Получена благодарност: 2 пъти
Re: Menu Skin Girl
Страхотно стана по-добре от това няма и на къде големи благодарности... Не затваряй още темата нека 2-3 дена да се тества и с хора и ще пиша се пак знам ли то се нещо изниква но иначе е топ и отново благодаря за направата на плъгина..
-
cgozzie75
Извън линия - Потребител
- Мнения: 47
- Регистриран на: 08 Ное 2023, 12:46
- Се отблагодари: 25 пъти
- Получена благодарност: 2 пъти
Re: Menu Skin Girl
Работи страхотно но сега искам същия но да си добавям оръжия вместо скиновете на играчите ще може ли да го направиш...Точно колко скина не съм решил още но 10 да се напишат ще е като за начало ако трябва да се добавят още мисля че ще се справя да ги добавям после..А те ще бъдат ето тези..
"ak47" "m4a1" "awp" "deagle" "knife" "famas" "galil" + 3 те гранати // Моделите да са v_ и p_
"ak47" "m4a1" "awp" "deagle" "knife" "famas" "galil" + 3 те гранати // Моделите да са v_ и p_
Код за потвърждение: Избери целия код
// AMXXBG Request Topic: https://amxx-bg.info/forum/viewtopic.php?t=12407
// Comment the line if you don't want to use the setinfo as model set
//#define USE_SETINFO
// Comment this line to stop using the cstrike method of setting player models
#define USE_CSTRIKE_MODELSET
// Comment this line to stop the chat command
#define USE_CHAT_COMMAND
// Commant this line to stop option to stop the skin from menu
#define USE_MENU_OPTION
#include <amxmodx>
#include <fvault>
#include <reapi>
#if defined USE_CSTRIKE_MODELSET
#include <cstrike>
#endif
new const g_szFVault_DB[] = "DB_fVault_GirlSkins"
#define VERSION "1.0.0"
enum _:eModelsData
{
SKIN_NAME[MAX_NAME_LENGTH],
MODEL[MAX_NAME_LENGTH]
}
new const g_szModels_TT[][eModelsData] =
{
{ "[TR] [GIRL SKIN] BARBIE #1", "barbi1" },
{ "[TR] [GIRL SKIN] CATWOMAN #2", "cat1" },
{ "[TR] [GIRL SKIN] THE KILLER #3", "kit1" },
{ "[TR] [GIRL SKIN] SNOW WHITE #4", "detka_tt" }
}
new const g_szModels_CT[][eModelsData] =
{
{ "[CT] [GIRL SKIN] BARBIE #1", "barbi2" },
{ "[CT] [GIRL SKIN] CATWOMAN #2", "cat2" },
{ "[CT] [GIRL SKIN] THE KILLER #3", "kit2" },
{ "[CT] [GIRL SKIN] SNOW WHITE #4", "detka_ct" }
}
enum _:ePlayerTeamData
{
TT,
CT
}
new g_bCustomPlayerModel[MAX_CLIENTS + 1][ePlayerTeamData]
new g_szName[MAX_CLIENTS + 1][MAX_NAME_LENGTH]
new g_bActiveCustomPlayerModel[MAX_CLIENTS + 1]
#if !defined _reapi_stocks_included
#define rg_get_user_team(%0) get_member(%0, m_iTeam)
#endif
public plugin_init()
{
register_plugin("xGirls Skin Menu [AMXXBG Request]", VERSION, "Huehue @ AMXX-BG.INFO")
#if defined USE_SETINFO
RegisterHookChain(RG_CBasePlayer_SetClientUserInfoModel, "CBasePlayer_SetClientUserInfoModel", false)
#endif
RegisterHookChain(RG_CBasePlayer_Spawn, "CBasePlayer_Spawn", true)
register_clcmd("say /girl", "Command_GirlSkinMenu")
register_clcmd("say_team /girl", "Command_GirlSkinMenu")
#if defined USE_CHAT_COMMAND
register_clcmd("say /girlskin", "Command_GirlSkinRemove")
register_clcmd("say_team /girlskin", "Command_GirlSkinRemove")
#endif
}
public plugin_precache()
{
static i
for (i = 0; i < sizeof g_szModels_CT; i++)
try_precache_player_model(g_szModels_CT[i][MODEL])
for (i = 0; i < sizeof g_szModels_TT; i++)
try_precache_player_model(g_szModels_TT[i][MODEL])
}
#if defined USE_SETINFO
public CBasePlayer_SetClientUserInfoModel(const id, szInfoBuffer[], szNewModel[])
{
if (g_bActiveCustomPlayerModel[id])
{
switch (rg_get_user_team(id))
{
case TEAM_TERRORIST:
{
SetHookChainArg(3, ATYPE_STRING, g_szModels_TT[g_bCustomPlayerModel[id][TT]][MODEL])
}
case TEAM_CT:
{
SetHookChainArg(3, ATYPE_STRING, g_szModels_CT[g_bCustomPlayerModel[id][CT]][MODEL])
}
}
}
}
#endif
public CBasePlayer_Spawn(id)
{
if (is_user_alive(id))
set_task(0.5, "Update_User_Info", id) // Safecase just because no idea when your other models set
}
#if defined USE_CHAT_COMMAND
public Command_GirlSkinRemove(id)
{
if (g_bActiveCustomPlayerModel[id])
{
g_bActiveCustomPlayerModel[id] = false
#if defined USE_CSTRIKE_MODELSET
cs_reset_user_model(id)
#else
#if defined USE_SETINFO
set_user_info(id, "model", "")
rg_reset_user_model(id)
rh_update_user_info(id)
#else
rg_reset_user_model(id)
#endif
#endif
client_print_color(id, print_team_red, "^4[Girl Skins] ^1You have ^3disabled ^1your ^4custom girl skin^1!")
}
else
{
if (g_bCustomPlayerModel[id][TT] != -1 || g_bCustomPlayerModel[id][CT] != -1)
{
g_bActiveCustomPlayerModel[id] = true
Update_User_Info(id)
client_print_color(id, print_team_blue, "^4[Girl Skins] ^1You have ^3enabled ^1your ^4custom girl skin^1!")
}
else
{
g_bActiveCustomPlayerModel[id] = false
Command_GirlSkinMenu(id)
client_print_color(id, print_team_grey, "^4[Girl Skins] ^1You haven't ^3selected ^1your skin yet.. ^4Please, choose it now.")
}
}
return PLUGIN_HANDLED
}
#endif
public Command_GirlSkinMenu(id)
{
static iMenu, i, iCallBack
iMenu = menu_create(fmt("\wChoose Girl Skin for %s", rg_get_user_team(id) == TEAM_TERRORIST ? "\rTerrorist" : "\yCounter-Terrorist"), "GirlSkinMenu_Handler")
#if defined USE_MENU_OPTION
static szMenuItem[MAX_NAME_LENGTH * 2]
#endif
iCallBack = menu_makecallback("GirlSkinMenu_CallBack")
switch (rg_get_user_team(id))
{
case TEAM_TERRORIST:
{
for (i = 0; i < sizeof g_szModels_TT; i++)
{
#if defined USE_MENU_OPTION
if (i == charsmax(g_szModels_CT))
formatex(szMenuItem, charsmax(szMenuItem), "%s^n", g_szModels_TT[i][SKIN_NAME])
else
formatex(szMenuItem, charsmax(szMenuItem), "%s", g_szModels_TT[i][SKIN_NAME])
menu_additem(iMenu, szMenuItem, .callback = iCallBack)
#else
menu_additem(iMenu, g_szModels_TT[i][SKIN_NAME], .callback = iCallBack)
#endif
}
}
case TEAM_CT:
{
for (i = 0; i < sizeof g_szModels_CT; i++)
{
#if defined USE_MENU_OPTION
if (i == charsmax(g_szModels_CT))
formatex(szMenuItem, charsmax(szMenuItem), "%s^n", g_szModels_CT[i][SKIN_NAME])
else
formatex(szMenuItem, charsmax(szMenuItem), "%s", g_szModels_CT[i][SKIN_NAME])
menu_additem(iMenu, szMenuItem, .callback = iCallBack)
#else
menu_additem(iMenu, g_szModels_CT[i][SKIN_NAME], .callback = iCallBack)
#endif
}
}
}
#if defined USE_MENU_OPTION
menu_additem(iMenu, "Remove Custom Model", "*", .callback = iCallBack)
#endif
menu_display(id, iMenu)
return PLUGIN_HANDLED
}
public GirlSkinMenu_CallBack(id, iMenu, Item)
{
#if defined USE_MENU_OPTION
static szData[6], iAccess, iCallBack
menu_item_getinfo(iMenu, Item, iAccess, szData, charsmax(szData), _, _, iCallBack)
if (szData[0] == '*')
{
if (!g_bActiveCustomPlayerModel[id])
{
menu_item_setname(iMenu, Item, fmt("Choose your Skin First.."))
return ITEM_DISABLED
}
}
#endif
if (g_bActiveCustomPlayerModel[id])
{
if (g_bCustomPlayerModel[id][TT] == Item && rg_get_user_team(id) == TEAM_TERRORIST)
{
#if defined USE_MENU_OPTION
menu_item_setname(iMenu, Item, fmt("%s \r[SELECTED]%s", g_szModels_TT[Item][SKIN_NAME], ((Item == charsmax(g_szModels_TT)) ? "^n" : "")))
#else
menu_item_setname(iMenu, Item, fmt("%s \r[SELECTED]", g_szModels_TT[Item][SKIN_NAME]))
#endif
return ITEM_DISABLED
}
if (g_bCustomPlayerModel[id][CT] == Item && rg_get_user_team(id) == TEAM_CT)
{
#if defined USE_MENU_OPTION
menu_item_setname(iMenu, Item, fmt("%s \r[SELECTED]%s", g_szModels_CT[Item][SKIN_NAME], ((Item == charsmax(g_szModels_CT)) ? "^n" : "")))
#else
menu_item_setname(iMenu, Item, fmt("%s \r[SELECTED]", g_szModels_CT[Item][SKIN_NAME]))
#endif
return ITEM_DISABLED
}
}
return ITEM_ENABLED
}
public GirlSkinMenu_Handler(id, iMenu, Item)
{
if (Item == MENU_EXIT)
{
menu_destroy(iMenu)
return PLUGIN_HANDLED
}
#if defined USE_MENU_OPTION
static szData[6], iAccess, iCallBack
menu_item_getinfo(iMenu, Item, iAccess, szData, charsmax(szData), _, _, iCallBack)
if (szData[0] == '*')
{
g_bActiveCustomPlayerModel[id] = false
g_bCustomPlayerModel[id][TT] = g_bCustomPlayerModel[id][CT] = -1
#if defined USE_CSTRIKE_MODELSET
cs_reset_user_model(id)
#else
#if defined USE_SETINFO
set_user_info(id, "model", "")
rg_reset_user_model(id)
rh_update_user_info(id)
#else
rg_reset_user_model(id)
#endif
#endif
menu_destroy(iMenu)
return PLUGIN_HANDLED
}
#endif
g_bActiveCustomPlayerModel[id] = true
switch(rg_get_user_team(id))
{
case TEAM_TERRORIST:
{
g_bCustomPlayerModel[id][TT] = Item
client_print_color(id, print_team_default, "^4[Girl Skins] ^1You have selected skin ^3%s", g_szModels_TT[Item][SKIN_NAME])
}
case TEAM_CT:
{
g_bCustomPlayerModel[id][CT] = Item
client_print_color(id, print_team_default, "^4[Girl Skins] ^1You have selected skin ^3%s", g_szModels_CT[Item][SKIN_NAME])
}
}
Update_User_Info(id)
menu_destroy(iMenu)
return PLUGIN_HANDLED
}
public Update_User_Info(id)
{
if (is_user_alive(id) && g_bActiveCustomPlayerModel[id])
{
switch (rg_get_user_team(id))
{
#if defined USE_CSTRIKE_MODELSET
case TEAM_TERRORIST: cs_set_user_model(id, g_szModels_TT[g_bCustomPlayerModel[id][TT]][MODEL])
case TEAM_CT: cs_set_user_model(id, g_szModels_CT[g_bCustomPlayerModel[id][CT]][MODEL])
#else
#if defined USE_SETINFO
case TEAM_TERRORIST: set_user_info(id, "model", g_szModels_TT[g_bCustomPlayerModel[id][TT]][MODEL])
case TEAM_CT: set_user_info(id, "model", g_szModels_CT[g_bCustomPlayerModel[id][CT]][MODEL])
#else
case TEAM_TERRORIST: rg_set_user_model(id, g_szModels_TT[g_bCustomPlayerModel[id][TT]][MODEL])
case TEAM_CT: rg_set_user_model(id, g_szModels_CT[g_bCustomPlayerModel[id][CT]][MODEL])
#endif
#endif
}
#if defined USE_SETINFO
rh_update_user_info(id)
#endif
if (~get_user_flags(id) & ADMIN_LEVEL_D)
{
remove_user_flags(id, read_flags("z"))
set_user_flags(id, read_flags("p"))
}
}
}
// Save & Load data
public Save_Data(id, szName[])
{
new szData[64]
formatex(szData, charsmax(szData), "%i#%i#%i", g_bActiveCustomPlayerModel[id], g_bCustomPlayerModel[id][TT], g_bCustomPlayerModel[id][CT])
fvault_set_data(g_szFVault_DB, szName, szData)
}
public Load_Data(szName[], id)
{
if (!is_user_connected(id))
return
new szData[64]
if(fvault_get_data(g_szFVault_DB, szName, szData, charsmax(szData)))
{
parse_loaded_data(id, szData, charsmax(szData))
}
else
{
register_new_player(id)
}
}
public parse_loaded_data(id, szData[], iLen)
{
replace_all(szData, iLen, "#", " ")
new szActiveCustomPlayerModel[10], szCustomModelTT[10], szCustomModelCT[10]
parse(szData, szActiveCustomPlayerModel, charsmax(szActiveCustomPlayerModel), szCustomModelTT, charsmax(szCustomModelTT), szCustomModelCT, charsmax(szCustomModelCT))
g_bActiveCustomPlayerModel[id] = str_to_num(szActiveCustomPlayerModel) == 1 ? true : false
g_bCustomPlayerModel[id][TT] = str_to_num(szCustomModelTT)
g_bCustomPlayerModel[id][CT] = str_to_num(szCustomModelCT)
Update_User_Info(id)
}
public register_new_player(id)
{
g_bActiveCustomPlayerModel[id] = false
g_bCustomPlayerModel[id][TT] = -1
g_bCustomPlayerModel[id][CT] = -1
#if defined USE_CSTRIKE_MODELSET
cs_reset_user_model(id)
#else
#if defined USE_SETINFO
set_user_info(id, "model", "")
rh_update_user_info(id)
#else
rg_reset_user_model(id)
#endif
#endif
}
public client_infochanged(id)
{
if (!is_user_connected(id))
return PLUGIN_HANDLED
new szNewName[32], szOldName[32]
get_user_name(id, szOldName, charsmax(szOldName))
get_user_info(id, "name", szNewName, charsmax(szNewName))
if (!equal(szNewName, szOldName))
{
g_szName[id] = szNewName
Save_Data(id, szOldName)
set_task(0.1, "Load_Data", id, szNewName, sizeof(szNewName))
return PLUGIN_HANDLED
}
return PLUGIN_HANDLED
}
public client_putinserver(id)
{
get_user_name(id, g_szName[id], charsmax(g_szName[]))
set_task(0.1, "Load_Data", id, g_szName[id], sizeof(g_szName[]))
}
public client_disconnected(id)
{
Save_Data(id, g_szName[id])
}
#if !defined _reapi_stocks_included
stock try_precache_player_model(const name[], &id = 0) {
new model[128]
formatex(model, charsmax(model), "models/player/%s/%sT.mdl", name, name)
if(file_exists(model))
id = precache_generic(model)
static const extension[] = "T.mdl"
#pragma unused extension
copy(model[strlen(model) - charsmax(extension)], charsmax(model), ".mdl")
return precache_model(model)
}
#endif
-
- Подобни теми
- Отговори
- Преглеждания
- Последно мнение
-
- 9 Отговори
- 2156 Преглеждания
-
Последно мнение от zolfeca
-
- 2 Отговори
- 1544 Преглеждания
-
Последно мнение от Mucii
-
- 8 Отговори
- 3599 Преглеждания
-
Последно мнение от TheFatal
-
- 0 Отговори
- 951 Преглеждания
-
Последно мнение от mharisrazaa
-
- 11 Отговори
- 586 Преглеждания
-
Последно мнение от HeatoN
-
- 0 Отговори
- 380 Преглеждания
-
Последно мнение от petyrkpetrov
-
- 3 Отговори
- 1232 Преглеждания
-
Последно мнение от cgozzie
Кой е на линия
Потребители разглеждащи този форум: Bing [Bot] и 6 госта