Counter-Strike 1.6
CS1.BG | DUST2 NOSHTA GARMI [RANKED PLAY] #1
45.144.155.113:27015
de_dust2
Играчи: 30/32
de_dust2
Counter-Strike 1.6
Cs-PlovdiV.com - Aim Attack 93.123.16.4:27022 aim_aztec Играчи: 0/16

Преработка на Hats Menu

В този раздел можете да подавате всякакви заявки за намиране, изработка или преработка на плъгини/модове.
Аватар
HeatoN
Извън линия
Потребител
Потребител
Мнения: 232
Регистриран на: 04 Фев 2022, 16:16
Местоположение: Elhovo - Las Vegas
Се отблагодари: 35 пъти
Получена благодарност: 2 пъти
Обратна връзка:

Преработка на Hats Menu

Мнение от HeatoN » 04 Мар 2022, 14:21

Здравейте, бих искал ако може да се редактира кода по-долу да излиза със цветни съобщения във чата

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

/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>
#include <fakemeta>

#define PLUG_NAME 		"HATS"
#define PLUG_AUTH 		"SgtBane"
#define PLUG_VERS 		"1.8"
#define PLUG_TAG 		"HATS"
#define PLUG_ADMIN		ADMIN_RCON		//Access flags required to give/remove hats
#define PLUG_ADMINB 	ADMIN_CHAT		//Access flags required to set personal hat if admin only is enabled

#define OFFSET_GLOWSET	100

#define HAT_ALL			0
#define HAT_ADMIN		1
#define HAT_TERROR		2
#define HAT_COUNTER		3

#define menusize 		220
#define maxTry			15				//Number of tries to get someone a non-admin random hat before giving up.
#define modelpath		"models/hat"

stock fm_set_entity_visibility(index, visible = 1) set_pev(index, pev_effects, visible == 1 ? pev(index, pev_effects) & ~EF_NODRAW : pev(index, pev_effects) | EF_NODRAW)

new g_HatEnt[33]
new CurrentHat[33]
new CurrentMenu[33]

new HatFile[64]
new MenuPages, TotalHats

#define MAX_HATS 64
new HATMDL[MAX_HATS][26]
new HATNAME[MAX_HATS][26]
new HATREST[MAX_HATS]

new P_AdminOnly
new P_AdminHats
new P_RandomJoin
new P_BotRandom
new P_ForceHat
new P_Glow

public plugin_init() {
	register_plugin(PLUG_NAME, PLUG_VERS, PLUG_AUTH)
	register_logevent("event_roundstart", 	2,	"1=Round_Start")
	register_event("TeamInfo", 				"event_team_info", 	"a" )
	
	register_concmd("amx_givehat", 		"Give_Hat", 	PLUG_ADMIN, 	"<nick> <mdl #>")
	register_concmd("amx_removehats", 	"Remove_Hat", 	PLUG_ADMIN, 	" - Removes hats from everyone.")
	
	register_menucmd(register_menuid("\yHat Menu: [Page"),	(1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<7|1<<8|1<<9),"MenuCommand")
	register_clcmd("say /hats",			"ShowMenu", -1, 	"Shows Knife menu")
	
	P_AdminOnly		= register_cvar("hat_adminonly",	"0")	//Only admins can use the menu
	P_AdminHats 	= register_cvar("hat_adminhats",	"1")	//Allow hats for admins only (if 0, hats specifically for admins can be used by anyone)
	P_RandomJoin	= register_cvar("hat_random",		"1")	//Random hats for players as they join
	P_BotRandom		= register_cvar("hat_bots",			"1")	//Random hats for bots as they join
	P_ForceHat		= register_cvar("hat_force",		"0")	//Force a specific hat (if not 0)
	P_Glow			= register_cvar("hat_glow",			"1")	//0=None,1=GlowWithPlayer,2=TeamColor
}

public ShowMenu(id) {
	if ((get_pcvar_num(P_AdminOnly) == 1 && get_user_flags(id) & PLUG_ADMIN) || (get_pcvar_num(P_AdminOnly) == 0 && get_pcvar_num(P_ForceHat) == 0)) {
		CurrentMenu[id] = 1
		ShowHats(id)
	} else {
		client_print(id,print_chat,"[%s] Only admins may currently use this menu.",PLUG_TAG)
	}
	return PLUGIN_HANDLED
}

