models menu remove reapi???

В този раздел можете да подавате всякакви заявки за намиране, изработка или преработка на плъгини/модове.
Аватар
Infamous2018
Извън линия
Foreigner
Foreigner
Мнения: 522
Регистриран на: 08 Апр 2018, 16:56
Се отблагодари: 14 пъти
Получена благодарност: 21 пъти

models menu remove reapi???

Мнение от Infamous2018 » 09 Мар 2021, 21:16

can anyone make it without reapi? my Deathrun Mod blocking this.... it would be cool

Код за потвърждение: Избери целия код

#include <amxmodx>
#include <reapi>

#define VERSION "2.0 ReAPI"

enum _:ModelData
{
	ID,
	DISPLAY_NAME[64],
	MODEL_FILE[64],
	MODEL_TEAM,
	MODEL_FLAG[8]
}

new const g_szConfigFile[] = "addons/amxmodx/configs/models_menu.ini";

new Array:g_LoadedModels;
new g_UserModel[33][ModelData];
new g_iMenu[2], g_iTotalModels;

public plugin_init()
{
	register_plugin("Models Menu", VERSION, "TheRedShoko @ AMXX-BG.info");
	register_cvar("models_menu", VERSION, FCVAR_SERVER|FCVAR_UNLOGGED|FCVAR_SPONLY);

	register_clcmd("say /models", "ShowModelsMenu");
	register_clcmd("say_team /models", "ShowModelsMenu");

	RegisterHookChain(RG_CBasePlayer_Spawn, "FwPlayerSpawnPost", 1);
}

public plugin_precache()
{
	g_LoadedModels = ArrayCreate(ModelData);

	LoadConfigFile();
}

public FwPlayerSpawnPost(id)
{
	if (!is_user_alive(id) || g_UserModel[id][ID] == 0)
	{
		return;
	}
	
	if (strlen(g_UserModel[id][MODEL_FLAG]) != 0 && !(get_user_flags(id) & read_flags(g_UserModel[id][MODEL_FLAG])) || g_UserModel[id][MODEL_TEAM] && g_UserModel[id][MODEL_TEAM] != (get_member(id, m_iTeam)) )
	{
		rg_reset_user_model(id);
		ArrayGetArray(g_LoadedModels, 0, g_UserModel[id]);
		return;
	}

	rg_set_user_model(id, g_UserModel[id][MODEL_FILE]);
}

public ShowModelsMenu(id)
{
	if (!IsUserInGame(id))
	{
		return PLUGIN_HANDLED;
	}

	new iTeam = get_member(id, m_iTeam) - 1;

	menu_display(id, g_iMenu[iTeam]);
	return PLUGIN_HANDLED;
}

public ModelsMenuCallback(id, iMenu, Item)
{
	new szTemp[ModelData];
	new szInfo[8], szName[80], iAccess, iCallback;
	menu_item_getinfo(iMenu, Item, iAccess, szInfo, charsmax(szInfo), _, _, iCallback);

	ArrayGetArray(g_LoadedModels, str_to_num(szInfo), szTemp);
	copy(szName, charsmax(szName), szTemp[DISPLAY_NAME]);

	if (!(get_user_flags(id) & read_flags(szTemp[MODEL_FLAG])) && strlen(szTemp[MODEL_FLAG]) != 0)
	{
		add(szName, charsmax(szName), " \r[Admin Only]");
		menu_item_setname(iMenu, Item, szName);
		return ITEM_DISABLED;
	}

	if (szTemp[ID] == g_UserModel[id][ID])
	{
		add(szName, charsmax(szName), " \y[Current Model]");
		menu_item_setname(iMenu, Item, szName);
		return ITEM_DISABLED;
	}

	menu_item_setname(iMenu, Item, szName);

	return ITEM_ENABLED;
}

public ModelsMenuHandler(id, iMenu, Item)
{
	if (Item == MENU_EXIT)
	{
		return;
	}

	new szInfo[8], szName[80], iAccess, iCallback;
	menu_item_getinfo(iMenu, Item, iAccess, szInfo, charsmax(szInfo), szName, charsmax(szName), iCallback);

	ArrayGetArray(g_LoadedModels, str_to_num(szInfo), g_UserModel[id]);

	if (!is_user_alive(id))
	{
		return;
	}

	if (g_UserModel[id][ID] == 0)
	{
		rg_reset_user_model(id);
		return;
	}

	rg_set_user_model(id, g_UserModel[id][MODEL_FILE]);
}

LoadConfigFile()
{
	if (!file_exists(g_szConfigFile))
	{
		write_file(g_szConfigFile, "; Models menu plugin by TheRedShoko @ AMXX-BG.info");
		write_file(g_szConfigFile, "; Syntax: ^"Name to be displayed^" ^"name of the mdl file^" ^"T (1) | CT (2) | Any (0)^" ^"admin flag^"");
		pause("ad");
		return;
	}

	new iLine, szLine[156], iBuffer;
	new szModelData[ModelData];
	copy(szModelData[DISPLAY_NAME], charsmax(szModelData[DISPLAY_NAME]), "Default");
	ArrayPushArray(g_LoadedModels, szModelData);
	g_iTotalModels = 1;

	while ((iLine = read_file(g_szConfigFile, iLine, szLine, charsmax(szLine), iBuffer)))
	{
		if (szLine[0] == EOS || szLine[0] == ';' || szLine[0] == '/' && szLine[1] == '/')
		{
			continue;
		}

		new szModelName[64], szFileName[64], szTeam[8], szFlag[8];
		parse(szLine, szModelName, charsmax(szModelName), szFileName, charsmax(szFileName), szTeam, charsmax(szTeam), szFlag, charsmax(szFlag));

		if (!TryPrecachePlayerModel(szFileName))
		{
			continue;
		}

		copy(szModelData[DISPLAY_NAME], charsmax(szModelData[DISPLAY_NAME]), szModelName);
		copy(szModelData[MODEL_FILE], charsmax(szModelData[MODEL_FILE]), szFileName);

		switch (szTeam[0])
		{
			case '0', 'a', ' ': szModelData[MODEL_TEAM] = 0;
			case '1', 't', 'T': szModelData[MODEL_TEAM] = 1;
			case '2', 'c', 'C': szModelData[MODEL_TEAM] = 2;
		}

		copy(szModelData[MODEL_FLAG], charsmax(szModelData[MODEL_FLAG]), szFlag);

		szModelData[ID] = g_iTotalModels;

		ArrayPushArray(g_LoadedModels, szModelData);
		g_iTotalModels++;
	}

	GenerateModelMenus();
}

GenerateModelMenus()
{
	new  szTempData[ModelData];
	for (new i = 0; i < sizeof g_iMenu; i++)
	{
		g_iMenu[i] = menu_create("Models Menu", "ModelsMenuHandler");
	}

	new iCallback = menu_makecallback("ModelsMenuCallback");
	new szInfo[8];

	for (new j = 0; j < g_iTotalModels; j++)
	{
		ArrayGetArray(g_LoadedModels, j, szTempData);
		num_to_str(j, szInfo, charsmax(szInfo));

		if (szTempData[MODEL_TEAM] != 0)
		{
			menu_additem(g_iMenu[szTempData[MODEL_TEAM] - 1], szTempData[DISPLAY_NAME], szInfo, _, iCallback);
		}
		else
		{
			for (new i = 0; i < sizeof g_iMenu; i++)
			{
				menu_additem(g_iMenu[i], szTempData[DISPLAY_NAME], szInfo, _, iCallback);
			}
		}
	}
}

TryPrecachePlayerModel(const szModel[])
{
	new szFile[128];
	formatex(szFile, charsmax(szFile), "models/player/%s/%s.mdl", szModel, szModel);

	if (!file_exists(szFile))
	{
		return 0;
	}
	
	precache_generic(szFile);
	
	replace_all(szFile, charsmax(szFile), ".mdl", "T.mdl");
	if (file_exists(szFile))
	{
		precache_generic(szFile);
	}

	return 1;
}

bool:IsUserInGame(id)
{
	return is_user_connected(id) && 1 <= get_member(id, m_iTeam) <= 2;
}

Аватар
Infamous2018
Извън линия
Foreigner
Foreigner
Мнения: 522
Регистриран на: 08 Апр 2018, 16:56
Се отблагодари: 14 пъти
Получена благодарност: 21 пъти

models menu remove reapi???

Мнение от Infamous2018 » 11 Мар 2021, 18:13

SOLVED: For everyone without REAPI

Код за потвърждение: Избери целия код

#include <amxmodx>
#include <cstrike>
#include <hamsandwich>

#define VERSION "2.0 ReAPI"

enum _:ModelData
{
	ID,
	DISPLAY_NAME[64],
	MODEL_FILE[64],
	MODEL_TEAM,
	MODEL_FLAG[8]
}

new const g_szConfigFile[] = "addons/amxmodx/configs/models_menu.ini";

new Array:g_LoadedModels;
new g_UserModel[33][ModelData];
new g_iMenu[2], g_iTotalModels;

public plugin_init()
{
	register_plugin("Models Menu", VERSION, "TheRedShoko @ AMXX-BG.info");
	register_cvar("models_menu", VERSION, FCVAR_SERVER|FCVAR_UNLOGGED|FCVAR_SPONLY);

	register_clcmd("say /models", "ShowModelsMenu");
	register_clcmd("say_team /models", "ShowModelsMenu");

	RegisterHam(Ham_Spawn, "player", "FwPlayerSpawnPost", 1);
}

public plugin_precache()
{
	g_LoadedModels = ArrayCreate(ModelData);

	LoadConfigFile();
}

public FwPlayerSpawnPost(id)
{
	if (!is_user_alive(id) || g_UserModel[id][ID] == 0)
	{
		return;
	}
	
	if (
			strlen(g_UserModel[id][MODEL_FLAG]) != 0 && !(get_user_flags(id) & read_flags(g_UserModel[id][MODEL_FLAG])) ||
			g_UserModel[id][MODEL_TEAM] && g_UserModel[id][MODEL_TEAM] != get_user_team(id)
		)
	{
		cs_reset_user_model(id);
		ArrayGetArray(g_LoadedModels, 0, g_UserModel[id]);
		return;
	}

	cs_set_user_model(id, g_UserModel[id][MODEL_FILE]);
}

public ShowModelsMenu(id)
{
	if (!IsUserInGame(id))
	{
		return PLUGIN_HANDLED;
	}

	new iTeam = get_user_team(id) - 1;

	menu_display(id, g_iMenu[iTeam]);
	return PLUGIN_HANDLED;
}

public ModelsMenuCallback(id, iMenu, Item)
{
	new szTemp[ModelData];
	new szInfo[8], szName[80], iAccess, iCallback;
	menu_item_getinfo(iMenu, Item, iAccess, szInfo, charsmax(szInfo), _, _, iCallback);

	ArrayGetArray(g_LoadedModels, str_to_num(szInfo), szTemp);
	copy(szName, charsmax(szName), szTemp[DISPLAY_NAME]);

	if (!(get_user_flags(id) & read_flags(szTemp[MODEL_FLAG])) && strlen(szTemp[MODEL_FLAG]) != 0)
	{
		add(szName, charsmax(szName), " \r[Admin Only]");
		menu_item_setname(iMenu, Item, szName);
		return ITEM_DISABLED;
	}

	if (szTemp[ID] == g_UserModel[id][ID])
	{
		add(szName, charsmax(szName), " \y[Current Model]");
		menu_item_setname(iMenu, Item, szName);
		return ITEM_DISABLED;
	}

	menu_item_setname(iMenu, Item, szName);

	return ITEM_ENABLED;
}

public ModelsMenuHandler(id, iMenu, Item)
{
	if (Item == MENU_EXIT)
	{
		return;
	}

	new szInfo[8], szName[80], iAccess, iCallback;
	menu_item_getinfo(iMenu, Item, iAccess, szInfo, charsmax(szInfo), szName, charsmax(szName), iCallback);

	ArrayGetArray(g_LoadedModels, str_to_num(szInfo), g_UserModel[id]);

	if (!is_user_alive(id))
	{
		return;
	}

	if (g_UserModel[id][ID] == 0)
	{
		cs_reset_user_model(id);
		return;
	}

	cs_set_user_model(id, g_UserModel[id][MODEL_FILE]);
}

