Страница 1 от 2

Random weapon рунд, но всички да са с едно и също оръжие

Публикувано на: 05 Фев 2019, 18:55
от Maverick
Здравейте,
В момента използвам този плъгин, но на всеки рунд когато се случи да е radnom weapon рунд бих искал всички да са с едно и също оръжие вместо както е сега всеки с произволно.

Random weapon рунд, но всички да са с едно и също оръжие

Публикувано на: 05 Фев 2019, 19:02
от <VeCo>
Тествай

Random weapon рунд, но всички да са с едно и също оръжие

Публикувано на: 05 Фев 2019, 20:39
от Maverick
Пробвах, го и да всички са с едно оръжие, но имат и рандом пистолет към него. Ще е добре да им се пада само едно, без значение дали е само пистолет или само основно оръжие.

Random weapon рунд, но всички да са с едно и също оръжие

Публикувано на: 05 Фев 2019, 20:48
от just sayin'
Отдавна има по-нова версия на плъгина.

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

#include <amxmodx>
#include <hamsandwich>
#include <colorchat>
#include <fun>
#include <cstrike>
#include <stripweapons>

#define PLUGIN "Random Weapons"
#define VERSION "2.4"
#define AUTHOR "Flicker"


/*
	Enums needed for the constants and cvars
							*/
enum _:g_eWeaponTypes
{
	P = 0,
	S,
	G
}

enum _:g_eWeaponData
{
	_NameForChat[32],
	_WeaponName[32],
	_Ammo,
	_CSW
}

/*
	Constants for the weapons
					*/

new const g_szPrimary[][g_eWeaponData] = 
{
	/*
		Empty slot for the chat message
			      */
	{""}, 
	
	/*
		Shotguns
			      */
	{"M3", 		"weapon_m3", 		32, 	CSW_M3},
	{"XM1014", 	"weapon_xm1014",  	32, 	CSW_XM1014},
	
	/*
		Third buy menu :D
			      */
	{"Mac10", 	"weapon_mac10", 	100, 	CSW_MAC10},
	{"Tmp", 	"weapon_tmp", 		120, 	CSW_TMP},
	{"Ump45", 	"weapon_ump45", 	100, 	CSW_UMP45},
	{"Mp5Navy", 	"weapon_mp5navy", 	120, 	CSW_MP5NAVY},
	{"P90", 	"weapon_p90", 		100, 	CSW_P90},
	
	/*
		Automatics
			      */
	{"Galil", 	"weapon_galil", 	90, 	CSW_GALIL},
	{"Famas", 	"weapon_famas", 	90, 	CSW_FAMAS},
	{"Scout", 	"weapon_scout", 	90, 	CSW_SCOUT},
	{"M4A1",	"weapon_m4a1", 		90, 	CSW_M4A1},
	{"AK47", 	"weapon_ak47", 		90,	 CSW_AK47},
	{"AUG", 	"weapon_aug", 		90, 	CSW_AUG},
	{"SG550", 	"weapon_sg550", 	90, 	CSW_SG550},
	{"SG552", 	"weapon_sg552", 	90, 	CSW_SG552},
	{"G3SG1", 	"weapon_g3sg1", 	90, 	CSW_G3SG1},
	{"M249", 	"weapon_m249", 		200,	CSW_M249}
}

new const g_szSecondary[][g_eWeaponData]=
{
	/*
		Empty slot for the chat message
			      */
	{""}, 
	
	/*
		Pistols
			      */
	{"Glock18", 	"weapon_glock18", 	40, 	CSW_GLOCK18},
	{"Usp", 	"weapon_usp",		100, 	CSW_USP},
	{"P228", 	"weapon_p228",		52, 	CSW_P228},
	{"Dual Elites", "weapon_elite", 	120, 	CSW_ELITE},
	{"Fiveseven", 	"weapon_fiveseven",	100, 	CSW_FIVESEVEN},
	{"Deagle", 	"weapon_deagle", 	35, 	CSW_DEAGLE}
}

new const g_szGrenades[][g_eWeaponData]=
{
	/*
		Empty slot for the chat message
			      */
	{""}, 
	
	/*
		Grenades
			      */
	{"HE", "weapon_hegrenade", 1, CSW_HEGRENADE},
	{"Flash", "weapon_flashbang", 1, CSW_FLASHBANG},
	{"Smoke", "weapon_smokegrenade", 1, CSW_SMOKEGRENADE}
}


/*
	This bool is used to detect player death
									   */
new bool:g_bDied[33]

/*
	These ones we use for cvars - registering and getting values
									   */