public ShowHats(id) {
	new keys = (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<7|1<<8|1<<9)
	
	new szMenuBody[menusize + 1], WpnID
	new nLen = format(szMenuBody, menusize, "\yHat Menu: [Page %i/%i]^n",CurrentMenu[id],MenuPages)
	
	new MnuClr[3]
	// Get Hat Names And Add Them To The List
	for (new hatid=0; hatid < 8; hatid++) {
		WpnID = ((CurrentMenu[id] * 8) + hatid - 8)
		if (WpnID < TotalHats) {
			menucolor(id, WpnID, MnuClr)
			nLen += format(szMenuBody[nLen], menusize-nLen, "^n\w%i.%s %s", hatid + 1, MnuClr, HATNAME[WpnID])
		}
	}
	
	// Next Page And Previous/Close
	if (CurrentMenu[id] == MenuPages) {
		nLen += format(szMenuBody[nLen], menusize-nLen, "^n^n\d9. Next Page")
	} else {
		nLen += format(szMenuBody[nLen], menusize-nLen, "^n^n\w9. Next Page")
	}
	
	if (CurrentMenu[id] > 1) {
		nLen += format(szMenuBody[nLen], menusize-nLen, "^n\w0. Previous Page")
	} else {
		nLen += format(szMenuBody[nLen], menusize-nLen, "^n\w0. Close")
	}
	show_menu(id, keys, szMenuBody, -1)
	return PLUGIN_HANDLED
}

public MenuCommand(id, key) {
	switch(key)
	{
		case 8:		//9 - [Next Page]
		{
			if (CurrentMenu[id] < MenuPages) CurrentMenu[id]++
			ShowHats(id)
			return PLUGIN_HANDLED
		}
		case 9:		//0 - [Close]
		{
			CurrentMenu[id]--
			if (CurrentMenu[id] > 0) ShowHats(id)
			return PLUGIN_HANDLED
		}
		default:
		{
			new HatID = ((CurrentMenu[id] * 8) + key - 8)
			if (HatID < TotalHats) {
				if ((get_pcvar_num(P_AdminHats) == 0 && HATREST[HatID] == HAT_ADMIN) || (get_pcvar_num(P_AdminHats) == 1 && HATREST[HatID] == HAT_ADMIN && get_user_flags(id) & PLUG_ADMINB) || HATREST[HatID] == HAT_ALL || (HATREST[HatID] == get_user_team(id) + 1)) {
					Set_Hat(id,HatID,id)
				} else {
					if (HATREST[HatID] == HAT_TERROR && get_user_team(id) == 2) {
						client_print(id,print_chat,"[%s] This hat is currently set as a Terrorist Hat.",PLUG_TAG)
					} else if (HATREST[HatID] == HAT_COUNTER && get_user_team(id) == 1) {
						client_print(id,print_chat,"[%s] This hat is currently set as Counter Terrorist.",PLUG_TAG)
					} else {
						client_print(id,print_chat,"[%s] This hat is currently set as Admin Only.",PLUG_TAG)
					}
				}
			}
		}
	}
	return PLUGIN_HANDLED
}

public plugin_precache() {
	new cfgDir[32]
	get_configsdir(cfgDir,31)
	formatex(HatFile,63,"%s/HatList.ini",cfgDir)
	command_load()
	new tmpfile [101]
	for (new i = 1; i < TotalHats; ++i) {
		format(tmpfile, 100, "%s/%s", modelpath, HATMDL[i])
		if (file_exists (tmpfile)) {
			precache_model(tmpfile)
			server_print("[%s] Precached %s", PLUG_TAG, HATMDL[i])
		} else {
			server_print("[%s] Failed to precache %s", PLUG_TAG, tmpfile)
		}
	}
}

public client_putinserver(id) {
	if (get_pcvar_num(P_ForceHat) == 1) {
		new forceID = get_pcvar_num(P_ForceHat)
		if (forceID <= TotalHats - 1) {
			forcehat(id, forceID)
		} else {
			set_pcvar_num(P_ForceHat, 0)
		}
	} else if (get_pcvar_num(P_RandomJoin) == 1 || (get_pcvar_num(P_BotRandom) == 1 && is_user_bot(id))) {
		if (get_pcvar_num(P_ForceHat) == 0) Random_Hat(id)
	}
	return PLUGIN_CONTINUE
}

public event_team_info() {
	if (get_pcvar_num(P_ForceHat) != 0) return
	new id = read_data(1)
	if (HATREST[CurrentHat[id]] == HAT_ALL) return
	if (HATREST[CurrentHat[id]] == HAT_ADMIN && get_user_flags(id) & PLUG_ADMINB) return
	
	new team[3]
	read_data(2, team, 2)
	switch(team[0]) {
		case 'C': {
			if (HATREST[CurrentHat[id]] != HAT_COUNTER) Random_Hat(id)
		}
		case 'T': {
			if (HATREST[CurrentHat[id]] != HAT_TERROR) Random_Hat(id)
		}
		case 'S': {
			Set_Hat(id, 0, 0)
		}
	}
	return
}
public event_roundstart() {
	new forceID = get_pcvar_num(P_ForceHat)
	for (new i = 0; i < get_maxplayers(); ++i) {
		if (is_user_connected(i) && g_HatEnt[i] > 0) {
			if (forceID != 0) {
				forcehat(i, forceID)
			}
			glowhat(i)
		}
	}
	return PLUGIN_CONTINUE
}

