func_buyzone
Class hierarchy |
---|
CBuyZone |
func_buy_zone.cpp
|
func_buyzone
is a brush entity available in Counter-Strike series.
It is used to define areas where players of different teams can open the buy menu to purchase weapons and equipment.
If a player touches the volume of this entity and his team equals the team of this entity, then he is allowed to buy. If this entity has the team 0 or -1, then any or no player can buy inside this entity's volume, respectively.
Tip:The
SetTeam
input can be used to change the buying team in-game.Note:Setting this entity's team to -1 and
Disable
ing it have the same effect, just that these are independent operations.Contents
Keyvalues
- Name
(targetname)
<string> - The name that other entities refer to this entity by, via Inputs/Outputs or other keyvalues (e.g.
parentname
ortarget
).
Also displayed in Hammer's 2D views and Entity Report.See also: Generic Keyvalues, Inputs and Outputs available to all entities
- Team number (int)
(TeamNum)
<integer> - The team that can use the buyzone.
Note: This keyvalue is only used when this entity is spawned, so changing it with
AddOutput
has no effect. The actual keyvalue that determines the buy team is teamnumber
.
|
Note:This entity's trigger functionalities are !FGD but can be used, such as the StartDisabled keyvalue and the Enable/Disable/Toggle inputs. To use this entity's inherited trigger I/O (OnStartTouch, ...), set its spawnflags keyvalue appropriately (default is 4097). To add all of this in Hammer, see below.
Inputs
Warning: By default, this entity has the inputs SetEnabled/SetDisabled in Hammer, but it actually doesn't; Using these has no effect! Use Enable/Disable/Toggle instead. This can be fixed by editing
csgo.fgd
, searching for func_buyzone and replacing the incorrect input names. (The FGD code below fixes this differently.)SetTeam
<integer>- Sets the team of this entity, which also sets the team that is allowed to buy.
SetTeam_None
(only in )- Allows no team to use the buyzone, effectively disabling it. Equivalent to
SetTeam -1
.
|
Outputs
Bug:Spamming crouch jumps in a trigger can randomly fire OnStartTouch . Confirm:Is it a Multiplayer issue only? [todo tested in?]
Warning:This includes entities which are deleted while inside the trigger. In this case !activator will be invalid.
Warning:
OnEndTouch can fire before OnStartTouch under certain circumstances where both are fired on the same tick and each have the same delay. Fix:Add a slight delay to OnEndTouch .Bug:Spamming crouch jump in a trigger can randomly fire OnEndTouch . Confirm:Is it a Multiplayer issue only? [todo tested in?]
|
FGD Code
This code...
- replaces its base class with Trigger which effectively adds trigger properties such as the keyvalue StartDisabled, the inputs and outputs Enable/Disable/Toggle/OnStartTouch/... and the trigger flags (1: Clients, ...).
- adds the input TouchTest and the outputs OnTouching/OnNotTouching as seen in
trigger_multiple
ofbase.fgd
. - removes the invalid inputs SetEnabled, SetDisabled.
Replace the corresponding lines of cstrike.fgd
or csgo.fgd
near func_buyzone with this.
@SolidClass base(Trigger, TeamNum) = func_buyzone: // "Targetname" -> "Trigger"
"Buy Zone. Players can buy equipment while standing in this zone, if the zone matches their current team.\n\n" +
"A single Buy Zone entity must be either terrorist or counter-terrorist, it cannot be both. Should have " +
"the toolstrigger material applied to all sides"
[
// input SetEnabled(void) : "Sets this buyzone as enabled."
// input SetDisabled(void) : "Sets this buyzone as disabled."
input TouchTest(void) : "Tests if the trigger is being touched and fires an output based on whether the value is true or false."
input SetTeam_TerroristOnly(void) : "Make it so only terrorist can buy from this buyzone."
input SetTeam_CTOnly(void) : "Make it so only CT's can buy from this buyzone."
input SetTeam_AllTeams(void) : "Make it so all teams can buy from this buyzone."
input SetTeam_None(void) : "Make it so no teams can buy from this buyzone (this essentially disables the buyzone)."
output OnTouching(void) : "Fired when the TestTouch input is true (something is touching the trigger.)"
output OnNotTouching(void) : "Fired when the TestTouch input is not true (nothing is touching the trigger.)"
]