new cv_TurnOn[g_eWeaponTypes], TurnOn[g_eWeaponTypes]
new cv_UnlimitedAmmo, UnlimitedAmmo
new cv_VestHelm, VestHelm
new g_WpnID[g_eWeaponTypes]
new cv_OnlyKilled, OnlyKilled

/*
	Now for the prefix
				*/
new cv_Prefix, szPrefix[32]

/*
	The number of the 'unlimited' bpammo, because didn't find better way to set it
											     */
const AmmoNum = 999999

public plugin_init()
{
	register_plugin(PLUGIN, VERSION, AUTHOR)
	
	/*
		Hams Needed
				*/
	RegisterHam(Ham_Spawn, "player", "Spawn", 1)
	RegisterHam(Ham_Killed, "player", "Killed", 1)
	
	/*
		The new round event - to get pcvar nums
								*/
	register_event("HLTV", "NewRound", "a", "1=0", "2=0")
	
	/*
		Register the cvar for random weps only when killed before
										*/
	cv_OnlyKilled 	= register_cvar("random_weapons_only_killed", "0")
	
	/*
		Register the cvars for enabling/disabling the primary, pistols and grenades
												*/
	cv_TurnOn[P] 	= register_cvar("random_weapons_primary", "1")
	cv_TurnOn[S]	= register_cvar("random_weapons_pistols", "1")
	cv_TurnOn[G]	= register_cvar("random_weapons_grenades", "1")
	
	/*
		Unlimited ammo cvar
				      */
	cv_UnlimitedAmmo= register_cvar("random_weapons_unlimited_ammo", "0")
	
	/*
		Vesthelm cvar
				      */
	cv_VestHelm	= register_cvar("random_weapons_vesthelm_bonus", "0")
	
	/*
		The prefix cvar
				      */
	cv_Prefix 	= register_cvar("random_weapons_prefix", "^x03[^x04Random Weapons^x03]")
}

public NewRound()	LoadCvars()
public plugin_cfg()	LoadCvars()

public LoadCvars()
{
	/*
		Getting pcvar nums
					*/
	for(new i; i < g_eWeaponTypes; i++)
		TurnOn[i] = get_pcvar_num(cv_TurnOn[i])
	
	OnlyKilled	= get_pcvar_num(cv_OnlyKilled)
	UnlimitedAmmo	= get_pcvar_num(cv_UnlimitedAmmo)
	VestHelm	= get_pcvar_num(cv_VestHelm)
	
	get_pcvar_string(cv_Prefix, szPrefix, charsmax(szPrefix))
}

public Killed(victim, killer, shouldgib)
	g_bDied[victim] = true
	
public Spawn(id)
{
		/*
			Basic check for no errors and the cvars.
									*/
		if(!is_user_alive(id) 
		|| OnlyKilled && !g_bDied[id]
		|| !TurnOn[P] && !TurnOn[S] && !TurnOn[G])		
			return PLUGIN_HANDLED							
	
		// The bool must become false
		g_bDied[id] = false
		
		
		/*
			Stripping and giving primaries
							    */
											
		if(TurnOn[P])
		{
			StripWeapons(id, Primary)
			g_WpnID[P] = random_num(1, charsmax(g_szPrimary))
			give_item(id, g_szPrimary[g_WpnID[P]][_WeaponName])
			cs_set_user_bpammo(id, g_szPrimary[g_WpnID[P]][_CSW], UnlimitedAmmo ? AmmoNum : g_szPrimary[g_WpnID[P]][_Ammo])
		}
		else	g_WpnID[P] = 0
		
		/*
			Stripping and giving pistols	
							*/
			
		if(TurnOn[S])
		{
			StripWeapons(id, Secondary)
			g_WpnID[S] = random_num(1, charsmax(g_szSecondary))
			give_item(id, g_szSecondary[g_WpnID[S]][_WeaponName])
			cs_set_user_bpammo(id, g_szSecondary[g_WpnID[S]][_CSW], UnlimitedAmmo ? AmmoNum : g_szSecondary[g_WpnID[S]][_Ammo])
		}
		else	g_WpnID[S] = 0
		
		/*
			Stripping and giving grenades	
							*/	
					
		if(TurnOn[G])
		{
			StripWeapons(id, Grenades)
			g_WpnID[G] = random_num(1, charsmax(g_szGrenades))
			give_item(id, g_szGrenades[g_WpnID[G]][_WeaponName])	
			cs_set_user_bpammo(id, g_szGrenades[g_WpnID[G]][_CSW], g_szGrenades[g_WpnID[G]][_Ammo])
		}
		else	g_WpnID[G] = 0
		
		//Giving the player vest + helmet
		if(VestHelm)	give_item(id, "item_assaultsuit")
	
		/*
			An info chat message 
						*/
		
		ColorChat(id, TEAM_COLOR, "%s ^3This spawn^4: %s%s%s%s%s%s%s%s ", 
		szPrefix							, 
		TurnOn[P] 			? "^1Weapon ^4"	: 	""	,
		g_szPrimary[g_WpnID[P]][_NameForChat]	  			,
		TurnOn[P] && TurnOn[S]		? " ^3| " 	: 	""	,
		TurnOn[S]			? "^1Pistol ^4"	: 	""	,									 
		g_szSecondary[g_WpnID[S]][_NameForChat]				,
		TurnOn[S] && TurnOn[G]		? " ^3| " 	: 	""	,
		TurnOn[G] 			? "^1Grenade ^4": 	""	,
		g_szGrenades[g_WpnID[G]][_NameForChat]				)	
		//
		
		/*
			A little bit difficult, but to be able to depend on the cvars 
					and look good at the same time :D 
											*/
		return PLUGIN_CONTINUE
	
}

