←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

CoD Stary
Wyrzucenie primary

Zablokowany

  • +
  • -
Szczurex - zdjęcie Szczurex 10.04.2011

Witam, Zrobiłem item "Zestaw S.W.A.T." i ma on dawać Tarcze i USP. Lecz jest problem jak klasa ma primary weapon bo wtedy nie daje tarczy.
Czy jest komenda typu Strip_user_weapon ale wyrzucajaca tylko primary weapon ?
Odpowiedz

  • +
  • -
Daku - zdjęcie Daku 10.04.2011

// Weapon bitsums
const PRIMARY_WEAPONS_BIT_SUM = (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90)
const SECONDARY_WEAPONS_BIT_SUM = (1<<CSW_P228)|(1<<CSW_ELITE)|(1<<CSW_FIVESEVEN)|(1<<CSW_USP)|(1<<CSW_GLOCK18)|(1<<CSW_DEAGLE)
const NADE_WEAPONS_BIT_SUM = ((1<<CSW_HEGRENADE)|(1<<CSW_SMOKEGRENADE)|(1<<CSW_FLASHBANG))
const NOCLIP_WPN_BS = ((1<<2)|(1<<CSW_HEGRENADE)|(1<<CSW_SMOKEGRENADE)|(1<<CSW_FLASHBANG)|(1<<CSW_KNIFE)|(1<<CSW_C4))


( komenda )drop_weapons(id, 1)

// Drop primary/secondary weapons
stock drop_weapons(id, dropwhat, type=0)
{
	// Get user weapons
	static weapons[32], num, i, weaponid
	num = 0 // reset passed weapons count (bugfix)
	get_user_weapons(id, weapons, num)
	
	// Loop through them and drop primaries or secondaries
	for (i = 0; i < num; i++)
	{
		// Prevent re-indexing the array
		weaponid = weapons[i]
		
		if (get_weapon_type(weaponid) == dropwhat)
		{
			if (type==1)
			{
				fm_strip_user_gun(id, weaponid)
			}
			else
			{
				// Get weapon entity
				static wname[32], weapon_ent
				get_weaponname(weaponid, wname, charsmax(wname))
				weapon_ent = fm_find_ent_by_owner(-1, wname, id)
				
				// Hack: store weapon bpammo on PEV_ADDITIONAL_AMMO
				set_pev(weapon_ent, PEV_ADDITIONAL_AMMO, cs_get_user_bpammo(id, weaponid))
				
				// Player drops the weapon and looses his bpammo
				engclient_cmd(id, "drop", wname)
			}
		}
	}
}

// only weapon index or its name can be passed, if neither is passed then the current gun will be stripped
stock fm_strip_user_gun(index, wid = 0, const wname[] = "") {
	new ent_class[32];
	if (!wid && wname[0])
		copy(ent_class, sizeof ent_class - 1, wname);
	else {
		new weapon = wid, clip, ammo;
		if (!weapon && !(weapon = get_user_weapon(index, clip, ammo)))
			return false;
		
		get_weaponname(weapon, ent_class, sizeof ent_class - 1);
	}

	new ent_weap = fm_find_ent_by_owner(-1, ent_class, index);
	if (!ent_weap)
		return false;

	engclient_cmd(index, "drop", ent_class);

	new ent_box = pev(ent_weap, pev_owner);
	if (!ent_box || ent_box == index)
		return false;

	dllfunc(DLLFunc_Think, ent_box);

	return true;
}

jak czegoś nie podałem napisz tu :P
Użytkownik Daku edytował ten post 10.04.2011 21:23
Odpowiedz

  • +
  • -
Szczurex - zdjęcie Szczurex 10.04.2011

yyy gdzie to wpisac: D?
Odpowiedz

  • +
  • -
Daku - zdjęcie Daku 11.04.2011

bitsum nad public plugin_init

a reszta niżej gdzie kolwiek po

drop_weapons(id,1 lub 2 to masz drop broni 1 Główne 2 Zapasowe ( pistolety )
Odpowiedz

  • +
  • -
Szczurex - zdjęcie Szczurex 11.04.2011

Błędy:

Error: Undefined symbol "get_weapon_type" on line 2976
Error: Undefined symbol "fm_find_ent_by_owner" on line 2987
Error: Undefined symbol "PEV_ADDITIONAL_AMMO" on line 2990
Error: Expected token: ";", but found ")" on line 2990
Error: Invalid expression, assumed zero on line 2990
Error: Too many error messages on one line on line 2990
Odpowiedz
Zablokowany