boiii-scripts/shared/tweakables_shared.gsc
2023-04-13 17:30:38 +02:00

400 lines
16 KiB
Plaintext

#using scripts\shared\system_shared;
#namespace tweakables;
function autoexec __init__sytem__() { system::register("tweakables",&__init__,undefined,undefined); }
function __init__()
{
level.clientTweakables = [];
level.tweakablesInitialized = true;
level.rules = [];
level.gameTweaks = [];
level.teamTweaks = [];
level.playerTweaks = [];
level.classTweaks = [];
level.weaponTweaks = [];
level.hardpointTweaks = [];
level.hudTweaks = [];
// commented out tweaks have not yet been implemented
registerTweakable( "game", "arcadescoring", "scr_game_arcadescoring", 0 ); //*
registerTweakable( "game", "difficulty", "scr_game_difficulty", 1 ); //*
registerTweakable( "game", "pinups", "scr_game_pinups", 0 ); //*
registerTweakable( "team", "teamkillerplaylistbanquantum", "scr_team_teamkillerplaylistbanquantum", 0 );
registerTweakable( "team", "teamkillerplaylistbanpenalty", "scr_team_teamkillerplaylistbanpenalty", 0 );
registerTweakable( "player", "allowrevive", "scr_player_allowrevive", 1 ); //*
registerTweakable( "weapon", "allowfrag", "scr_weapon_allowfrags", 1 );
registerTweakable( "weapon", "allowsmoke", "scr_weapon_allowsmoke", 1 );
registerTweakable( "weapon", "allowflash", "scr_weapon_allowflash", 1 );
registerTweakable( "weapon", "allowc4", "scr_weapon_allowc4", 1 );
registerTweakable( "weapon", "allowsatchel", "scr_weapon_allowsatchel", 1 );
registerTweakable( "weapon", "allowbetty", "scr_weapon_allowbetty", 1 );
registerTweakable( "weapon", "allowrpgs", "scr_weapon_allowrpgs", 1 );
registerTweakable( "weapon", "allowmines", "scr_weapon_allowmines", 1 );
registerTweakable( "hud", "showobjicons", "ui_hud_showobjicons", 1 ); //*
setClientTweakable( "hud", "showobjicons" );
registerTweakable( "killstreak", "allowradar", "scr_hardpoint_allowradar", 1 );
registerTweakable( "killstreak", "allowradardirection", "scr_hardpoint_allowradardirection", 1 );
registerTweakable( "killstreak", "allowcounteruav", "scr_hardpoint_allowcounteruav", 1 );
registerTweakable( "killstreak", "allowdogs", "scr_hardpoint_allowdogs", 1 );
registerTweakable( "killstreak", "allowhelicopter_comlink", "scr_hardpoint_allowhelicopter_comlink", 1 );
registerTweakable( "killstreak", "allowrcbomb", "scr_hardpoint_allowrcbomb", 1 );
registerTweakable( "killstreak", "allowauto_turret", "scr_hardpoint_allowauto_turret", 1 );
/#debug_refresh=true;#/
level thread updateUITweakables(debug_refresh);
}
function getTweakableDVarValue( category, name )
{
switch( category )
{
case "rule":
dVar = level.rules[name].dVar;
break;
case "game":
dVar = level.gameTweaks[name].dVar;
break;
case "team":
dVar = level.teamTweaks[name].dVar;
break;
case "player":
dVar = level.playerTweaks[name].dVar;
break;
case "class":
dVar = level.classTweaks[name].dVar;
break;
case "weapon":
dVar = level.weaponTweaks[name].dVar;
break;
case "killstreak":
dVar = level.hardpointTweaks[name].dVar;
break;
case "hud":
dVar = level.hudTweaks[name].dVar;
break;
default:
dVar = undefined;
break;
}
assert( isdefined( dVar ) );
value = getDvarInt( dVar );
return value;
}
function getTweakableDVar( category, name )
{
switch( category )
{
case "rule":
value = level.rules[name].dVar;
break;
case "game":
value = level.gameTweaks[name].dVar;
break;
case "team":
value = level.teamTweaks[name].dVar;
break;
case "player":
value = level.playerTweaks[name].dVar;
break;
case "class":
value = level.classTweaks[name].dVar;
break;
case "weapon":
value = level.weaponTweaks[name].dVar;
break;
case "killstreak":
value = level.hardpointTweaks[name].dVar;
break;
case "hud":
value = level.hudTweaks[name].dVar;
break;
default:
value = undefined;
break;
}
assert( isdefined( value ) );
return value;
}
function getTweakableValue( category, name )
{
switch( category )
{
case "rule":
value = level.rules[name].value;
break;
case "game":
value = level.gameTweaks[name].value;
break;
case "team":
value = level.teamTweaks[name].value;
break;
case "player":
value = level.playerTweaks[name].value;
break;
case "class":
value = level.classTweaks[name].value;
break;
case "weapon":
value = level.weaponTweaks[name].value;
break;
case "killstreak":
value = level.hardpointTweaks[name].value;
break;
case "hud":
value = level.hudTweaks[name].value;
break;
default:
value = undefined;
break;
}
overrideDvar = "scr_" + level.gameType + "_" + category + "_" + name;
if ( GetDvarString( overrideDvar ) != "" )
return getDvarInt( overrideDvar );
assert( isdefined( value ) );
return value;
}
function getTweakableLastValue( category, name )
{
switch( category )
{
case "rule":
value = level.rules[name].lastValue;
break;
case "game":
value = level.gameTweaks[name].lastValue;
break;
case "team":
value = level.teamTweaks[name].lastValue;
break;
case "player":
value = level.playerTweaks[name].lastValue;
break;
case "class":
value = level.classTweaks[name].lastValue;
break;
case "weapon":
value = level.weaponTweaks[name].lastValue;
break;
case "killstreak":
value = level.hardpointTweaks[name].lastValue;
break;
case "hud":
value = level.hudTweaks[name].lastValue;
break;
default:
value = undefined;
break;
}
assert( isdefined( value ) );
return value;
}
function setTweakableValue( category, name, value )
{
switch( category )
{
case "rule":
dVar = level.rules[name].dVar;
break;
case "game":
dVar = level.gameTweaks[name].dVar;
break;
case "team":
dVar = level.teamTweaks[name].dVar;
break;
case "player":
dVar = level.playerTweaks[name].dVar;
break;
case "class":
dVar = level.classTweaks[name].dVar;
break;
case "weapon":
dVar = level.weaponTweaks[name].dVar;
break;
case "killstreak":
dVar = level.hardpointTweaks[name].dVar;
break;
case "hud":
dVar = level.hudTweaks[name].dVar;
break;
default:
dVar = undefined;
break;
}
SetDvar( dVar, value );
}
function setTweakableLastValue( category, name, value )
{
switch( category )
{
case "rule":
level.rules[name].lastValue = value;
break;
case "game":
level.gameTweaks[name].lastValue = value;
break;
case "team":
level.teamTweaks[name].lastValue = value;
break;
case "player":
level.playerTweaks[name].lastValue = value;
break;
case "class":
level.classTweaks[name].lastValue = value;
break;
case "weapon":
level.weaponTweaks[name].lastValue = value;
break;
case "killstreak":
level.hardpointTweaks[name].lastValue = value;
break;
case "hud":
level.hudTweaks[name].lastValue = value;
break;
default:
break;
}
}
function registerTweakable( category, name, dvar, value )
{
if ( isString( value ) )
{
if( GetDvarString( dvar ) == "" )
SetDvar( dvar, value );
else
value = GetDvarString( dvar );
}
else
{
if( GetDvarString( dvar ) == "" )
SetDvar( dvar, value );
else
value = getDvarInt( dvar );
}
switch( category )
{
case "rule":
if ( !isdefined( level.rules[name] ) )
level.rules[name] = spawnStruct();
level.rules[name].value = value;
level.rules[name].lastValue = value;
level.rules[name].dVar = dvar;
break;
case "game":
if ( !isdefined( level.gameTweaks[name] ) )
level.gameTweaks[name] = spawnStruct();
level.gameTweaks[name].value = value;
level.gameTweaks[name].lastValue = value;
level.gameTweaks[name].dVar = dvar;
break;
case "team":
if ( !isdefined( level.teamTweaks[name] ) )
level.teamTweaks[name] = spawnStruct();
level.teamTweaks[name].value = value;
level.teamTweaks[name].lastValue = value;
level.teamTweaks[name].dVar = dvar;
break;
case "player":
if ( !isdefined( level.playerTweaks[name] ) )
level.playerTweaks[name] = spawnStruct();
level.playerTweaks[name].value = value;
level.playerTweaks[name].lastValue = value;
level.playerTweaks[name].dVar = dvar;
break;
case "class":
if ( !isdefined( level.classTweaks[name] ) )
level.classTweaks[name] = spawnStruct();
level.classTweaks[name].value = value;
level.classTweaks[name].lastValue = value;
level.classTweaks[name].dVar = dvar;
break;
case "weapon":
if ( !isdefined( level.weaponTweaks[name] ) )
level.weaponTweaks[name] = spawnStruct();
level.weaponTweaks[name].value = value;
level.weaponTweaks[name].lastValue = value;
level.weaponTweaks[name].dVar = dvar;
break;
case "killstreak":
if ( !isdefined( level.hardpointTweaks[name] ) )
level.hardpointTweaks[name] = spawnStruct();
level.hardpointTweaks[name].value = value;
level.hardpointTweaks[name].lastValue = value;
level.hardpointTweaks[name].dVar = dvar;
break;
case "hud":
if ( !isdefined( level.hudTweaks[name] ) )
level.hudTweaks[name] = spawnStruct();
level.hudTweaks[name].value = value;
level.hudTweaks[name].lastValue = value;
level.hudTweaks[name].dVar = dvar;
break;
}
}
function setClientTweakable( category, name )
{
level.clientTweakables[level.clientTweakables.size] = name;
}
function updateUITweakables(debug_refresh)
{
do
{
for ( index = 0; index < level.clientTweakables.size; index++ )
{
clientTweakable = level.clientTweakables[index];
curValue = getTweakableDVarValue( "hud", clientTweakable );
lastValue = getTweakableLastValue( "hud", clientTweakable );
if ( curValue != lastValue )
{
updateServerDvar( getTweakableDvar( "hud", clientTweakable ), curValue );
setTweakableLastValue( "hud", clientTweakable, curValue );
}
}
wait ( randomfloatrange(1.0-0.1,1.0+0.1) );
}
while(isdefined(debug_refresh));
}
function updateServerDvar( dvar, value )
{
//makeDvarServerInfo( dvar, value );
}