Random weapon рунд, но всички да са с едно и също оръжие

Публикувано на: 05 Фев 2019, 23:14
от Maverick
@ just sayin' SC Ще е добре да дадеш линк към станицата на плъгина за да разбера дали би ми бил полезен, ако искаш да помогнеш с нещо.

И до колкото разбрах от описанието му, плъгина дава на всеки рунд произволно оръжие.
This plugin is a simple mod, which gives a random weapon pack (primary, pistol and a grenade) on each spawn. I think it'll be good for classic/dust2/other fun mods. Also, if you want your server to be based on this mod, you can use the plugin, which restricts the buyzone (good combinations between the two plugins).
А на мен ми трябва като горният, на произволен рунд само едно произволно оръжие от всички налични, но да бъде еднакво за всички хора.

Random weapon рунд, но всички да са с едно и също оръжие

Публикувано на: 05 Фев 2019, 23:19
от just sayin'

Random weapon рунд, но всички да са с едно и също оръжие

Публикувано на: 06 Фев 2019, 10:22
от mi0

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

#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fakemeta>
#include <hamsandwich>
#include <engine>
#include <fun>

#define PLUGIN "Random weapons mode"
#define VERSION "2.0"
#define AUTHOR "beast"

#define TASKID_GUNS 2349
#define TASKID_BPAMMO 1224

#define OFFSET_PRIMARYWEAPON 116
#define OFFSET_C4_SLOT 372

#if cellbits == 32
	#define OFFSET_BUYZONE 235
#else
	#define OFFSET_BUYZONE 268
#endif

new cvar_random, cvar_bomb, cvar_nade, cvar_nodrop, cvar_checkmap, cvar_enabled
new g_mode
new const g_szBuyzone[] = "buyzone"
new Array:g_prim, Array:g_nades, Array:g_sec_sh, Array:g_sec

new randPrim,randSec,randSecSh,randNades

public plugin_init()
{
	register_plugin(PLUGIN, VERSION, AUTHOR)
	register_cvar("RRWM", VERSION, FCVAR_SPONLY | FCVAR_SERVER)
	register_message(get_user_msgid("StatusIcon"), "msgStatusIcon")
	register_event("HLTV", "event_new_round", "a", "1=0", "2=0")
	RegisterHam(Ham_Spawn, "player", "FwdHamPlayerSpawn", 1)
	register_clcmd("drop", "clcmd_drop")
	
	cvar_enabled = register_cvar("rrwm_enabled", "1")
	cvar_random = register_cvar("rrwm_chance", "10")
	cvar_bomb = register_cvar("rrwm_c4", "1")
	cvar_nade = register_cvar("rrwm_nade", "1")
	cvar_nodrop = register_cvar("rrwm_nodrop", "1")
	cvar_checkmap = register_cvar("rrwm_checkmap", "1")
		
	g_prim = ArrayCreate(256, 1)
	g_sec = ArrayCreate(128, 1)
	g_sec_sh = ArrayCreate(128, 1)
	g_nades = ArrayCreate(64, 1)
	
	if(get_pcvar_num(cvar_checkmap))
		check_map()
	
	loadini()
}

