Left 4 Dead 2/Scripting: Difference between revisions
(→Description: About the scripting language) |
|||
Line 4: | Line 4: | ||
==Description== | ==Description== | ||
Left 4 Dead 2 vscripts are written in [http://squirrel-lang.org/ Squirrel], a compilable scripting language similar to [http://www.lua.org/ Lua]. | |||
Some uses of vscripts include: | Some uses of vscripts include: | ||
Revision as of 06:03, 11 February 2010
Left 4 Dead 2 vscripts are scripts that can be run in-game to perform various tasks and changes.

Description
Left 4 Dead 2 vscripts are written in Squirrel, a compilable scripting language similar to Lua.
Some uses of vscripts include:
- Mini-games found in Dark Carnival - counters, timers, prop spawning
- Scavenge finale logic - respawning and re-highlighting gas cans
- Director manipulation - onslaughts, reserved wanderers, complete emptiness/silence, prohibition of boss infected (tanks and witches), direction of mobs
- Model manipulation - green diesel cans attached to survivors in Hard Rain
- Much more!
The file extensions of vscripts are .nut and .nuc, where .nut files are human readable using a text editor. Official .nuc script files are located in scripts/vscripts within pak01_dir.vpk (you can open this file with third party programs like GCFScape).
Some entities that accept vscripts as inputs or properties include info_director, logic_script, and trigger_finale.
Scripting Samples
Some General DirectorOptions
You can start a script with an input to the director "BeginScript" and then the name of the script in the parameters field. Place the script as a ".nut" file in your vscripts directory. To end the script, send an input to the director "EndScript".
Here are some examples:
DirectorOptions <- { ProhibitBosses = 1 (default is 0) AlwaysAllowWanderers = 1 (default is 0) MobMinSize = 10 (default) MobMaxSize = 30 (default) SustainPeakMinTime = 3 (default) SustainPeakMaxTime = 5 (default) IntensityRelaxThreshold = 0.9 (default) RelaxMinInterval = 30 (default) RelaxMaxInterval = 45 (default) RelaxMaxFlowTravel = 3000 (default) SpecialRespawnInterval = 45.0 (default) NumReservedWanderers = 10 (default is 0) }
You can play around with some of these numbers for specific events in your levels. For example, some of our scripts reduce the SpecialRespawnInterval to 30 seconds or we have some that reduce the RelaxMaxFlowTravel to 1000 so that the director won't stay relaxed if the survivors have continued far enough.
Prohibiting Tank and Witch spawns
Left4Dead 2 no longer relies on the mission.txt file to prohibit Tanks and Witches on maps. This is now done with a script file that you should place in your left4dead2/scripts/vscripts folder (you may need to add the vscripts subfolder yourself). Add the following to a text file:
DirectorOptions <- { ProhibitBosses = true }
Save the textfile with the extention .nut in the vscripts folder. In your map, place a logic_auto entity and add an output. The output should target the AI Director entity and make it fire the script by using the BeginScript action. In the parameter field, you set the name of your script (without the .nut extention)
Some Scavenge Finale DirectorOptions
Part of the script of Scavenge-type finale found in the last map of Dead Center.
DirectorOptions <- { PreferredMobDirection = SPAWN_LARGE_VOLUME PreferredSpecialDirection = SPAWN_LARGE_VOLUME ShouldConstrainLargeVolumeSpawn = false MobSpawnMinTime = 45 MobSpawnMaxTime = 90 CommonLimit = 15 ZombieSpawnRange = 3000 } NavMesh.UnblockRescueVehicleNav() Director.ResetMobTimer()