public Give_Hat(id, req_flag)
{
	if( !(get_user_flags(id) & req_flag) )
		return PLUGIN_HANDLED
	
	new smodelnum[5], name[32]
	read_argv(1,name,31)
	read_argv(2,smodelnum,4)
	
	new player = cmd_target(id,name,2)
	if (!player) {
		client_print(id,print_chat,"[%s] Player With That Name Does Not Exist.",PLUG_TAG)
		return PLUGIN_HANDLED
	}
	
	new imodelnum = (str_to_num(smodelnum))
	if (imodelnum > MAX_HATS) return PLUGIN_HANDLED
	
	Set_Hat(player,imodelnum,id)

	return PLUGIN_CONTINUE
}

public Remove_Hat(id, req_flag)
{
	if( !(get_user_flags(id) & req_flag) )
		return PLUGIN_HANDLED

	for (new i = 0; i < get_maxplayers(); ++i) {
		if (is_user_connected(i) && g_HatEnt[i] > 0) {
			Set_Hat(id, 0, 0)
		}
	}
	client_print(id,print_chat,"[%s] Removed hats from everyone.",PLUG_TAG)
	return PLUGIN_CONTINUE
}

public Random_Hat(id) {
	new bool:foundrnd = false, cntTry = 0, randID = random_num (1, TotalHats - 1)
	while (cntTry < maxTry && foundrnd == false) {
		randID = random_num (1, TotalHats - 1)
		cntTry += 1
		if (HATREST[randID] == HAT_ALL) foundrnd = true
		if (HATREST[randID] == HAT_ADMIN && get_user_flags(id) & PLUG_ADMINB) foundrnd = true
		if ((get_user_team(id) != 0) && HATREST[CurrentHat[id]] == get_user_team(id) + 1) foundrnd = true
	}
	if (foundrnd == true) {	//If a valid random hat is found, apply it.
		Set_Hat(id, randID , 0)
	} else {				//Otherwise, don't use any hat.
		Set_Hat(id, 0, 0)	
	}
	return PLUGIN_CONTINUE
}

public Set_Hat(player, imodelnum, targeter) {
	new name[32]
	new tmpfile[101]
	format(tmpfile, 100, "%s/%s", modelpath, HATMDL[imodelnum])
	get_user_name(player, name, 31)
	if (imodelnum == 0) {
		if(g_HatEnt[player] > 0) {
			fm_set_entity_visibility(g_HatEnt[player], 0)
		}
		if (targeter != 0) {
			client_print(targeter, print_chat, "[%s] Removed hat from %s",PLUG_TAG,name)
		}
	} else if (file_exists(tmpfile)) {
		if(g_HatEnt[player] < 1) {
			g_HatEnt[player] = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))
			if(g_HatEnt[player] > 0) {
				set_pev(g_HatEnt[player], pev_movetype, MOVETYPE_FOLLOW)
				set_pev(g_HatEnt[player], pev_aiment, player)
				set_pev(g_HatEnt[player], pev_rendermode, 	kRenderNormal)
				engfunc(EngFunc_SetModel, g_HatEnt[player], tmpfile)
			}
		} else {
			engfunc(EngFunc_SetModel, g_HatEnt[player], tmpfile)
		}
		glowhat(player)
		CurrentHat[player] = imodelnum
		if (targeter != 0) {
			client_print(targeter, print_chat, "[%s] Set %s on %s",PLUG_TAG,HATNAME[imodelnum],name)
		}
	}
}

public command_load() {
	if(file_exists(HatFile)) {
		HATMDL[0] = ""
		HATNAME[0] = "None"
		TotalHats = 1
		new TempCrapA[2]
		new sfLineData[128]
		new file = fopen(HatFile,"rt")
		while(file && !feof(file)) {
			fgets(file,sfLineData,127)
			
			// Skip Comment ; // and Empty Lines 
			if (sfLineData[0] == ';' || strlen(sfLineData) < 1 || (sfLineData[0] == '/' && sfLineData[1] == '/')) continue
			
			// BREAK IT UP!
			parse(sfLineData, HATMDL[TotalHats], 25, HATNAME[TotalHats], 25, TempCrapA, 1)
			
			if (TempCrapA[0] == 'A' || TempCrapA[0] == '1') {
				HATREST[TotalHats] = HAT_ADMIN
			} else if (TempCrapA[0] == 'T' || TempCrapA[0] == '2') {
				HATREST[TotalHats] = HAT_TERROR
			} else if (TempCrapA[0] == 'C' || TempCrapA[0] == '3') {
				HATREST[TotalHats] = HAT_COUNTER
			} else {
				HATREST[TotalHats] = HAT_ALL
			}
			TotalHats += 1
			if(TotalHats >= MAX_HATS) {
				server_print("[%s] Reached hat limit",PLUG_TAG)
				break
			}
		}
		if(file) fclose(file)
	}
	MenuPages = floatround((TotalHats / 8.0), floatround_ceil)
	server_print("[%s] Loaded %i hats, and Generated %i pages",PLUG_TAG,TotalHats,MenuPages)
}


