CS:GO VScript Examples: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
(Update) |
||
Line 6: | Line 6: | ||
===Find the closest player to a known entity=== | ===Find the closest player to a known entity=== | ||
<source lang=cpp> | <source lang=cpp>button <- Entities.FindByName( null, "button_01" ) // find the in-game entity "button_01" and store its handle | ||
player <- Entities.FindByClassnameNearest( "player", | player <- Entities.FindByClassnameNearest( "player", button.GetOrigin(), 512 ) // find the nearest player within 512 hammer units to the button's origin and store their handle. | ||
</source> | </source> | ||
===Turn | === Turn decoys into nukes === | ||
<source lang=cpp>//The following script | <source lang=cpp>// The following script is a think script, it can be attached to any entity. | ||
// | // The Think function will be executed | ||
//as long as the entity is alive and | // as long as the entity is alive and has its thinkfunction set to Think | ||
// This can be found in hammer's sound picker | |||
const EXPLOSION_SOUND = "c4.Explode" | |||
function Precache() | // Called after the entity is spawned | ||
function Precache() | |||
{ | { | ||
self.PrecacheScriptSound( EXPLOSION_SOUND ) | self.PrecacheScriptSound( EXPLOSION_SOUND ) | ||
} | } | ||
//Every 0.1 seconds this checks | // Every 0.1 seconds this function checks for decoy_projectiles in the map | ||
//When found it | // When found, it checks if the decoy is standing still | ||
//If true | // If true create an env_explosion, trigger it and kill the decoy | ||
function Think() | function Think() | ||
{ | { | ||
local decoy = null | |||
while (( | while( ( decoy = Entities.FindByClassname( decoy, "decoy_projectile" ) ) != null ) | ||
{ | { | ||
if( | if( decoy.GetVelocity().Length() == 0 ) | ||
{ | { | ||
owner | local owner = decoy.GetOwner() | ||
origin | local origin = decoy.GetOrigin() | ||
local explosion = Entities.CreateByClassname( "env_explosion" ) | |||
explosion.__KeyValueFromInt( "iMagnitude", 2000 ) | |||
explosion.SetOrigin( origin ) | |||
explosion.SetOwner( owner ) | |||
EntFireByHandle( explosion, "Explode", "", 0.1, owner, owner ) | |||
DispatchParticleEffect( "explosion_c4_500", origin, origin ) | |||
EntFireByHandle( | decoy.EmitSound( EXPLOSION_SOUND ) | ||
decoy.Destroy() | |||
DispatchParticleEffect("explosion_c4_500", origin, origin) | |||
} | } | ||
} | } | ||
}</source> | }</source> | ||
===Create a | === Create a timer to call a function independently === | ||
<source lang=cpp> | <source lang=cpp> | ||
timer <- null | |||
function OnTimer() | |||
{ | { | ||
print(".") | |||
print(" | |||
} | } | ||
// Called after the entity is spawned | |||
function OnPostSpawn() | function OnPostSpawn() | ||
{ | { | ||
if( | if( timer == null ) | ||
{ | { | ||
timer = Entities.CreateByClassname( "logic_timer" ) | |||
// set refire time | |||
timer.__KeyValueFromFloat( "RefireTime", 0.1 ) | |||
= | timer.ValidateScriptScope() | ||
local scope = timer.GetScriptScope() | |||
// add a reference to the function | |||
scope.OnTimer <- OnTimer | |||
// connect the OnTimer output, | |||
// every time the timer fires the output, the function is executed | |||
timer.ConnectOutput( "OnTimer", "OnTimer" ) | |||
// start the timer | |||
EntFireByHandle( timer, "Enable", "", 0, null, null ) | |||
} | } | ||
} | } | ||
</source> | </source> | ||
==See also== | ==See also== | ||
Line 131: | Line 98: | ||
==External links== | ==External links== | ||
* [http://en.wikipedia.org/wiki/Squirrel_(programming_language) Squirrel (programming language)] - Wikipedia Article on Squirrel | * [http://en.wikipedia.org/wiki/Squirrel_(programming_language) Squirrel (programming language)] - Wikipedia Article on Squirrel | ||
* {{sq}}[http://squirrel-lang.org/ Squirrel | * {{sq}}[http://www.squirrel-lang.org/doc/squirrel2.html Squirrel Reference Manual] | ||
[[Category:Counter-Strike:_Global_Offensive]] | [[Category:Counter-Strike:_Global_Offensive]] | ||
[[Category:Scripting]] | [[Category:Scripting]] |
Revision as of 03:09, 14 June 2019
Template:Otherlang2
The following are example vscripts for Counter-Strike: Global Offensive.
Find the closest player to a known entity
button <- Entities.FindByName( null, "button_01" ) // find the in-game entity "button_01" and store its handle
player <- Entities.FindByClassnameNearest( "player", button.GetOrigin(), 512 ) // find the nearest player within 512 hammer units to the button's origin and store their handle.
Turn decoys into nukes
// The following script is a think script, it can be attached to any entity.
// The Think function will be executed
// as long as the entity is alive and has its thinkfunction set to Think
// This can be found in hammer's sound picker
const EXPLOSION_SOUND = "c4.Explode"
// Called after the entity is spawned
function Precache()
{
self.PrecacheScriptSound( EXPLOSION_SOUND )
}
// Every 0.1 seconds this function checks for decoy_projectiles in the map
// When found, it checks if the decoy is standing still
// If true create an env_explosion, trigger it and kill the decoy
function Think()
{
local decoy = null
while( ( decoy = Entities.FindByClassname( decoy, "decoy_projectile" ) ) != null )
{
if( decoy.GetVelocity().Length() == 0 )
{
local owner = decoy.GetOwner()
local origin = decoy.GetOrigin()
local explosion = Entities.CreateByClassname( "env_explosion" )
explosion.__KeyValueFromInt( "iMagnitude", 2000 )
explosion.SetOrigin( origin )
explosion.SetOwner( owner )
EntFireByHandle( explosion, "Explode", "", 0.1, owner, owner )
DispatchParticleEffect( "explosion_c4_500", origin, origin )
decoy.EmitSound( EXPLOSION_SOUND )
decoy.Destroy()
}
}
}
Create a timer to call a function independently
timer <- null
function OnTimer()
{
print(".")
}
// Called after the entity is spawned
function OnPostSpawn()
{
if( timer == null )
{
timer = Entities.CreateByClassname( "logic_timer" )
// set refire time
timer.__KeyValueFromFloat( "RefireTime", 0.1 )
timer.ValidateScriptScope()
local scope = timer.GetScriptScope()
// add a reference to the function
scope.OnTimer <- OnTimer
// connect the OnTimer output,
// every time the timer fires the output, the function is executed
timer.ConnectOutput( "OnTimer", "OnTimer" )
// start the timer
EntFireByHandle( timer, "Enable", "", 0, null, null )
}
}
See also
External links
- Squirrel (programming language) - Wikipedia Article on Squirrel
Squirrel Reference Manual