Raised This Month: $51 Target: $400
 12% 

Hats Plugin Remove some functions


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
Godofwar
AlliedModders Donor
Join Date: Dec 2015
Location: Germany
Old 06-30-2018 , 11:41   Hats Plugin Remove some functions
Reply With Quote #1

Is that possible that when players choose an Hat and an new Round starts, that they get the self hat again what he choosed before? Can anyone add this to the Plugin here or remove the auto remove from this plugin? It would be cool.

Code:
#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)
		}
	}
}
Godofwar is offline
RojedaFeik
Junior Member
Join Date: Sep 2018
Location: Venezuela
Old 09-21-2018 , 22:18   Re: Hats Plugin Remove some functions
Reply With Quote #2

Let's see, try


PHP Code:
#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(indexvisible 1set_pev(indexpev_effectsvisible == pev(indexpev_effects) & ~EF_NODRAW pev(indexpev_effects) | EF_NODRAW)

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

new 
HatFile[64]
new 
MenuPagesTotalHats

#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_NAMEPLUG_VERSPLUG_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_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")
    
register_clcmd("say /czapki",            "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",        "1")    //Force a specific hat (if not 0)
    
P_Glow            register_cvar("hat_glow",            "0")    //0=None,1=GlowWithPlayer,2=TeamColor
}