menucolor(id, ItemID, MnuClr[3]) {
	//If its the hat they currently have on
	if (ItemID == CurrentHat[id]) {
		MnuClr = "\d"
		return
	}
	if (HATREST[ItemID] != HAT_ALL) {
		//If its an AdminHat&They are NOT an admin
		if (HATREST[ItemID] == HAT_ADMIN && get_pcvar_num(P_AdminHats) == 1) {
			if (get_user_flags(id) & PLUG_ADMINB) {
				MnuClr = "\y"
			} else {
				MnuClr = "\r"
			}
		//If this is a hat set for there team or not
		} else if (HATREST[ItemID] != get_user_team(id) + 1) {
			MnuClr = "\r"
		} else {
			MnuClr = "\y"
		}
	} else {
		MnuClr = "\w"
	}
	return
}

glowhat(id) {
	if (!pev_valid(g_HatEnt[id])) return
	if (get_pcvar_num(P_Glow) != 0) {	//If Glowing Hats Are Enabled
		set_pev(g_HatEnt[id], pev_renderfx,	kRenderFxGlowShell)
		if (get_pcvar_num(P_Glow) == 2) {	//If Not Team Specific, Use Player Glow On Hat
			new Float:curcolors[3], Float:curamt
			pev(id, pev_rendercolor, curcolors)
			pev(id, pev_renderamt, curamt)
			set_pev(g_HatEnt[id], pev_rendercolor, curcolors)
			set_pev(g_HatEnt[id], pev_renderamt, curamt)
		} else {								//If Team Specific, Red=T, Blue=CT
			if (get_user_team(id) == 1) {
				set_pev(g_HatEnt[id], pev_rendercolor, {200.0, 0.0, 0.0})
			} else if (get_user_team(id) == 2) {
				set_pev(g_HatEnt[id], pev_rendercolor, {0.0, 0.0, 200.0})
			}
			set_pev(g_HatEnt[id], pev_renderamt,	50.0)
		}
	} else {
		set_pev(g_HatEnt[id], pev_renderfx,	kRenderFxNone)
		set_pev(g_HatEnt[id], pev_renderamt,	0.0)
	}
	fm_set_entity_visibility(g_HatEnt[id], 1)
	return
}

forcehat(id, forceID) {
	if (forceID == 0) forceID = get_pcvar_num(P_ForceHat)
	if (forceID != 0) {
		if (forceID <= TotalHats - 1) {
			if (forceID != CurrentHat[id]) Set_Hat(id, forceID, 0)
		} else {
			set_pcvar_num(P_ForceHat, 0)
		}
	}
}
Здравейте, Ние сме Dark-Star Counter-Strike базирана верига стремяща се да предостави качествени сървъри на своитепотребители
〢☆ При нас може да намерите:
〢☆ активен и помагащ STAFF
〢☆ Качествени сървъри.
〢☆ 24/7 поддръжка.
〢☆ Нашият дискорд: https://discord.gg/cPw8xauRPq
Изображение

Аватар
thoughtz
Извън линия
Модератор
Модератор
Мнения: 585
Регистриран на: 13 Окт 2016, 00:32
Местоположение: гр. София
Се отблагодари: 112 пъти
Получена благодарност: 79 пъти
Обратна връзка:

Преработка на Hats Menu

Мнение от thoughtz » 04 Мар 2022, 15:17

viewtopic.php?t=732
Прегледай тази тема.

Аватар
HeatoN
Извън линия
Потребител
Потребител
Мнения: 232
Регистриран на: 04 Фев 2022, 16:16
Местоположение: Elhovo - Las Vegas
Се отблагодари: 35 пъти
Получена благодарност: 2 пъти
Обратна връзка:

Преработка на Hats Menu

Мнение от HeatoN » 04 Мар 2022, 16:50

Пробвах но не стана нищо ако може ти да ми го направиш :yahoo: :yahoo:
Здравейте, Ние сме Dark-Star Counter-Strike базирана верига стремяща се да предостави качествени сървъри на своитепотребители
〢☆ При нас може да намерите:
〢☆ активен и помагащ STAFF
〢☆ Качествени сървъри.
〢☆ 24/7 поддръжка.
〢☆ Нашият дискорд: https://discord.gg/cPw8xauRPq
Изображение

Аватар
Stilex
Извън линия
Потребител
Потребител
Мнения: 138
Регистриран на: 27 Авг 2021, 23:58
Се отблагодари: 13 пъти
Получена благодарност: 7 пъти
Обратна връзка:

Преработка на Hats Menu

Мнение от Stilex » 04 Мар 2022, 18:49

Прочети внимателно темата която ти е дадена от @thoughtz и се помъчи сам да го направиш.