loadini()
{
	new path[96]
	get_configsdir(path, sizeof path - 1)
	format(path, sizeof path - 1, "%s/rrwm_weapons.ini", path)
	
	if (!file_exists(path))
	{
		log_amx("ERROR: Weapons list not found.") 
		return
	}
	
	new linedata[512], key[256], section
	new file = fopen(path, "rt")
	
	while(file && !feof(file))
	{
		fgets(file, linedata, sizeof linedata - 1)
		
		replace(linedata, sizeof linedata - 1, "^n", "")
		
		if(!linedata[0] || linedata[0] == ';')
			continue

		if (linedata[0] == '[')
		{
			section++
			continue
		}
		
		parse(linedata, key, sizeof key - 1)
		trim(key)
		
		switch(section)
		{
			case 1:
			{	
				format(key, sizeof key - 1, "weapon_%s", key)
				ArrayPushString(g_prim, key)
			}
			case 2:
			{	
				format(key, sizeof key - 1, "weapon_%s", key)
				ArrayPushString(g_sec, key)
			}
			case 3:
			{	
				format(key, sizeof key - 1, "weapon_%s", key)
				ArrayPushString(g_sec_sh, key)
			}
			case 4:
			{	
				format(key, sizeof key - 1, "weapon_%s", key)
				ArrayPushString(g_nades, key)
			}
		}
	}
	fclose(file)
}

check_map()
{
	new mapname[6]
	get_mapname(mapname,  5)
	
	if(containi(mapname, "ka_") != -1 || containi(mapname, "35hp_") != -1)
		pause("ad")
	
	return PLUGIN_CONTINUE
}

public clcmd_drop(id)
{
	if(g_mode && get_pcvar_num(cvar_nodrop))
		return PLUGIN_HANDLED
	
	return PLUGIN_CONTINUE
}

public event_new_round()
{
	if(!get_pcvar_num(cvar_enabled))
		return
		
	g_mode = false
	
	if(random_num(1, get_pcvar_num(cvar_random)) == 1)
	{
		g_mode = true
		randPrim = random_num(0, ArraySize(g_prim) - 1);
        randSec = random_num(0, ArraySize(g_sec) - 1);
        randSecSh = random_num(0, ArraySize(g_sec_sh) - 1);
        randNades = random_num(0, ArraySize(g_nades) - 1);
	}
}

public FwdHamPlayerSpawn(id)
{
	if(!is_user_alive(id))
		return HAM_IGNORED
	
	new r, g, b
	new Float:delay = random_float(1.0, 3.0)
	
	r = random_num(0, 255)
	g = random_num(0, 255)
	b = random_num(0, 255)
	
	if(g_mode)
	{        
		set_hudmessage(r, g, b, -1.0, 0.13, 1, 6.0, 5.0, 1.5, 3.0, -1)
		show_hudmessage(id, "!!! RANDOM WEAPONS MODE !!!")
		
		set_task(delay, "guns", TASKID_GUNS + id)
		set_task(3.1, "bpammo", TASKID_BPAMMO + id)
	}
	return HAM_IGNORED
}

public guns(task)
{
	new id = task - TASKID_GUNS
	new mapname[4]
	get_mapname(mapname, 3)
	
	if(!is_user_alive(id))
		return
		
	if(get_pcvar_num(cvar_bomb) && containi(mapname, "de_") != -1)
		StripUserWeapons(id)
	
	else
		strip_user_weapons(id)
	
	new p_weap[32]
	new s_weap[32]
	new sh_weap[32]
	new nades[32]
	
	ArrayGetString(g_prim, randPrim, p_weap, sizeof p_weap - 1)
	ArrayGetString(g_sec, randSec, s_weap, sizeof s_weap - 1)
	ArrayGetString(g_sec_sh, randSecSh, sh_weap, sizeof sh_weap - 1)
	ArrayGetString(g_nades, randNades, nades, sizeof nades - 1)
	
	cs_set_user_armor(id, 100, CS_ARMOR_VESTHELM)
	
	give_item(id, "weapon_knife")
	give_item(id, p_weap)

	if(cs_get_user_shield(id))
		give_item(id, sh_weap)
	
	else
		give_item(id, s_weap)
	
	if(get_pcvar_num(cvar_nade))
		give_item(id, nades)
}

