Func buyzone: Difference between revisions
Jump to navigation
Jump to search

Important:This is a preserved entity in 
.
If the game has round restart mechanics this entity may not behave as expected:
Tip:The
Note:Setting this entity's team to -1 and
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
Note:This entity's trigger functionalities are !FGD but most can be used, such as the StartDisabled keyvalue and the Enable/Disable/Toggle inputs. Filter Name does not work. 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.
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.)
(-added class hierarchy, cleanup) |
(Add preserved ent and specify that filter name doesn't work) |
||
Line 7: | Line 7: | ||
If a [[player]] touches the volume of this entity and his team equals the team of this entity, then he is allowed to buy. {{csgo}} If this entity has the team 0 or -1, then any or no player can buy inside this entity's volume, respectively. | If a [[player]] touches the volume of this entity and his team equals the team of this entity, then he is allowed to buy. {{csgo}} If this entity has the team 0 or -1, then any or no player can buy inside this entity's volume, respectively. | ||
{{PreservedEnt|func_buyzone}} | |||
{{Tip|The <code>SetTeam</code> input can be used to change the buying team in-game.}} | {{Tip|The <code>SetTeam</code> input can be used to change the buying team in-game.}} | ||
Line 27: | Line 28: | ||
{{Note | This keyvalue is only used when this entity is spawned, so changing it with {{ent|AddOutput}} has no effect. {{csgo}} The actual keyvalue that determines the buy team is <code>teamnumber</code>.}} | {{Note | This keyvalue is only used when this entity is spawned, so changing it with {{ent|AddOutput}} has no effect. {{csgo}} The actual keyvalue that determines the buy team is <code>teamnumber</code>.}} | ||
{{KV BaseTrigger}} | {{KV BaseTrigger}} | ||
{{Note|This entity's trigger functionalities are {{not in FGD}} but can be used, such as the <tt>StartDisabled</tt> keyvalue and the <tt>Enable/Disable/Toggle</tt> inputs. To use this entity's inherited trigger I/O (<tt>OnStartTouch</tt>, ...), set its <tt>spawnflags</tt> keyvalue appropriately (default is 4097). To add all of this in [[Hammer]], see [[#FGD Code|below]].}} | {{Note|This entity's trigger functionalities are {{not in FGD}} but most can be used, such as the <tt>StartDisabled</tt> keyvalue and the <tt>Enable/Disable/Toggle</tt> inputs. Filter Name does ''not'' work. To use this entity's inherited trigger I/O (<tt>OnStartTouch</tt>, ...), set its <tt>spawnflags</tt> keyvalue appropriately (default is 4097). To add all of this in [[Hammer]], see [[#FGD Code|below]].}} | ||
== Inputs == | == Inputs == |
Revision as of 07:47, 22 November 2024


![]() |
---|
CBuyZone |
![]() |
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.



If the game has round restart mechanics this entity may not behave as expected:
|

SetTeam
input can be used to change the buying team in-game.
Disable
ing it have the same effect, just that these are independent operations.Keyvalues
- Name (targetname) <string>[ Edit ]
- 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.


teamnumber
.
|

Inputs


- 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
|
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 of base.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.)"
]