Аватар
SmirnoffBG
Извън линия
Потребител
Потребител
Мнения: 267
Регистриран на: 27 Ное 2016, 19:43
Местоположение: nz
Се отблагодари: 77 пъти
Получена благодарност: 38 пъти
Обратна връзка:

Преработка на Hats Menu

Мнение от SmirnoffBG » 04 Мар 2022, 20:50

ако кажеш къде си се запънал ще ти помогна да си го направиш
El-Super Respawn = 87.121.54.85:27016
BG Trewa Respawn = 91.92.137.205:27015

Аватар
illusion
Извън линия
Developer
Developer
Мнения: 1825
Регистриран на: 27 Ное 2016, 17:47
Местоположение: CraftVision
Се отблагодари: 151 пъти
Получена благодарност: 370 пъти
Обратна връзка:

Преработка на Hats Menu

Мнение от illusion » 04 Мар 2022, 22:47

В буквалният смисъл трябва да добавиш една библиотека и да редактираш реда/редовете, в които се използват чат командите. Index параметъра трябва да е същият, не забравяй.
Изработки на поръчкови уеб системи, уеб дизайни и графични изображения
Discord Server

Аватар
HeatoN
Извън линия
Потребител
Потребител
Мнения: 232
Регистриран на: 04 Фев 2022, 16:16
Местоположение: Elhovo - Las Vegas
Се отблагодари: 35 пъти
Получена благодарност: 2 пъти
Обратна връзка:

Преработка на Hats Menu

Мнение от HeatoN » 06 Мар 2022, 03:21

Опитах се но нищо не стана :gamer3:
Здравейте, Ние сме Dark-Star Counter-Strike базирана верига стремяща се да предостави качествени сървъри на своитепотребители
〢☆ При нас може да намерите:
〢☆ активен и помагащ STAFF
〢☆ Качествени сървъри.
〢☆ 24/7 поддръжка.
〢☆ Нашият дискорд: https://discord.gg/cPw8xauRPq
Изображение

Аватар
Huehue
Извън линия
Модератор
Модератор
Мнения: 352
Регистриран на: 16 Яну 2017, 23:42
Местоположение: София
Се отблагодари: 7 пъти
Получена благодарност: 171 пъти
Обратна връзка:

Преработка на Hats Menu

Мнение от Huehue » 06 Мар 2022, 11:36

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

/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>
#include <fakemeta>

#include <cromchat>

#define PLUG_NAME 		"HATS"
#define PLUG_AUTH 		"SgtBane"
#define PLUG_VERS 		"1.8"
#define PLUG_TAG 		"HATS"
#define PLUG_ADMIN		ADMIN_RCON		//Access flags required to give/remove hats
#define PLUG_ADMINB 	ADMIN_CHAT		//Access flags required to set personal hat if admin only is enabled

#define OFFSET_GLOWSET	100

#define HAT_ALL			0
#define HAT_ADMIN		1
#define HAT_TERROR		2
#define HAT_COUNTER		3

#define menusize 		220
#define maxTry			15				//Number of tries to get someone a non-admin random hat before giving up.
#define modelpath		"models/hat"

stock fm_set_entity_visibility(index, visible = 1) set_pev(index, pev_effects, visible == 1 ? pev(index, pev_effects) & ~EF_NODRAW : pev(index, pev_effects) | EF_NODRAW)

new g_HatEnt[33]
new CurrentHat[33]
new CurrentMenu[33]

new HatFile[64]
new MenuPages, TotalHats

#define MAX_HATS 64
new HATMDL[MAX_HATS][26]
new HATNAME[MAX_HATS][26]
new HATREST[MAX_HATS]

new P_AdminOnly
new P_AdminHats
new P_RandomJoin
new P_BotRandom
new P_ForceHat
new P_Glow

public plugin_init() {
	register_plugin(PLUG_NAME, PLUG_VERS, PLUG_AUTH)
	register_logevent("event_roundstart", 	2,	"1=Round_Start")
	register_event("TeamInfo", 				"event_team_info", 	"a" )
	
	register_concmd("amx_givehat", 		"Give_Hat", 	PLUG_ADMIN, 	"<nick> <mdl #>")
	register_concmd("amx_removehats", 	"Remove_Hat", 	PLUG_ADMIN, 	" - Removes hats from everyone.")
	
	register_menucmd(register_menuid("\yHat Menu: [Page"),	(1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<7|1<<8|1<<9),"MenuCommand")
	register_clcmd("say /hats",			"ShowMenu", -1, 	"Shows Knife menu")
	
	P_AdminOnly		= register_cvar("hat_adminonly",	"0")	//Only admins can use the menu
	P_AdminHats 	= register_cvar("hat_adminhats",	"1")	//Allow hats for admins only (if 0, hats specifically for admins can be used by anyone)
	P_RandomJoin	= register_cvar("hat_random",		"1")	//Random hats for players as they join
	P_BotRandom		= register_cvar("hat_bots",			"1")	//Random hats for bots as they join
	P_ForceHat		= register_cvar("hat_force",		"0")	//Force a specific hat (if not 0)
	P_Glow			= register_cvar("hat_glow",			"1")	//0=None,1=GlowWithPlayer,2=TeamColor

	CC_SetPrefix("&x04[HATS]&x01")
}

public ShowMenu(id) {
	if ((get_pcvar_num(P_AdminOnly) == 1 && get_user_flags(id) & PLUG_ADMIN) || (get_pcvar_num(P_AdminOnly) == 0 && get_pcvar_num(P_ForceHat) == 0)) {
		CurrentMenu[id] = 1
		ShowHats(id)
	} else {
		CC_SendMessage(id,"&x03Only admins may currently use this menu.")
	}
	return PLUGIN_HANDLED
}

public ShowHats(id) {
	new keys = (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<7|1<<8|1<<9)
	
	new szMenuBody[menusize + 1], WpnID
	new nLen = format(szMenuBody, menusize, "\yHat Menu: [Page %i/%i]^n",CurrentMenu[id],MenuPages)
	
	new MnuClr[3]
	// Get Hat Names And Add Them To The List
	for (new hatid=0; hatid < 8; hatid++) {
		WpnID = ((CurrentMenu[id] * 8) + hatid - 8)
		if (WpnID < TotalHats) {
			menucolor(id, WpnID, MnuClr)
			nLen += format(szMenuBody[nLen], menusize-nLen, "^n\w%i.%s %s", hatid + 1, MnuClr, HATNAME[WpnID])
		}
	}
	
	// Next Page And Previous/Close
	if (CurrentMenu[id] == MenuPages) {
		nLen += format(szMenuBody[nLen], menusize-nLen, "^n^n\d9. Next Page")
	} else {
		nLen += format(szMenuBody[nLen], menusize-nLen, "^n^n\w9. Next Page")
	}
	
	if (CurrentMenu[id] > 1) {
		nLen += format(szMenuBody[nLen], menusize-nLen, "^n\w0. Previous Page")
	} else {
		nLen += format(szMenuBody[nLen], menusize-nLen, "^n\w0. Close")
	}
	show_menu(id, keys, szMenuBody, -1)
	return PLUGIN_HANDLED
}

public MenuCommand(id, key) {
	switch(key)
	{
		case 8:		//9 - [Next Page]
		{
			if (CurrentMenu[id] < MenuPages) CurrentMenu[id]++
			ShowHats(id)
			return PLUGIN_HANDLED
		}
		case 9:		//0 - [Close]
		{
			CurrentMenu[id]--
			if (CurrentMenu[id] > 0) ShowHats(id)
			return PLUGIN_HANDLED
		}
		default:
		{
			new HatID = ((CurrentMenu[id] * 8) + key - 8)
			if (HatID < TotalHats) {
				if ((get_pcvar_num(P_AdminHats) == 0 && HATREST[HatID] == HAT_ADMIN) || (get_pcvar_num(P_AdminHats) == 1 && HATREST[HatID] == HAT_ADMIN && get_user_flags(id) & PLUG_ADMINB) || HATREST[HatID] == HAT_ALL || (HATREST[HatID] == get_user_team(id) + 1)) {
					Set_Hat(id,HatID,id)
				} else {
					if (HATREST[HatID] == HAT_TERROR && get_user_team(id) == 2) {
						CC_SendMessage(id,"This hat is currently set as a &x07Terrorist Hat.")
					} else if (HATREST[HatID] == HAT_COUNTER && get_user_team(id) == 1) {
						CC_SendMessage(id,"This hat is currently set as &x06Counter Terrorist.")
					} else {
						CC_SendMessage(id,"This hat is currently set as &x05Admin Only.")
					}
				}
			}
		}
	}
	return PLUGIN_HANDLED
}

public plugin_precache() {
	new cfgDir[32]
	get_configsdir(cfgDir,31)
	formatex(HatFile,63,"%s/HatList.ini",cfgDir)
	command_load()
	new tmpfile [101]
	for (new i = 1; i < TotalHats; ++i) {
		format(tmpfile, 100, "%s/%s", modelpath, HATMDL[i])
		if (file_exists (tmpfile)) {
			precache_model(tmpfile)
			server_print("[%s] Precached %s", PLUG_TAG, HATMDL[i])
		} else {
			server_print("[%s] Failed to precache %s", PLUG_TAG, tmpfile)
		}
	}
}

public client_putinserver(id) {
	if (get_pcvar_num(P_ForceHat) == 1) {
		new forceID = get_pcvar_num(P_ForceHat)
		if (forceID <= TotalHats - 1) {
			forcehat(id, forceID)
		} else {
			set_pcvar_num(P_ForceHat, 0)
		}
	} else if (get_pcvar_num(P_RandomJoin) == 1 || (get_pcvar_num(P_BotRandom) == 1 && is_user_bot(id))) {
		if (get_pcvar_num(P_ForceHat) == 0) Random_Hat(id)
	}
	return PLUGIN_CONTINUE
}