public bpammo(task)
{
	new id = task - TASKID_BPAMMO
	static weapons[32], num, i, weaponid
	new fbnum = random_num(1,2)
	num = 0
	get_user_weapons(id, weapons, num)
	
	for (i = 0; i < num; i++)
	{
		weaponid = weapons[i]
			
		switch(weaponid)
		{
			case CSW_XM1014: cs_set_user_bpammo(id, CSW_XM1014, 32)
			case CSW_MAC10: cs_set_user_bpammo(id, CSW_MAC10, 100)
			case CSW_AUG: cs_set_user_bpammo(id, CSW_AUG, 90)
			case CSW_UMP45: cs_set_user_bpammo(id, CSW_UMP45, 100)
			case CSW_SG550: cs_set_user_bpammo(id, CSW_SG550, 90)
			case CSW_GALIL: cs_set_user_bpammo(id, CSW_GALIL, 90)
			case CSW_FAMAS: cs_set_user_bpammo(id, CSW_FAMAS, 90)
			case CSW_MP5NAVY: cs_set_user_bpammo(id, CSW_MP5NAVY, 120)
			case CSW_M249: cs_set_user_bpammo(id, CSW_M249, 200)
			case CSW_M3: cs_set_user_bpammo(id, CSW_M3, 32)
			case CSW_M4A1: cs_set_user_bpammo(id, CSW_M4A1, 90)
			case CSW_G3SG1: cs_set_user_bpammo(id, CSW_G3SG1, 90)
			case CSW_SG552: cs_set_user_bpammo(id, CSW_SG552, 90)
			case CSW_AK47: cs_set_user_bpammo(id, CSW_AK47, 90)
			case CSW_P90: cs_set_user_bpammo(id, CSW_P90, 100)
			case CSW_SCOUT: cs_set_user_bpammo(id, CSW_SCOUT, 90)
			case CSW_AWP: cs_set_user_bpammo(id, CSW_AWP, 30)
			case CSW_TMP: cs_set_user_bpammo(id, CSW_TMP, 120)
			case CSW_DEAGLE: cs_set_user_bpammo(id, CSW_DEAGLE, 35)
			case CSW_GLOCK18: cs_set_user_bpammo(id, CSW_GLOCK18, 120)
			case CSW_USP: cs_set_user_bpammo(id, CSW_USP, 100)
			case CSW_ELITE: cs_set_user_bpammo(id, CSW_ELITE, 120)
			case CSW_FIVESEVEN: cs_set_user_bpammo(id, CSW_FIVESEVEN, 100)
			case CSW_P228: cs_set_user_bpammo(id, CSW_P228, 52)
			case CSW_FLASHBANG: cs_set_user_bpammo(id, CSW_FLASHBANG, fbnum)
		}
	}	
}

public msgStatusIcon(iMsgId, iMsgDest, id)
{	
	static szMsg[8]
	get_msg_arg_string(2, szMsg, 7)
	
	if(g_mode && equal(szMsg, g_szBuyzone))
	{
		set_pdata_int(id, OFFSET_BUYZONE, get_pdata_int(id, OFFSET_BUYZONE) & ~(1<<0))
		return PLUGIN_HANDLED
	}
	return PLUGIN_CONTINUE
}

StripUserWeapons(id)
{
	new iC4Ent = get_pdata_cbase(id, OFFSET_C4_SLOT)
	
	if(iC4Ent > 0)
		set_pdata_cbase(id, OFFSET_C4_SLOT, FM_NULLENT)

	strip_user_weapons(id)
	set_pdata_int(id, OFFSET_PRIMARYWEAPON, 0)

	if(iC4Ent > 0)
	{
		entity_set_int(id, EV_INT_weapons, entity_get_int(id, EV_INT_weapons) | (1<<CSW_C4))
		set_pdata_cbase(id, OFFSET_C4_SLOT, iC4Ent)
		cs_set_user_bpammo(id, CSW_C4, 1)
		cs_set_user_plant(id, 1)
	}
	return PLUGIN_HANDLED
}
Тествай.

Random weapon рунд, но всички да са с едно и също оръжие

Публикувано на: 06 Фев 2019, 13:40
от Maverick
@mi0 Пак си е същото, няма разлика.

Random weapon рунд, но всички да са с едно и също оръжие

Публикувано на: 06 Фев 2019, 17:08
от <VeCo>
Мързелив начин: xD

От файла със списъка на оръжията на плъгина прехвърли всички пистолети към primary и на мястото на secondary сложи само knife (дори и да го дава няма да влияе на нищо).

Random weapon рунд, но всички да са с едно и също оръжие

Публикувано на: 11 Фев 2019, 01:10
от Maverick
@ <VeCo> Да това работи така както бих искал, благодаря.
И още неще бих искал да попитам дали е възможно да се промени. Възможно ли е опция "rrwm_c4 1" да се направи да работи на всички карти които имат бомба за залагане, без значение дали са de_ only?
rrwm_c4 (default: 1)
0: strip c4 bomb on random weapons mode
1: leave c4 bomb on random weapons mode (at de_ maps only)