public 
ShowMenu(id) {
    if ((
get_pcvar_num(P_AdminOnly) == && get_user_flags(id) & PLUG_ADMIN) || (get_pcvar_num(P_AdminOnly) == && 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(szMenuBodymenusize"\yHat Menu: [Page %i/%i]^n",CurrentMenu[id],MenuPages)
    
    new 
MnuClr[3]
    
// Get Hat Names And Add Them To The List
    
for (new hatid=0hatid 8hatid++) {
        
WpnID = ((CurrentMenu[id] * 8) + hatid 8)
        if (
WpnID TotalHats) {
            
menucolor(idWpnIDMnuClr)
            
nLen += format(szMenuBody[nLen], menusize-nLen"^n\w%i.%s %s"hatid 1MnuClrHATNAME[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(idkeysszMenuBody, -1)
    return 
PLUGIN_HANDLED
}

public 
MenuCommand(idkey) {
    switch(
key)
    {
        case 
8:        //9 - [Next Page]
        
{
            if (
CurrentMenu[id] < MenuPagesCurrentMenu[id]++
            
ShowHats(id)
            return 
PLUGIN_HANDLED
        
}
        case 
9:        //0 - [Close]
        
{
            
CurrentMenu[id]--
            if (
CurrentMenu[id] > 0ShowHats(id)
            return 
PLUGIN_HANDLED
        
}
        default:
        {
            new 
HatID = ((CurrentMenu[id] * 8) + key 8)
            if (
HatID TotalHats) {
                if ((
get_pcvar_num(P_AdminHats) == && HATREST[HatID] == HAT_ADMIN) || (get_pcvar_num(P_AdminHats) == && 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 
1TotalHats; ++i) {
        
format(tmpfile100"%s/%s"modelpathHATMDL[i])
        if (
file_exists (tmpfile)) {
            
precache_model(tmpfile)
            
server_print("[%s] Precached %s"PLUG_TAGHATMDL[i])
        } else {
            
server_print("[%s] Failed to precache %s"PLUG_TAGtmpfile)
        }
    }
}

public 
client_putinserver(id) {
    if (
get_pcvar_num(P_ForceHat) == 1) {
        new 
forceID get_pcvar_num(P_ForceHat)
        if (
forceID <= TotalHats 1) {
            
forcehat(idforceID)
        } else {
            
set_pcvar_num(P_ForceHat0)
        }
    } else if (
get_pcvar_num(P_RandomJoin) == || (get_pcvar_num(P_BotRandom) == && is_user_bot(id))) {
        if (
get_pcvar_num(P_ForceHat) == 0Random_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(2team2)
    switch(
team[0]) {
        case 
'C': {
            if (
HATREST[CurrentHat[id]] != HAT_COUNTERRandom_Hat(id)
        }
        case 
'T': {
            if (
HATREST[CurrentHat[id]] != HAT_TERRORRandom_Hat(id)
        }
        case 
'S': {
            
Set_Hat(id00)
        }
    }
    return
}
public 
event_roundstart() {
    new 
forceID get_pcvar_num(P_ForceHat)
    for (new 
0get_maxplayers(); ++i) {
        if (
is_user_connected(i) && g_HatEnt[i] > 0) {
            if (
forceID != 0) {
                
forcehat(iforceID)
            }
            
glowhat(i)
        }
    }
    return 
PLUGIN_CONTINUE
}

public 
Give_Hat(idreq_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 
Random_Hat(id) {
    new 
bool:foundrnd falsecntTry 0randID random_num (1TotalHats 1)
    while (
cntTry maxTry && foundrnd == false) {
        
randID random_num (1TotalHats 1)
        
cntTry += 1
        
if (HATREST[randID] == HAT_ALLfoundrnd true
        
if (HATREST[randID] == HAT_ADMIN && get_user_flags(id) & PLUG_ADMINBfoundrnd true
        
if ((get_user_team(id) != 0) && HATREST[CurrentHat[id]] == get_user_team(id) + 1foundrnd true
    
}
    if (
foundrnd == true) {    //If a valid random hat is found, apply it.
        
Set_Hat(idrandID 0)
    } else {                
//Otherwise, don't use any hat.
        
Set_Hat(id00)    
    }
    return 
PLUGIN_CONTINUE
}

public 
Set_Hat(playerimodelnumtargeter) {
    new 
name[32]
    new 
tmpfile[101]
    
format(tmpfile100"%s/%s"modelpathHATMDL[imodelnum])
    
get_user_name(playername31)
    if (
imodelnum == 0) {
        if(
g_HatEnt[player] > 0) {
            
fm_set_entity_visibility(g_HatEnt[player], 0)
        }
        if (
targeter != 0) {
            
client_print(targeterprint_chat"[%s] Removed hat from %s",PLUG_TAG,name)
        }
    } else if (
file_exists(tmpfile)) {
        if(
g_HatEnt[player] < 1) {
            
g_HatEnt[player] = engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"info_target"))
            if(
g_HatEnt[player] > 0) {
                
set_pev(g_HatEnt[player], pev_movetypeMOVETYPE_FOLLOW)
                
set_pev(g_HatEnt[player], pev_aimentplayer)
                
set_pev(g_HatEnt[player], pev_rendermode,     kRenderNormal)
                
engfunc(EngFunc_SetModelg_HatEnt[player], tmpfile)
            }
        } else {
            
engfunc(EngFunc_SetModelg_HatEnt[player], tmpfile)
        }
        
glowhat(player)
        
CurrentHat[player] = imodelnum
        
if (targeter != 0) {
            
client_print(targeterprint_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) < || (sfLineData[0] == '/' && sfLineData[1] == '/')) continue
            
            
// BREAK IT UP!
            
parse(sfLineDataHATMDL[TotalHats], 25HATNAME[TotalHats], 25TempCrapA1)
            
            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(
filefclose(file)
    }
    
MenuPages floatround((TotalHats 8.0), floatround_ceil)
    
server_print("[%s] Loaded %i hats, and Generated %i pages",PLUG_TAG,TotalHats,MenuPages)
}


menucolor(idItemIDMnuClr[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
(idpev_rendercolorcurcolors)
            
pev(idpev_renderamtcuramt)
            
set_pev(g_HatEnt[id], pev_rendercolorcurcolors)
            
set_pev(g_HatEnt[id], pev_renderamtcuramt)
        } else {                                
//If Team Specific, Red=T, Blue=CT
            
if (get_user_team(id) == 1) {
                
set_pev(g_HatEnt[id], pev_rendercolor, {200.00.00.0})
            } else if (
get_user_team(id) == 2) {
                
set_pev(g_HatEnt[id], pev_rendercolor, {0.00.0200.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(idforceID) {
    if (
forceID == 0forceID get_pcvar_num(P_ForceHat)
    if (
forceID != 0) {
        if (
forceID <= TotalHats 1) {
            if (
forceID != CurrentHat[id]) Set_Hat(idforceID0)
        } else {
            
set_pcvar_num(P_ForceHat0)
        }
    }

__________________
RojedaFeik is offline
Godofwar
AlliedModders Donor
Join Date: Dec 2015
Location: Germany
Old 09-22-2018 , 04:37   Re: Hats Plugin Remove some functions
Reply With Quote #3

thx but the request is old and i am using another plugin ^^
Godofwar is offline
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 03:40.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode