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

Solved Remember silencer for CSDM Gun Menu


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
ChillerX
Member
Join Date: Dec 2022
Old 01-23-2023 , 20:19   Remember silencer for CSDM Gun Menu
Reply With Quote #1

Can someone edit CSDM Gun Menu so it remembers m4a and usp`s silencer position after death?

Code:
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <hamsandwich>
#include <cstrike>
#include <fun>

#define OFFSET_PRIMARYWEAPON 116
#define OFFSET_C4_SLOT 372
#define m_iMapZone 235
#define fm_find_ent_by_class(%1,%2) engfunc(EngFunc_FindEntityByString, %1, "classname", %2)
#define fm_cs_set_user_nobuy(%1)    set_pdata_int(%1, 235, get_pdata_int(%1, 235) & ~(1<<0))

enum _:CHOICES
{
	OPTION_NONE, OPTION_NEW, OPTION_OLD, OPTION_SAVE
}

new const g_szOptions[CHOICES][] =
{
	"None", "New Guns", "Previous Guns", "Previous + Save"
}

new g_WeaponBPAmmo[] =
{
	0, 52, 0, 90, 1, 32, 1, 100, 90, 1, 120, 100, 100, 90, 90, 90, 100, 120, 30,	120, 200, 32, 90, 120, 90, 2, 35, 90, 90, 0, 100
};

new g_WeaponSlots[] =
{
	0, 2, 0, 1, 4, 1, 5, 1, 1, 4, 2, 2, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 4, 2, 1, 1, 3, 1
};

const m_iBuyingStatus = 34;
new g_szWepFile[256], g_FilePointer;
new g_pWeaponMenu, g_sWeaponMenu, g_SpawnMenu;
new g_bSave[33], g_ipPreviousWeapons[33], g_isPreviousWeapons[33];
new Array:g_PrimaryWeapons, Array:g_SecondaryWeapons;
new g_MainMenuTitle, g_PrimaryMenuTitle, g_SecondaryMenuTitle, g_PluginPrefix, g_iToggle, g_iBlockDrop, g_iHENade, g_iFlash, g_iSmoke, g_iArmorAmount, g_iNVG, g_iUnlimitedAmmo, g_iStripMode, g_iTeamMode, g_iFastSwitch, g_iCZBotSupport;
new g_szMainMenuTitle[32], g_szPriMenuTitle[32], g_szSecMenuTitle[32], g_szPrefixName[32];
new bool:g_bomb_targ, g_iEnt, iconstatus;
new CsTeams:g_MenuTeam, CsTeams:g_iPlayerTeam[33];

public plugin_init()
{
	register_plugin("Weapon Menu", "0.0.9", "SavSin");
	
	g_MainMenuTitle = register_cvar("wm_mainmenutitle", "Weapons Menu"); //Main Menu Title Cvar.
	g_PrimaryMenuTitle = register_cvar("wm_primenutitle", "Primary Weapons"); //Primary Weapons Menu Title Cvar.
	g_SecondaryMenuTitle = register_cvar("wm_secmenutitle", "Secondary Weapons"); //Secondary Weapons Menu Title Cvar.
	g_PluginPrefix = register_cvar("amx_prefix_name", "WM"); //Prefix Name Cvar.
	
	g_iToggle = register_cvar("wm_switch", "1"); //Turns plugin on and off.
	g_iBlockDrop = register_cvar("wm_blockdrop", "1"); //Blocks weapon drop.
	g_iHENade = register_cvar("wm_henade", "2"); // Amount of HE Nades given to each player.
	g_iFlash = register_cvar("wm_flash", "2"); //Amount of Flash Nades given to each player.
	g_iSmoke = register_cvar("wm_smoke", "2"); //Amount of Smoke Nades given to each player.
	g_iArmorAmount = register_cvar("wm_armor", "100"); //Amount of Armor Given to each player.
	g_iNVG = register_cvar("wm_nvg", "1"); //Give NVG's?
	g_iUnlimitedAmmo = register_cvar("wm_unlimitedammo", "1"); //Allow Unlimited ammo?
	g_iStripMode = register_cvar("wm_stripmode", "1"); //1 = Strip and keep bomb  2 = Strip All.
	g_iFastSwitch = register_cvar("wm_fastswitch", "1"); //1 = Switch to last used weapon 0 = dont
	
	g_iCZBotSupport = register_cvar("wm_czbotsupport", "0"); //1 = Rage method of CZ bot support 0 = no cz bot support.
	
	register_concmd ("amx_teammode", "cmdTeamMode", ADMIN_BAN, "0 = No teams buy. 1 = CT buy. 2 = T buy.");
	register_concmd("wmadminmenu", "cmdAdminMenu", ADMIN_RCON, "Opens the admin menu.");
	register_concmd("say wmadmin", "cmdAdminMenu", ADMIN_RCON, "Opens the admin menu.");
	
	
	register_event("CurWeapon", "eCurWeapon", "be", "1=1"); //Unlimited ammo
	
	get_pcvar_string(g_MainMenuTitle, g_szMainMenuTitle, charsmax(g_szMainMenuTitle)); //Main Menu Title Text
	get_pcvar_string(g_PrimaryMenuTitle, g_szPriMenuTitle, charsmax(g_szPriMenuTitle)); // Primary Menu Title Text
	get_pcvar_string(g_SecondaryMenuTitle, g_szSecMenuTitle, charsmax(g_szSecMenuTitle)); //Secondary Menu Title Text
	get_pcvar_string(g_PluginPrefix, g_szPrefixName, charsmax(g_szPrefixName)); //Prefix Name shows infront of plugin chat.
	
	RegisterHam(Ham_Spawn, "player", "fwdPlayerSpawn", 1); //Player Spawn Post
	
	if(get_pcvar_num(g_iCZBotSupport))
		RegisterHam(Ham_Spawn, "czbot", "fwdPlayerSpawn", 1); //Player Spawn Post
		
	RegisterHam(Ham_Touch, "func_buyzone", "fwdBuyZoneTouch", 1); //Player touches buyzone
	iconstatus = get_user_msgid("StatusIcon");
	register_event("HLTV", "Event_HLTV_NewRound", "a", "1=0", "2=0"); //New round start
	register_event("TeamInfo", "eTeamInfo", "a"); //Event Team Info.
	register_clcmd("say /guns", "cmdGuns"); //Re-Enables Gun menu
	register_clcmd("say guns", "cmdGuns"); //Re-Enables Gun menu
	register_clcmd("say_team /guns", "cmdGuns"); //Re-Enables Gun menu
	register_clcmd("say_team guns", "cmdGuns"); //Re-Enables Gun menu
	register_clcmd("drop", "blockDrop"); //Re-Enables Gun menu
	
	CreateWeaponsArray(); //Create the menus and arrays
	
	new szNum[3];
	g_SpawnMenu = menu_create(g_szMainMenuTitle, "HandleSpawnMenu"); //Create Main Menu
	
	for(new i = 1; i < sizeof(g_szOptions); i++) //Loop through all the options
	{
		num_to_str(i, szNum, charsmax(szNum));
		menu_additem(g_SpawnMenu, g_szOptions[i], szNum, 0); //Add the options to the menu
	}
	
	menu_setprop(g_SpawnMenu , MPROP_EXIT , MEXIT_NEVER); //Dont allow Menu to exit
	
	if (fm_find_ent_by_class(-1, "func_bomb_target") || fm_find_ent_by_class(-1, "info_bomb_target")) //Checks for bombsites
	{
		g_bomb_targ = true; //If there is a bomb site Set this to true
	}
}

public client_disconnect(id)
{
	g_ipPreviousWeapons[id] = 0;
	g_isPreviousWeapons[id] = 0;
	g_bSave[id] = false;
}

public client_connect(id)
{
	g_ipPreviousWeapons[id] = 0;
	g_isPreviousWeapons[id] = 0;
	g_bSave[id] = false;
}

public plugin_precache() 
{
	g_iTeamMode = register_cvar("wm_teammode", "0"); // 0 = both 1 = T only 2 = CT only.
	g_iEnt = engfunc(EngFunc_CreateNamedEntity,engfunc(EngFunc_AllocString,"info_map_parameters"));
	dllfunc(DLLFunc_Spawn, g_iEnt);
	server_cmd("sv_restart 1");
}

public Event_HLTV_NewRound()
{
	
	if(!get_pcvar_num(g_iToggle))
		return PLUGIN_HANDLED;
		
	new iTeamMode;
	
	switch(clamp(get_pcvar_num(g_iTeamMode), 0, 2))
	{
		case 0: 
		{
			iTeamMode = 3;
		}
		case 1: 
		{
			g_MenuTeam = CS_TEAM_T;
			iTeamMode = 1;
		}
		case 2: 
		{
			g_MenuTeam = CS_TEAM_CT;
			iTeamMode = 2;
		}
	}
	
	set_pdata_int(g_iEnt, m_iBuyingStatus, iTeamMode, 4);
	return PLUGIN_HANDLED;
}

public fwdBuyZoneTouch(iEnt, id)
{
	if(!get_pcvar_num(g_iToggle))
		return HAM_IGNORED;
	if(is_user_connected(id) && g_iPlayerTeam[id] == g_MenuTeam)
	{
		message_begin(MSG_ONE, iconstatus, {0,0,0}, id);
		write_byte(0);
		write_string("buyzone");
		write_byte(0);
		write_byte(255);
		write_byte(0);
		message_end();
	}
	return PLUGIN_HANDLED;
}

public cmdTeamMode(id)
{
	if(!get_pcvar_num(g_iToggle))
		return PLUGIN_HANDLED;
	new arg[2];
	read_argv(1, arg, sizeof(arg));
	
	new iArg = str_to_num(arg);
	
	set_pcvar_num(g_iTeamMode, clamp(iArg, 0, 2));
	server_cmd("sv_restart 1");
	
	return PLUGIN_HANDLED;
}

public cmdGuns(id) //Renable Guns Menu
{
	if(get_pcvar_num(g_iToggle) && g_bSave[id])
	{
		g_bSave[id] = false;
		client_print(id, print_chat, "[%s] Gun menu will be re-enabled next spawn", g_szPrefixName);
	}
}

public fwdPlayerSpawn(id)
{
	if(is_user_alive(id) && get_pcvar_num(g_iToggle)) //Check if player alive and plugin is active
	{
		if(get_pcvar_num(g_iTeamMode))
		{
			if(g_iPlayerTeam[id] == g_MenuTeam)
			{
				switch(get_pcvar_num(g_iStripMode))
				{
					case 1:	//Strip and keep bomb
					{
						StripUserWeapons(id); //Calls the Strip Function
					}
					case 2: // Strip Everything
					{
						strip_user_weapons(id); //Fun native to strip ALL weapons
						give_item(id, "weapon_knife"); //Fun native to give the knife back
					}
				}
			}
		}
		else
		{
			switch(get_pcvar_num(g_iStripMode))
			{
				case 1:	//Strip and keep bomb
				{
					StripUserWeapons(id); //Calls the Strip Function
				}
				case 2: // Strip Everything
				{
					strip_user_weapons(id); //Fun native to strip ALL weapons
					give_item(id, "weapon_knife"); //Fun native to give the knife back
				}
			}
		}
		
		if(g_bomb_targ && get_pcvar_num(g_iStripMode) == 1 && g_iPlayerTeam[id] == CS_TEAM_CT)
		{
			cs_set_user_defuse(id, 1); //If there is a bomb site and your a CT give you a Defuse kit
		}
	
		if(get_pcvar_num(g_iHENade)) //Check if Grenades are enabled
		{
			//g_HeNadesLeft[id] = get_pcvar_num(g_iHENade);
			//Gives player the right amount of grenades
			give_item(id, "weapon_hegrenade");
			cs_set_user_bpammo(id, CSW_HEGRENADE, get_pcvar_num(g_iHENade));
		}
		
		if(get_pcvar_num(g_iFlash)) //Checks if Flashbangs are enabled
		{
			//Gives player the correct amount of flashbangs
			give_item(id, "weapon_flashbang");
			cs_set_user_bpammo(id, CSW_FLASHBANG, get_pcvar_num(g_iFlash));
		}
		
		if(get_pcvar_num(g_iSmoke)) //Checks if smoke is enabled
		{
			//Gives Player the correct amount of Smoke Grenades
			give_item(id, "weapon_smokegrenade");
			cs_set_user_bpammo(id, CSW_SMOKEGRENADE, get_pcvar_num(g_iSmoke));
		}
		
		//Gives the player the amount of armor based on the cvar above.
		cs_set_user_armor(id, get_pcvar_num(g_iArmorAmount), CS_ARMOR_VESTHELM);
		
		if(get_pcvar_num(g_iNVG)) //Night Vision enabled?
		{
			cs_set_user_nvg(id, 1); //Gives the user night vision
		}
		
		if(get_pcvar_num(g_iTeamMode))
		{
			if(g_iPlayerTeam[id] == g_MenuTeam)
			{
				if(!is_user_bot(id))
				{
					if(!g_bSave[id]) //Checks weather you have saved your previous weapons or not.
					{
						menu_display(id, g_SpawnMenu); //Shows the menu if you havn't saved your previous
					}
					else
					{
						PreviousWeapons(id); //Gives you the weapons you saved in from the menu
					}
				}
				else
				{
					new iPrimaryArraySize = ArraySize(g_PrimaryWeapons);
					new iSecondaryArraySize = ArraySize(g_SecondaryWeapons);					
					for(new i=0; i< 2; i++)
					{
						new WeaponName[32], szArrayData[32];
						if(i == 0)
						{
							ArrayGetString(g_PrimaryWeapons, iPrimaryArraySize, szArrayData, charsmax(szArrayData)); //Gets the weapon name from the array
						}
						else
						{
							ArrayGetString(g_SecondaryWeapons, iSecondaryArraySize, szArrayData, charsmax(szArrayData)); //Gets the weapon name from the array
						}
						
						replace_all(szArrayData, charsmax(szArrayData), " ", ""); //removes the spaces
						format(WeaponName, charsmax(WeaponName), "weapon_%s", szArrayData); //adds weapon_ to the weapon name
						strtolower(WeaponName);//Converts all to lower case
						GiveWeapons(id, WeaponName); //Gives secondary weapon
					}
				}
			}
		}
		else
		{
			if(!is_user_bot(id))
			{
				if(!g_bSave[id]) //Checks weather you have saved your previous weapons or not.
				{
					menu_display(id, g_SpawnMenu); //Shows the menu if you havn't saved your previous
				}
				else
				{
					PreviousWeapons(id); //Gives you the weapons you saved in from the menu
				}
			}
			else
			{
				new iPrimaryWeapon = random_num(0, ArraySize(g_PrimaryWeapons)-1);
				new iSecondaryWeapon = random_num(0, ArraySize(g_SecondaryWeapons)-1);				
				for(new i=0; i< 2; i++)
				{
					new WeaponName[32], szArrayData[32];
					if(i == 0)
					{
						ArrayGetString(g_PrimaryWeapons, iPrimaryWeapon, szArrayData, charsmax(szArrayData)); //Gets the weapon name from the array
					}
					else
					{
						ArrayGetString(g_SecondaryWeapons, iSecondaryWeapon, szArrayData, charsmax(szArrayData)); //Gets the weapon name from the array
					}
					
					replace_all(szArrayData, charsmax(szArrayData), " ", ""); //removes the spaces
					format(WeaponName, charsmax(WeaponName), "weapon_%s", szArrayData); //adds weapon_ to the weapon name
					strtolower(WeaponName);//Converts all to lower case
					GiveWeapons(id, WeaponName); //Gives secondary weapon
				}
			}
		}
	}
}

public eCurWeapon(id)
{
	if(!get_pcvar_num(g_iToggle) || !get_pcvar_num(g_iUnlimitedAmmo))
		return PLUGIN_HANDLED;
	
	new iWeapon = read_data(2); //Gets current Weapon ID CSW weapon constraints
	
	if(g_WeaponSlots[iWeapon] == 1 || g_WeaponSlots[iWeapon] == 2)
	{
		if(cs_get_user_bpammo(id, iWeapon) < g_WeaponBPAmmo[iWeapon])
		{
			cs_set_user_bpammo(id, iWeapon, g_WeaponBPAmmo[iWeapon]); //If your bp ammo is lower then the max then set it to the max
		}
	}
	return PLUGIN_CONTINUE;
}

public blockDrop(id) //Blocks weapon drop
{
	if(get_pcvar_num(g_iToggle) && get_pcvar_num(g_iBlockDrop) && get_user_weapon(id) != CSW_C4)
	{
		if(get_pcvar_num(g_iTeamMode))
		{
			if(g_iPlayerTeam[id] == g_MenuTeam)
			{
				client_print(id, print_center, "You are not allowed to drop your weapons.");
				return PLUGIN_HANDLED;
			}
		}
		else
		{
			client_print(id, print_center, "You are not allowed to drop your weapons.");
			return PLUGIN_HANDLED;
		}
	}
	return PLUGIN_CONTINUE;
}

public HandleSpawnMenu(id, iMenu, iItem)
{
	new szKey[3], Dummy;
	menu_item_getinfo(iMenu, iItem, Dummy, szKey, 2, "", 0, Dummy); //Gets the selection off the menu
	
	switch(str_to_num(szKey))
	{
		case OPTION_NEW:
		{
			menu_display(id, g_pWeaponMenu); //Displays primary weapons menu
		}
		case OPTION_OLD: 
		{
			PreviousWeapons(id); //Gives your previous weapons
		}
		case OPTION_SAVE:
		{
			PreviousWeapons(id); //Same as OPTION_OLD but saves it so you get these weapons each spawn.
			g_bSave[id] = true;
			client_print(id, print_chat, "[%s] say /guns to re-enable the gun menu.", g_szPrefixName);
		}
	}
	return PLUGIN_CONTINUE;
}

public PreviousWeapons(id) //Access the array to give you the previous weapons used by you.
{
	new szpData[32], szsData[32];
	ArrayGetString(g_PrimaryWeapons, g_ipPreviousWeapons[id], szpData, charsmax(szpData)); //Gets the array item of your previous primary weapon
	ArrayGetString(g_SecondaryWeapons, g_isPreviousWeapons[id], szsData, charsmax(szsData)); //Gets the array item of your previous secondary weapon
	strtolower(szpData); //Converts it all to lower case
	strtolower(szsData); //Converts it all to lower case
	replace_all(szpData, charsmax(szpData), " ", ""); //Removes spaces from the array text.
	replace_all(szsData, charsmax(szsData), " ", ""); //Removes spaces from the array text.
	format(szpData, charsmax(szpData), "weapon_%s", szpData); //adds weapon_ infront of the array text.
	format(szsData, charsmax(szsData), "weapon_%s", szsData);//adds weapon_ infront of the array text.
	GiveWeapons(id, szpData); //Gives player previous primary weapon
	GiveWeapons(id, szsData); //Gives player previous Secondary Weapon
}

public CreateWeaponsArray()
{
	get_configsdir(g_szWepFile, charsmax(g_szWepFile));  //gets addons/amxmodx/configs directory
	format(g_szWepFile, charsmax(g_szWepFile), "%s/DM_WeaponOrder.ini", g_szWepFile); //formats the file name for the Weapons order INI
	g_FilePointer = fopen(g_szWepFile, "r"); //Opens the file
	//Arrays
	g_PrimaryWeapons = ArrayCreate(15); //Creates the Primary Weapons Array
	g_SecondaryWeapons = ArrayCreate(15); //Creates the Secondary Weapons Array
	
	//Weapon Menus
	g_pWeaponMenu = menu_create(g_szPriMenuTitle, "HandlePrimaryWeapons"); //Creates the Primary Weapon Menu
	g_sWeaponMenu = menu_create(g_szSecMenuTitle, "HandleSecondaryWeapons"); //Creates the Secondary Weapon Menu
	
	new szData[32], szWeaponName[32], szpNum[3], szsNum[3];
	new pCounter, sCounter;
	if(g_FilePointer) //Makes sure the files open
	{
		while(!feof(g_FilePointer))
		{
			fgets(g_FilePointer, szData, charsmax(szData)); //Reads a line of the file
			trim(szData); //Removes '^n' new line character from the end of the line
			if(containi(szData, ";") != -1) //Checks to see if its a comment and then ignores it
				continue;
			//Check Weapon Slot for Menu Placement
			copy(szWeaponName, charsmax(szWeaponName), szData); //Copys the file data into a new variable to alter it
			replace_all(szWeaponName, charsmax(szWeaponName), " ", ""); //Removes Spaces from the Text
			format(szWeaponName, charsmax(szWeaponName), "weapon_%s", szWeaponName); //Adds Weapon_ to the text
			strtolower(szWeaponName); //converts the whole thing to lower case
			new iWeaponID = get_weaponid(szWeaponName); //Gets the CSW weapon constraint for that weapon
			
			switch(g_WeaponSlots[iWeaponID]) //Checks which slot the weapon is for
			{
				case 1: //Primary Slot
				{
					ArrayPushString(g_PrimaryWeapons, szData); //Adds the original text to the array
					num_to_str(pCounter, szpNum, charsmax(szpNum));
					menu_additem(g_pWeaponMenu, szData, szpNum, 0); //Adds item to the primary weapons menu
					++pCounter;
				}
				case 2: //Secondary Slot
				{
					ArrayPushString(g_SecondaryWeapons, szData); //Adds the original text to the array
					num_to_str(sCounter, szsNum, charsmax(szsNum));
					menu_additem(g_sWeaponMenu, szData, szsNum, 0);//Adds item to the Secondary Weapons Menu
					++sCounter;
				}
			}
		}
	}
	else
	{
		set_fail_state("Failed to Open Weapons List");
	}
	//Blocks exit for both primary and secondary menus
	menu_setprop(g_pWeaponMenu , MPROP_EXIT , MEXIT_NEVER);
	menu_setprop(g_sWeaponMenu , MPROP_EXIT , MEXIT_NEVER);
	
	fclose(g_FilePointer); //Closes the file
}

public HandlePrimaryWeapons(id, iMenu, iItem)
{
	new szKey[3], iSelectedWeapon, Dummy;
	menu_item_getinfo(iMenu, iItem, Dummy, szKey, 2, "", 0, Dummy); //Gets the primary weapon selected.
	
	iSelectedWeapon = str_to_num(szKey);
	g_ipPreviousWeapons[id] = iSelectedWeapon; //Stores the selected weapon for option 2 and 3 on the main menu
	
	new WeaponName[32], szArrayData[32];
	ArrayGetString(g_PrimaryWeapons, iSelectedWeapon, szArrayData, charsmax(szArrayData)); //Gets the weapon name from the array
	replace_all(szArrayData, charsmax(szArrayData), " ", ""); //removes the spaces
	format(WeaponName, charsmax(WeaponName), "weapon_%s", szArrayData); //adds weapon_ to the weapon name
	strtolower(WeaponName);//Converts all to lower case
	GiveWeapons(id, WeaponName); //Gives primary weapon
	
	menu_display(id, g_sWeaponMenu); //Displays secondary weapons menu
}

public HandleSecondaryWeapons(id, iMenu, iItem)
{
	new szKey[3], iSelectedWeapon, Dummy;
	menu_item_getinfo(iMenu, iItem, Dummy, szKey, 2, "", 0, Dummy); //Gets the secondary weapon selected
	
	iSelectedWeapon = str_to_num(szKey);
	g_isPreviousWeapons[id] = iSelectedWeapon; //Stores the selected weapon for option 2 and 3 on the main menu
	
	new WeaponName[32], szArrayData[32];
	ArrayGetString(g_SecondaryWeapons, iSelectedWeapon, szArrayData, charsmax(szArrayData)); //Gets the weapon name from the array
	replace_all(szArrayData, charsmax(szArrayData), " ", ""); //removes the spaces
	format(WeaponName, charsmax(WeaponName), "weapon_%s", szArrayData); //adds weapon_ to the weapon name
	strtolower(WeaponName);//Converts all to lower case
	GiveWeapons(id, WeaponName); //Gives secondary weapon
}

public grenade_throw(id , greindex , wId) //When a grenade is thrown switch to last inv automatically
{
	if(get_pcvar_num(g_iToggle) && get_pcvar_num(g_iFastSwitch))
	{
		client_cmd(id, "lastinv");
	}
}

stock GiveWeapons(id, szWeapon[])
{
	if(is_user_connected(id))
	{
		new iWeaponId = get_weaponid(szWeapon); //Get the weapon id of the weapon given
		give_item(id, szWeapon); //Give the weapon
		cs_set_user_bpammo(id, iWeaponId, g_WeaponBPAmmo[iWeaponId]); //Set the ammo to max ammo
	}
}

stock StripUserWeapons(id)
{
	new iC4Ent = get_pdata_cbase(id, OFFSET_C4_SLOT); //Gets the slot for C4
	
	if( iC4Ent > 0 ) //If you have the C4
	{
		set_pdata_cbase(id, OFFSET_C4_SLOT, FM_NULLENT); //Remove it
	}

	strip_user_weapons(id); //Strip User weapons
	give_item(id, "weapon_knife"); //Give the knife
	set_pdata_int(id, OFFSET_PRIMARYWEAPON, 0); //Set primary weapon offset to 0

	if( iC4Ent > 0 ) //if you had the c4
	{
		set_pev(id, pev_weapons, pev(id, pev_weapons) | (1<<CSW_C4)); //Give it back
		set_pdata_cbase(id, OFFSET_C4_SLOT, iC4Ent); //Set the offset back to normal
		cs_set_user_bpammo(id, CSW_C4, 1); //Give the backpack
		cs_set_user_plant(id, 1); //Allow user to plant it
	}
	return PLUGIN_HANDLED;
}

public eTeamInfo() 
{
	if(!get_pcvar_num(g_iToggle))
		return PLUGIN_HANDLED;
		
	new id = read_data(1);
	new szTeam[2];
	read_data(2, szTeam, charsmax(szTeam));
	switch(szTeam[0])
	{
		case 'T': 
		{
			g_iPlayerTeam[id] = CS_TEAM_T;
		}
		case 'C': 
		{
			g_iPlayerTeam[id] = CS_TEAM_CT;
		}
	}
	
	return PLUGIN_HANDLED;
}

public cmdAdminMenu(id)
{
	if(!get_pcvar_num(g_iToggle))
		return PLUGIN_HANDLED;
		
	new iAdminMenu = menu_create("WM Admin Menu", "HandleAdminMenu");
	
	switch(get_pcvar_num(g_iTeamMode))
	{
		case 1:
		{
			menu_additem(iAdminMenu, "TeamMode:\r T", "0", 0);
		}
		case 2:
		{
			menu_additem(iAdminMenu, "TeamMode:\r CT", "0", 0);
		}
		default:
		{
			menu_additem(iAdminMenu, "TeamMode:\r Both", "0", 0);
		}
	}
	
	menu_additem(iAdminMenu, "Save and Exit", "1", 0);
	
	menu_setprop(iAdminMenu , MPROP_EXIT , MEXIT_NEVER); //Dont allow Menu to exit
	
	menu_display(id, iAdminMenu);
	
	return PLUGIN_HANDLED;
}

public ChangeTeamMode(id, CsTeams:iTeam, iValue)
{
	set_pcvar_num(g_iTeamMode, iValue);
	g_MenuTeam = iTeam;
	switch(iTeam)
	{
		case CS_TEAM_T: client_print(id, print_center, "Team Mode changed to T");
		case CS_TEAM_CT: client_print(id, print_center, "Team Mode changed to CT");
		default: client_print(id, print_center, "Team Mode changed to Both");
	}
}

public HandleAdminMenu(id, iMenu, iItem)
{
	new szKey[3], bool:bUpdateMenu, Dummy;
	menu_item_getinfo(iMenu, iItem, Dummy, szKey, 2, "", 0, Dummy); //Gets the primary weapon selected.
	
	switch(str_to_num(szKey))
	{
		case 0:
		{
			switch(get_pcvar_num(g_iTeamMode))
			{
				case 1:
				{
					ChangeTeamMode(id, CS_TEAM_CT, 2);
					bUpdateMenu = true;
				}
				case 2:
				{
					ChangeTeamMode(id, CS_TEAM_UNASSIGNED, 0);
					bUpdateMenu = true;
				}
				default:
				{
					ChangeTeamMode(id, CS_TEAM_T, 1);
					bUpdateMenu = true;
				}
			}
		}
		case 1:
		{
			server_cmd("sv_restart 1");
		}
	}
	
	if(bUpdateMenu)
	{
		menu_destroy(iMenu);
		cmdAdminMenu(id);
	}
	else
	{
		menu_destroy(iMenu);
	}
}

Last edited by ChillerX; 02-03-2023 at 20:56. Reason: solved
ChillerX is offline
Reply


Thread Tools
Display Modes

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 07:52.


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