LoadConfigFile()
{
	if (!file_exists(g_szConfigFile))
	{
		write_file(g_szConfigFile, "; Models menu plugin by TheRedShoko @ AMXX-BG.info");
		write_file(g_szConfigFile, "; Syntax: ^"Name to be displayed^" ^"name of the mdl file^" ^"T (1) | CT (2) | Any (0)^" ^"admin flag^"");
		pause("ad");
		return;
	}

	new iLine, szLine[156], iBuffer;
	new szModelData[ModelData];
	copy(szModelData[DISPLAY_NAME], charsmax(szModelData[DISPLAY_NAME]), "Default");
	ArrayPushArray(g_LoadedModels, szModelData);
	g_iTotalModels = 1;

	while ((iLine = read_file(g_szConfigFile, iLine, szLine, charsmax(szLine), iBuffer)))
	{
		if (szLine[0] == EOS || szLine[0] == ';' || szLine[0] == '/' && szLine[1] == '/')
		{
			continue;
		}

		new szModelName[64], szFileName[64], szTeam[8], szFlag[8];
		parse(szLine, szModelName, charsmax(szModelName), szFileName, charsmax(szFileName), szTeam, charsmax(szTeam), szFlag, charsmax(szFlag));

		if (!TryPrecachePlayerModel(szFileName))
		{
			continue;
		}

		copy(szModelData[DISPLAY_NAME], charsmax(szModelData[DISPLAY_NAME]), szModelName);
		copy(szModelData[MODEL_FILE], charsmax(szModelData[MODEL_FILE]), szFileName);

		switch (szTeam[0])
		{
			case '0', 'a', ' ': szModelData[MODEL_TEAM] = 0;
			case '1', 't', 'T': szModelData[MODEL_TEAM] = 1;
			case '2', 'c', 'C': szModelData[MODEL_TEAM] = 2;
		}

		copy(szModelData[MODEL_FLAG], charsmax(szModelData[MODEL_FLAG]), szFlag);

		szModelData[ID] = g_iTotalModels;

		ArrayPushArray(g_LoadedModels, szModelData);
		g_iTotalModels++;
	}

	GenerateModelMenus();
}

GenerateModelMenus()
{
	new szTempData[ModelData];
	for (new i = 0; i < sizeof g_iMenu; i++)
	{
		g_iMenu[i] = menu_create("Models Menu", "ModelsMenuHandler");
	}

	new iCallback = menu_makecallback("ModelsMenuCallback");
	new szInfo[8];

	for (new j = 0; j < g_iTotalModels; j++)
	{
		ArrayGetArray(g_LoadedModels, j, szTempData);
		num_to_str(j, szInfo, charsmax(szInfo));

		if (szTempData[MODEL_TEAM] != 0)
		{
			menu_additem(g_iMenu[szTempData[MODEL_TEAM] - 1], szTempData[DISPLAY_NAME], szInfo, _, iCallback);
		}
		else
		{
			for (new i = 0; i < sizeof g_iMenu; i++)
			{
				menu_additem(g_iMenu[i], szTempData[DISPLAY_NAME], szInfo, _, iCallback);
			}
		}
	}
}

TryPrecachePlayerModel(const szModel[])
{
	new szFile[128];
	formatex(szFile, charsmax(szFile), "models/player/%s/%s.mdl", szModel, szModel);

	if (!file_exists(szFile))
	{
		return 0;
	}
	
	precache_generic(szFile);
	
	replace_all(szFile, charsmax(szFile), ".mdl", "T.mdl");
	if (file_exists(szFile))
	{
		precache_generic(szFile);
	}

	return 1;
}

bool:IsUserInGame(id)
{
	return is_user_alive(id) && 1 <= get_user_team(id) <= 2;
}
Thread can be closed.

Заключено
  • Подобни теми
    Отговори
    Преглеждания
     Последно мнение

Обратно към “Заявки за плъгини”

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 15 госта