public event_team_info() {
	if (get_pcvar_num(P_ForceHat) != 0) return
	new id = read_data(1)
	if (HATREST[CurrentHat[id]] == HAT_ALL) return
	if (HATREST[CurrentHat[id]] == HAT_ADMIN && get_user_flags(id) & PLUG_ADMINB) return
	
	new team[3]
	read_data(2, team, 2)
	switch(team[0]) {
		case 'C': {
			if (HATREST[CurrentHat[id]] != HAT_COUNTER) Random_Hat(id)
		}
		case 'T': {
			if (HATREST[CurrentHat[id]] != HAT_TERROR) Random_Hat(id)
		}
		case 'S': {
			Set_Hat(id, 0, 0)
		}
	}
	return
}
public event_roundstart() {
	new forceID = get_pcvar_num(P_ForceHat)
	for (new i = 0; i < get_maxplayers(); ++i) {
		if (is_user_connected(i) && g_HatEnt[i] > 0) {
			if (forceID != 0) {
				forcehat(i, forceID)
			}
			glowhat(i)
		}
	}
	return PLUGIN_CONTINUE
}

public Give_Hat(id, req_flag)
{
	if( !(get_user_flags(id) & req_flag) )
		return PLUGIN_HANDLED
	
	new smodelnum[5], name[32]
	read_argv(1,name,31)
	read_argv(2,smodelnum,4)
	
	new player = cmd_target(id,name,2)
	if (!player) {
		CC_SendMessage(id,"Player With That Name Does Not Exist.")
		return PLUGIN_HANDLED
	}
	
	new imodelnum = (str_to_num(smodelnum))
	if (imodelnum > MAX_HATS) return PLUGIN_HANDLED
	
	Set_Hat(player,imodelnum,id)

	return PLUGIN_CONTINUE
}

public Remove_Hat(id, req_flag)
{
	if( !(get_user_flags(id) & req_flag) )
		return PLUGIN_HANDLED

	for (new i = 0; i < get_maxplayers(); ++i) {
		if (is_user_connected(i) && g_HatEnt[i] > 0) {
			Set_Hat(id, 0, 0)
		}
	}
	CC_SendMessage(id,"Removed hats from everyone.")
	return PLUGIN_CONTINUE
}

public Random_Hat(id) {
	new bool:foundrnd = false, cntTry = 0, randID = random_num (1, TotalHats - 1)
	while (cntTry < maxTry && foundrnd == false) {
		randID = random_num (1, TotalHats - 1)
		cntTry += 1
		if (HATREST[randID] == HAT_ALL) foundrnd = true
		if (HATREST[randID] == HAT_ADMIN && get_user_flags(id) & PLUG_ADMINB) foundrnd = true
		if ((get_user_team(id) != 0) && HATREST[CurrentHat[id]] == get_user_team(id) + 1) foundrnd = true
	}
	if (foundrnd == true) {	//If a valid random hat is found, apply it.
		Set_Hat(id, randID , 0)
	} else {				//Otherwise, don't use any hat.
		Set_Hat(id, 0, 0)	
	}
	return PLUGIN_CONTINUE
}

public Set_Hat(player, imodelnum, targeter) {
	new name[32]
	new tmpfile[101]
	format(tmpfile, 100, "%s/%s", modelpath, HATMDL[imodelnum])
	get_user_name(player, name, 31)
	if (imodelnum == 0) {
		if(g_HatEnt[player] > 0) {
			fm_set_entity_visibility(g_HatEnt[player], 0)
		}
		if (targeter != 0) {
			CC_SendMessage(targeter, "Removed hat from &x03%s",name)
		}
	} else if (file_exists(tmpfile)) {
		if(g_HatEnt[player] < 1) {
			g_HatEnt[player] = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))
			if(g_HatEnt[player] > 0) {
				set_pev(g_HatEnt[player], pev_movetype, MOVETYPE_FOLLOW)
				set_pev(g_HatEnt[player], pev_aiment, player)
				set_pev(g_HatEnt[player], pev_rendermode, 	kRenderNormal)
				engfunc(EngFunc_SetModel, g_HatEnt[player], tmpfile)
			}
		} else {
			engfunc(EngFunc_SetModel, g_HatEnt[player], tmpfile)
		}
		glowhat(player)
		CurrentHat[player] = imodelnum
		if (targeter != 0) {
			CC_SendMessage(targeter, "Set &x04%s &x01on &x03%s",HATNAME[imodelnum],name)
		}
	}
}

