mirror of
https://github.com/celisej567/source-sdk-2013.git
synced 2026-09-11 20:11:33 +03:00
Mapbase v6.0
- Fixed path_track paths saving as pointers instead of handles - Fixed player animations not falling to base class correctly - Fixed logic_externaldata creating garbage in trailing spaces - Added "SetHandModelSkin" input - Added unique colors for various types of console message, adjustable via convars - Added the ability to use map-specific weapon scripts - Added a way to display (placeholder) text entirely from Faceposer scenes - Added "autobreak" keyvalue to game_text, which automatically breaks long text into different lines - Added the ability to change a game_text's font (very limited) - Added LightToggle input to point_spotlight - Added Enable/DisableSprites on npc_manhack - Added ai_goal_police behavior from metrocops to Combine soldiers and citizens - Added func_precipitation particle rain systems from the Alien Swarm SDK - Added new func_precipitation spawnflags for controlling behavior in particle types - Added "mapbase_version" cvar which shows the version of Mapbase a mod might be running on - Fixed an oversight with NPC crouch activities which was causing npc_metropolice to stop firing in standoffs - Added toggleable patches to npc_combine AI which make soldiers less likely to stand around without shooting or rush to melee when not needed - Added key for custom logo font on env_credits scripts - Added SetSpeed and SetPushDir inputs for trigger_push - Added a bunch of I/O/KV to func_fish_pool to allow for more control over the fish - Added OnLostEnemy/Player support for npc_combine_camera - Added enhanced save/restore for the Response System, toggleable via convar - Added a convar which allows users to disable weapon autoswitching when picking up ammo - Split VScript base script into its own file - Added VScript descriptions for NPC squads and the manager class which handles them - Moved several classes, functions, etc. to the VScript library itself for future usage in other projects, like VBSP - Added VScript to VBSP with basic map file interfacing - Made some VScript documentation more clear due to deprecation of online documentation - Added VScript "hook" registration, creating a standardized system which shows up in script_help documentation - Added VScript-driven custom weapons - Added clientside VScript scopes - Added a bunch of weapon-related VScript functions - Split a bunch of cluttered VScript stuff into different files - Added VScript functions for "following" entities/bonemerging - Added VScript functions for grenades - Added a few more VScript trigger functions - Added OnDeath hook for VScript - Fixed documentation for aliased functions in VScript - Fixed $bumpmask not working on SDK_LightmappedGeneric - Made vertex blend swapping in Hammer use a constant instead of a combo (makes it easier to compile the shader, especially for $bumpmask's sake) - Fixed brush phong, etc. causing SDK_WorldVertexTransition to stop working - Added limited support for $envmapmask in the bumpmapping shader - Fixed more issues with parallax corrected cubemaps and instances - Made instance variable recursion consistent with VMFII
This commit is contained in:
325
sp/src/vscript/vscript_squirrel.nut
Normal file
325
sp/src/vscript/vscript_squirrel.nut
Normal file
@@ -0,0 +1,325 @@
|
||||
static char g_Script_vscript_squirrel[] = R"vscript(
|
||||
//========= Mapbase - https://github.com/mapbase-source/source-sdk-2013 ============//
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
//=============================================================================//
|
||||
|
||||
Warning <- error;
|
||||
|
||||
function clamp(val,min,max)
|
||||
{
|
||||
if ( max < min )
|
||||
return max;
|
||||
else if( val < min )
|
||||
return min;
|
||||
else if( val > max )
|
||||
return max;
|
||||
else
|
||||
return val;
|
||||
}
|
||||
|
||||
function max(a,b) return a > b ? a : b
|
||||
|
||||
function min(a,b) return a < b ? a : b
|
||||
|
||||
function RemapVal(val, A, B, C, D)
|
||||
{
|
||||
if ( A == B )
|
||||
return val >= B ? D : C;
|
||||
return C + (D - C) * (val - A) / (B - A);
|
||||
}
|
||||
|
||||
function RemapValClamped(val, A, B, C, D)
|
||||
{
|
||||
if ( A == B )
|
||||
return val >= B ? D : C;
|
||||
local cVal = (val - A) / (B - A);
|
||||
cVal = (cVal < 0.0) ? 0.0 : (1.0 < cVal) ? 1.0 : cVal;
|
||||
return C + (D - C) * cVal;
|
||||
}
|
||||
|
||||
function Approach( target, value, speed )
|
||||
{
|
||||
local delta = target - value
|
||||
|
||||
if( delta > speed )
|
||||
value += speed
|
||||
else if( delta < (-speed) )
|
||||
value -= speed
|
||||
else
|
||||
value = target
|
||||
|
||||
return value
|
||||
}
|
||||
|
||||
function AngleDistance( next, cur )
|
||||
{
|
||||
local delta = next - cur
|
||||
|
||||
if ( delta < (-180.0) )
|
||||
delta += 360.0
|
||||
else if ( delta > 180.0 )
|
||||
delta -= 360.0
|
||||
|
||||
return delta
|
||||
}
|
||||
|
||||
function printl( text )
|
||||
{
|
||||
return ::print(text + "\n");
|
||||
}
|
||||
|
||||
class CSimpleCallChainer
|
||||
{
|
||||
constructor(prefixString, scopeForThis, exactMatch)
|
||||
{
|
||||
prefix = prefixString;
|
||||
scope = scopeForThis;
|
||||
chain = [];
|
||||
scope["Dispatch" + prefixString] <- Call.bindenv(this);
|
||||
}
|
||||
|
||||
function PostScriptExecute()
|
||||
{
|
||||
local func;
|
||||
try {
|
||||
func = scope[prefix];
|
||||
} catch(e) {
|
||||
return;
|
||||
}
|
||||
if (typeof(func) != "function")
|
||||
return;
|
||||
chain.push(func);
|
||||
}
|
||||
|
||||
function Call()
|
||||
{
|
||||
foreach (func in chain)
|
||||
{
|
||||
func.pcall(scope);
|
||||
}
|
||||
}
|
||||
|
||||
prefix = null;
|
||||
scope = null;
|
||||
chain = null;
|
||||
}
|
||||
|
||||
DocumentedFuncs <- {}
|
||||
DocumentedClasses <- {}
|
||||
DocumentedEnums <- {}
|
||||
DocumentedConsts <- {}
|
||||
DocumentedHooks <- {}
|
||||
|
||||
function AddAliasedToTable(name, signature, description, table)
|
||||
{
|
||||
// This is an alias function, could use split() if we could guarantee
|
||||
// that ':' would not occur elsewhere in the description and Squirrel had
|
||||
// a convience join() function -- It has split()
|
||||
local colon = description.find(":");
|
||||
if (colon == null)
|
||||
colon = description.len();
|
||||
local alias = description.slice(1, colon);
|
||||
description = description.slice(colon + 1);
|
||||
name = alias;
|
||||
signature = null;
|
||||
|
||||
table[name] <- [signature, description];
|
||||
}
|
||||
|
||||
function RegisterHelp(name, signature, description)
|
||||
{
|
||||
if (description.len() && description[0] == '#')
|
||||
{
|
||||
AddAliasedToTable(name, signature, description, DocumentedFuncs)
|
||||
}
|
||||
else
|
||||
{
|
||||
DocumentedFuncs[name] <- [signature, description];
|
||||
}
|
||||
}
|
||||
|
||||
function RegisterClassHelp(name, baseclass, description)
|
||||
{
|
||||
DocumentedClasses[name] <- [baseclass, description];
|
||||
}
|
||||
|
||||
function RegisterEnumHelp(name, description)
|
||||
{
|
||||
DocumentedEnums[name] <- description;
|
||||
}
|
||||
|
||||
function RegisterConstHelp(name, signature, description)
|
||||
{
|
||||
if (description.len() && description[0] == '#')
|
||||
{
|
||||
AddAliasedToTable(name, signature, description, DocumentedConsts)
|
||||
}
|
||||
else
|
||||
{
|
||||
DocumentedConsts[name] <- [signature, description];
|
||||
}
|
||||
}
|
||||
|
||||
function RegisterHookHelp(name, signature, description)
|
||||
{
|
||||
DocumentedHooks[name] <- [signature, description];
|
||||
}
|
||||
|
||||
function printdoc( text )
|
||||
{
|
||||
return ::printc(200,224,255,text);
|
||||
}
|
||||
|
||||
function printdocl( text )
|
||||
{
|
||||
return printdoc(text + "\n");
|
||||
}
|
||||
|
||||
function PrintClass(name, doc)
|
||||
{
|
||||
printdocl("=====================================");
|
||||
printdocl("Class: " + name);
|
||||
printdocl("Base: " + doc[0]);
|
||||
if (doc[1].len())
|
||||
printdocl("Description: " + doc[1]);
|
||||
printdocl("=====================================");
|
||||
print("\n");
|
||||
}
|
||||
|
||||
function PrintFunc(name, doc)
|
||||
{
|
||||
printdocl("Function: " + name);
|
||||
if (doc[0] == null)
|
||||
{
|
||||
// Is an aliased function
|
||||
printdoc("Signature: function " + name + "(");
|
||||
foreach(k,v in this[name].getinfos().parameters)
|
||||
{
|
||||
if (k == 0 && v == "this") continue;
|
||||
if (k > 1) printdoc(", ");
|
||||
printdoc(v);
|
||||
}
|
||||
printdocl(")");
|
||||
}
|
||||
else
|
||||
{
|
||||
printdocl("Signature: " + doc[0]);
|
||||
}
|
||||
if (doc[1].len())
|
||||
printdocl("Description: " + doc[1]);
|
||||
print("\n");
|
||||
}
|
||||
|
||||
function PrintEnum(name, doc)
|
||||
{
|
||||
printdocl("=====================================");
|
||||
printdocl("Enum: " + name);
|
||||
if (doc.len())
|
||||
printdocl("Description: " + doc);
|
||||
printdocl("=====================================");
|
||||
print("\n");
|
||||
}
|
||||
|
||||
function PrintConst(name, doc)
|
||||
{
|
||||
printdocl("Constant: " + name);
|
||||
if (doc[0] == null)
|
||||
{
|
||||
// Is an aliased function
|
||||
printdoc("Signature: function " + name + "(");
|
||||
foreach(k,v in this[name].getinfos().parameters)
|
||||
{
|
||||
if (k == 0 && v == "this") continue;
|
||||
if (k > 1) printdoc(", ");
|
||||
printdoc(v);
|
||||
}
|
||||
printdocl(")");
|
||||
}
|
||||
else
|
||||
{
|
||||
printdocl("Value: " + doc[0]);
|
||||
}
|
||||
if (doc[1].len())
|
||||
printdocl("Description: " + doc[1]);
|
||||
print("\n");
|
||||
}
|
||||
|
||||
function PrintHook(name, doc)
|
||||
{
|
||||
printdocl("Hook: " + name);
|
||||
if (doc[0] == null)
|
||||
{
|
||||
// Is an aliased function
|
||||
printdoc("Signature: function " + name + "(");
|
||||
foreach(k,v in this[name].getinfos().parameters)
|
||||
{
|
||||
if (k == 0 && v == "this") continue;
|
||||
if (k > 1) printdoc(", ");
|
||||
printdoc(v);
|
||||
}
|
||||
printdocl(")");
|
||||
}
|
||||
else
|
||||
{
|
||||
printdocl("Signature: " + doc[0]);
|
||||
}
|
||||
if (doc[1].len())
|
||||
printdocl("Description: " + doc[1]);
|
||||
print("\n");
|
||||
}
|
||||
|
||||
function PrintHelp(pattern = "*")
|
||||
{
|
||||
local foundMatches = false;
|
||||
foreach(name, doc in DocumentedClasses)
|
||||
{
|
||||
if (pattern == "*" || name.tolower().find(pattern.tolower()) != null)
|
||||
{
|
||||
foundMatches = true;
|
||||
PrintClass(name, doc)
|
||||
}
|
||||
}
|
||||
|
||||
foreach(name, doc in DocumentedFuncs)
|
||||
{
|
||||
if (pattern == "*" || name.tolower().find(pattern.tolower()) != null)
|
||||
{
|
||||
foundMatches = true;
|
||||
PrintFunc(name, doc)
|
||||
}
|
||||
}
|
||||
|
||||
foreach(name, doc in DocumentedEnums)
|
||||
{
|
||||
if (pattern == "*" || name.tolower().find(pattern.tolower()) != null)
|
||||
{
|
||||
foundMatches = true;
|
||||
PrintEnum(name, doc)
|
||||
}
|
||||
}
|
||||
|
||||
foreach(name, doc in DocumentedConsts)
|
||||
{
|
||||
if (pattern == "*" || name.tolower().find(pattern.tolower()) != null)
|
||||
{
|
||||
foundMatches = true;
|
||||
PrintConst(name, doc)
|
||||
}
|
||||
}
|
||||
|
||||
foreach(name, doc in DocumentedHooks)
|
||||
{
|
||||
if (pattern == "*" || name.tolower().find(pattern.tolower()) != null)
|
||||
{
|
||||
foundMatches = true;
|
||||
PrintHook(name, doc)
|
||||
}
|
||||
}
|
||||
|
||||
if (!foundMatches)
|
||||
printdocl("Pattern " + pattern + " not found");
|
||||
}
|
||||
|
||||
)vscript";
|
||||
Reference in New Issue
Block a user