public command_load() {
	if(file_exists(HatFile)) {
		HATMDL[0] = ""
		HATNAME[0] = "None"
		TotalHats = 1
		new TempCrapA[2]
		new sfLineData[128]
		new file = fopen(HatFile,"rt")
		while(file && !feof(file)) {
			fgets(file,sfLineData,127)
			
			// Skip Comment ; // and Empty Lines 
			if (sfLineData[0] == ';' || strlen(sfLineData) < 1 || (sfLineData[0] == '/' && sfLineData[1] == '/')) continue
			
			// BREAK IT UP!
			parse(sfLineData, HATMDL[TotalHats], 25, HATNAME[TotalHats], 25, TempCrapA, 1)
			
			if (TempCrapA[0] == 'A' || TempCrapA[0] == '1') {
				HATREST[TotalHats] = HAT_ADMIN
			} else if (TempCrapA[0] == 'T' || TempCrapA[0] == '2') {
				HATREST[TotalHats] = HAT_TERROR
			} else if (TempCrapA[0] == 'C' || TempCrapA[0] == '3') {
				HATREST[TotalHats] = HAT_COUNTER
			} else {
				HATREST[TotalHats] = HAT_ALL
			}
			TotalHats += 1
			if(TotalHats >= MAX_HATS) {
				server_print("[%s] Reached hat limit",PLUG_TAG)
				break
			}
		}
		if(file) fclose(file)
	}
	MenuPages = floatround((TotalHats / 8.0), floatround_ceil)
	server_print("[%s] Loaded %i hats, and Generated %i pages",PLUG_TAG,TotalHats,MenuPages)
}


menucolor(id, ItemID, MnuClr[3]) {
	//If its the hat they currently have on
	if (ItemID == CurrentHat[id]) {
		MnuClr = "\d"
		return
	}
	if (HATREST[ItemID] != HAT_ALL) {
		//If its an AdminHat&They are NOT an admin
		if (HATREST[ItemID] == HAT_ADMIN && get_pcvar_num(P_AdminHats) == 1) {
			if (get_user_flags(id) & PLUG_ADMINB) {
				MnuClr = "\y"
			} else {
				MnuClr = "\r"
			}
		//If this is a hat set for there team or not
		} else if (HATREST[ItemID] != get_user_team(id) + 1) {
			MnuClr = "\r"
		} else {
			MnuClr = "\y"
		}
	} else {
		MnuClr = "\w"
	}
	return
}

glowhat(id) {
	if (!pev_valid(g_HatEnt[id])) return
	if (get_pcvar_num(P_Glow) != 0) {	//If Glowing Hats Are Enabled
		set_pev(g_HatEnt[id], pev_renderfx,	kRenderFxGlowShell)
		if (get_pcvar_num(P_Glow) == 2) {	//If Not Team Specific, Use Player Glow On Hat
			new Float:curcolors[3], Float:curamt
			pev(id, pev_rendercolor, curcolors)
			pev(id, pev_renderamt, curamt)
			set_pev(g_HatEnt[id], pev_rendercolor, curcolors)
			set_pev(g_HatEnt[id], pev_renderamt, curamt)
		} else {								//If Team Specific, Red=T, Blue=CT
			if (get_user_team(id) == 1) {
				set_pev(g_HatEnt[id], pev_rendercolor, {200.0, 0.0, 0.0})
			} else if (get_user_team(id) == 2) {
				set_pev(g_HatEnt[id], pev_rendercolor, {0.0, 0.0, 200.0})
			}
			set_pev(g_HatEnt[id], pev_renderamt,	50.0)
		}
	} else {
		set_pev(g_HatEnt[id], pev_renderfx,	kRenderFxNone)
		set_pev(g_HatEnt[id], pev_renderamt,	0.0)
	}
	fm_set_entity_visibility(g_HatEnt[id], 1)
	return
}

forcehat(id, forceID) {
	if (forceID == 0) forceID = get_pcvar_num(P_ForceHat)
	if (forceID != 0) {
		if (forceID <= TotalHats - 1) {
			if (forceID != CurrentHat[id]) Set_Hat(id, forceID, 0)
		} else {
			set_pcvar_num(P_ForceHat, 0)
		}
	}
}
LOYAL TO THE OATH OF OMERTА̀

Зад монитора мъжкари, това не го разбирам..
На живо сте мишкари, това го гарантирам!
Седиш на 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

Аватар
HeatoN
Извън линия
Потребител
Потребител
Мнения: 232
Регистриран на: 04 Фев 2022, 16:16
Местоположение: Elhovo - Las Vegas
Се отблагодари: 35 пъти
Получена благодарност: 2 пъти
Обратна връзка:

Преработка на Hats Menu

Мнение от HeatoN » 06 Мар 2022, 21:53

Благодаря ти работи може да локвате темата
Здравейте, Ние сме Dark-Star Counter-Strike базирана верига стремяща се да предостави качествени сървъри на своитепотребители
〢☆ При нас може да намерите:
〢☆ активен и помагащ STAFF
〢☆ Качествени сървъри.
〢☆ 24/7 поддръжка.
〢☆ Нашият дискорд: https://discord.gg/cPw8xauRPq
Изображение

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

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

Кой е на линия

Потребители разглеждащи този форум: Bing [Bot], Semrush [Bot] и 20 госта