// Detects common services like RTB and registers perferences to them. // ------------------------------------------------------------------- function ndRegisterPrefs() { //Glass prefs also set this variable so we don't need to add them seperately if($RTB::Hooks::ServerControl) ndRegisterPrefsToRtb(); else ndExtendDefaultPrefValues(); ndDeleteOutdatedPrefs(); } function ndRegisterPrefsToRtb() { echo("ND: Registering RTB prefs"); %trustDropDown = "list None 0 Build 1 Full 2 Self 3"; //Limits RTB_registerPref("Admin Only", "New Duplicator | Limits", "$Pref::Server::ND::AdminOnly", "bool", "Tool_NewDuplicator", false, false, false, ""); RTB_registerPref("Fill Paint Admin Only", "New Duplicator | Limits", "$Pref::Server::ND::PaintAdminOnly", "bool", "Tool_NewDuplicator", false, false, false, ""); RTB_registerPref("Fill Paint Fx Admin Only", "New Duplicator | Limits", "$Pref::Server::ND::PaintFxAdminOnly", "bool", "Tool_NewDuplicator", true, false, false, ""); RTB_registerPref("Fill Wrench Admin Only", "New Duplicator | Limits", "$Pref::Server::ND::WrenchAdminOnly", "bool", "Tool_NewDuplicator", true, false, false, ""); RTB_registerPref("Floating Bricks Admin Only", "New Duplicator | Limits", "$Pref::Server::ND::FloatAdminOnly", "bool", "Tool_NewDuplicator", true, false, false, ""); RTB_registerPref("Save Admin Only", "New Duplicator | Limits", "$Pref::Server::ND::SaveAdminOnly", "bool", "Tool_NewDuplicator", true, false, false, ""); RTB_registerPref("Load Admin Only", "New Duplicator | Limits", "$Pref::Server::ND::LoadAdminOnly", "bool", "Tool_NewDuplicator", false, false, false, ""); RTB_registerPref("Fill Bricks Admin Only", "New Duplicator | Limits", "$Pref::Server::ND::FillBricksAdminOnly", "bool", "Tool_NewDuplicator", true, false, false, ""); //Settings RTB_RegisterPref("Trust Limit", "New Duplicator | Settings", "$Pref::Server::ND::TrustLimit", %trustDropDown, "Tool_NewDuplicator", 2, false, false, ""); RTB_RegisterPref("Admin Trust Bypass (Select)", "New Duplicator | Settings", "$Pref::Server::ND::AdminTrustBypass1", "bool", "Tool_NewDuplicator", true, false, false, ""); RTB_RegisterPref("Admin Trust Bypass (Edit)", "New Duplicator | Settings", "$Pref::Server::ND::AdminTrustBypass2", "bool", "Tool_NewDuplicator", false, false, false, ""); RTB_RegisterPref("Select Public Bricks", "New Duplicator | Settings", "$Pref::Server::ND::SelectPublicBricks", "bool", "Tool_NewDuplicator", true, false, false, ""); RTB_registerPref("Max Bricks (Admin)", "New Duplicator | Settings", "$Pref::Server::ND::MaxBricksAdmin", "int 1000 1000000", "Tool_NewDuplicator", 1000000, false, false, ""); RTB_registerPref("Max Bricks (Player)", "New Duplicator | Settings", "$Pref::Server::ND::MaxBricksPlayer", "int 1000 1000000", "Tool_NewDuplicator", 50000, false, false, ""); RTB_registerPref("Max Box Size (Admin)", "New Duplicator | Settings", "$Pref::Server::ND::MaxBoxSizeAdmin", "int 1 50000", "Tool_NewDuplicator", 1024, false, false, ""); RTB_registerPref("Max Box Size (Player)", "New Duplicator | Settings", "$Pref::Server::ND::MaxBoxSizePlayer", "int 1 50000", "Tool_NewDuplicator", 64, false, false, ""); RTB_registerPref("Selecting Timeout (Player)", "New Duplicator | Settings", "$Pref::Server::ND::SelectTimeoutMS", "int 0 5000", "Tool_NewDuplicator", 400, false, false, ""); RTB_registerPref("Planting Timeout (Player)", "New Duplicator | Settings", "$Pref::Server::ND::PlantTimeoutMS", "int 0 5000", "Tool_NewDuplicator", 400, false, false, ""); //Advanced RTB_registerPref("Enable Menu Sounds", "New Duplicator | Advanced", "$Pref::Server::ND::PlayMenuSounds", "bool", "Tool_NewDuplicator", true, false, false, ""); RTB_registerPref("Max Ghost Bricks", "New Duplicator | Advanced", "$Pref::Server::ND::MaxGhostBricks", "int 1 50000", "Tool_NewDuplicator", 1500, false, false, ""); RTB_registerPref("Instant Ghost Bricks", "New Duplicator | Advanced", "$Pref::Server::ND::InstantGhostBricks", "int 1 50000", "Tool_NewDuplicator", 150, false, false, ""); RTB_registerPref("Scatter Ghost Bricks", "New Duplicator | Advanced", "$Pref::Server::ND::ScatterGhostBricks", "bool", "Tool_NewDuplicator", true, false, false, ""); RTB_registerPref("Process Bricks per Tick", "New Duplicator | Advanced", "$Pref::Server::ND::ProcessPerTick", "int 1 50000", "Tool_NewDuplicator", 300, false, false, ""); RTB_registerPref("Box Selection Chunk Size", "New Duplicator | Advanced", "$Pref::Server::ND::BoxSelectChunkDim", "int 1 50000", "Tool_NewDuplicator", 6, false, false, ""); RTB_registerPref("Create Sym Table on Start", "New Duplicator | Advanced", "$Pref::Server::ND::SymTableOnStart", "bool", "Tool_NewDuplicator", false, false, false, ""); //Restore default prefs RTB_registerPref("Check to restore defaults", "New Duplicator | Reset Prefs", "$ND::RestoreDefaultPrefs", "bool", "Tool_NewDuplicator", false, false, false, "ndRestoreDefaultPrefs"); } //Callback function for "Reset Prefs" function ndRestoreDefaultPrefs() { if($ND::RestoreDefaultPrefs) ndApplyDefaultPrefValues(); } function ndExtendDefaultPrefValues() { echo("ND: Extending default pref values"); //Limits if($Pref::Server::ND::AdminOnly $= "") $Pref::Server::ND::AdminOnly = false; if($Pref::Server::ND::PaintAdminOnly $= "") $Pref::Server::ND::PaintAdminOnly = false; if($Pref::Server::ND::PaintFxAdminOnly $= "") $Pref::Server::ND::PaintFxAdminOnly = true; if($Pref::Server::ND::WrenchAdminOnly $= "") $Pref::Server::ND::WrenchAdminOnly = true; if($Pref::Server::ND::FloatAdminOnly $= "") $Pref::Server::ND::FloatAdminOnly = true; if($Pref::Server::ND::SaveAdminOnly $= "") $Pref::Server::ND::SaveAdminOnly = true; if($Pref::Server::ND::LoadAdminOnly $= "") $Pref::Server::ND::LoadAdminOnly = false; if($Pref::Server::ND::FillBricksAdminOnly $= "") $Pref::Server::ND::FillBricksAdminOnly = true; //Settings if($Pref::Server::ND::TrustLimit $= "") $Pref::Server::ND::TrustLimit = 2; if($Pref::Server::ND::AdminTrustBypass1 $= "") $Pref::Server::ND::AdminTrustBypass1 = true; if($Pref::Server::ND::AdminTrustBypass2 $= "") $Pref::Server::ND::AdminTrustBypass2 = false; if($Pref::Server::ND::SelectPublicBricks $= "") $Pref::Server::ND::SelectPublicBricks = true; if($Pref::Server::ND::MaxBricksAdmin $= "") $Pref::Server::ND::MaxBricksAdmin = 1000000; if($Pref::Server::ND::MaxBricksPlayer $= "") $Pref::Server::ND::MaxBricksPlayer = 10000; if($Pref::Server::ND::MaxBoxSizeAdmin $= "") $Pref::Server::ND::MaxBoxSizeAdmin = 1024; if($Pref::Server::ND::MaxBoxSizePlayer $= "") $Pref::Server::ND::MaxBoxSizePlayer = 64; if($Pref::Server::ND::SelectTimeoutMS $= "") $Pref::Server::ND::SelectTimeoutMS = 400; if($Pref::Server::ND::PlantTimeoutMS $= "") $Pref::Server::ND::PlantTimeoutMS = 400; //Advanced if($Pref::Server::ND::PlayMenuSounds $= "") $Pref::Server::ND::PlayMenuSounds = true; if($Pref::Server::ND::MaxGhostBricks $= "") $Pref::Server::ND::MaxGhostBricks = 1500; if($Pref::Server::ND::InstantGhostBricks $= "") $Pref::Server::ND::InstantGhostBricks = 150; if($Pref::Server::ND::ScatterGhostBricks $= "") $Pref::Server::ND::ScatterGhostBricks = true; if($Pref::Server::ND::ProcessPerTick $= "") $Pref::Server::ND::ProcessPerTick = 300; if($Pref::Server::ND::BoxSelectChunkDim $= "") $Pref::Server::ND::BoxSelectChunkDim = 6; if($Pref::Server::ND::SymTableOnStart $= "") $Pref::Server::ND::SymTableOnStart = false; //Always set this to false so we don't accidently reset the prefs $ND::RestoreDefaultPrefs = false; } function ndApplyDefaultPrefValues() { echo("ND: Applying default pref values"); messageAll('', "\c6(\c3New Duplicator\c6) \c6Prefs reset to default values."); //Limits $Pref::Server::ND::AdminOnly = false; $Pref::Server::ND::PaintAdminOnly = false; $Pref::Server::ND::PaintFxAdminOnly = true; $Pref::Server::ND::WrenchAdminOnly = true; $Pref::Server::ND::FloatAdminOnly = true; $Pref::Server::ND::SaveAdminOnly = true; $Pref::Server::ND::LoadAdminOnly = false; $Pref::Server::ND::FillBricksAdminOnly = true; //Settings $Pref::Server::ND::TrustLimit = 2; $Pref::Server::ND::AdminTrustBypass1 = true; $Pref::Server::ND::AdminTrustBypass2 = false; $Pref::Server::ND::SelectPublicBricks = true; $Pref::Server::ND::MaxBricksAdmin = 1000000; $Pref::Server::ND::MaxBricksPlayer = 10000; $Pref::Server::ND::MaxBoxSizeAdmin = 1024; $Pref::Server::ND::MaxBoxSizePlayer = 64; $Pref::Server::ND::SelectTimeoutMS = 400; $Pref::Server::ND::PlantTimeoutMS = 400; //Advanced $Pref::Server::ND::PlayMenuSounds = true; $Pref::Server::ND::MaxGhostBricks = 1500; $Pref::Server::ND::InstantGhostBricks = 150; $Pref::Server::ND::ScatterGhostBricks = true; $Pref::Server::ND::ProcessPerTick = 300; $Pref::Server::ND::BoxSelectChunkDim = 6; $Pref::Server::ND::SymTableOnStart = false; //Always set this to false so we don't accidently reset the prefs $ND::RestoreDefaultPrefs = false; } //Erases outdated prefs from the config file function ndDeleteOutdatedPrefs() { //Step 1: Copy all current prefs //Limits %adminOnly = $Pref::Server::ND::AdminOnly; %paintAdminOnly = $Pref::Server::ND::PaintAdminOnly; %paintFxAdminOnly = $Pref::Server::ND::PaintFxAdminOnly; %wrenchAdminOnly = $Pref::Server::ND::WrenchAdminOnly; %floatAdminOnly = $Pref::Server::ND::FloatAdminOnly; %saveAdminOnly = $Pref::Server::ND::SaveAdminOnly; %loadAdminOnly = $Pref::Server::ND::LoadAdminOnly; %fillBricksAdminOnly = $Pref::Server::ND::FillBricksAdminOnly; //Settings %trustLimit = $Pref::Server::ND::TrustLimit; %adminTrustBypass1 = $Pref::Server::ND::AdminTrustBypass1; %adminTrustBypass2 = $Pref::Server::ND::AdminTrustBypass2; %selectPublicBricks = $Pref::Server::ND::SelectPublicBricks; %maxBricksAdmin = $Pref::Server::ND::MaxBricksAdmin; %maxBricksPlayer = $Pref::Server::ND::MaxBricksPlayer; %maxBoxSizeAdmin = $Pref::Server::ND::MaxBoxSizeAdmin; %maxBoxSizePlayer = $Pref::Server::ND::MaxBoxSizePlayer; %selectTimeoutMS = $Pref::Server::ND::SelectTimeoutMS; %plantTimeoutMS = $Pref::Server::ND::PlantTimeoutMS; //Advanced %playMenuSounds = $Pref::Server::ND::PlayMenuSounds; %maxGhostBricks = $Pref::Server::ND::MaxGhostBricks; %instantGhostBricks = $Pref::Server::ND::InstantGhostBricks; %scatterGhostBricks = $Pref::Server::ND::ScatterGhostBricks; %processPerTick = $Pref::Server::ND::ProcessPerTick; %boxSelectChunkDim = $Pref::Server::ND::BoxSelectChunkDim; %symTableOnStart = $Pref::Server::ND::SymTableOnStart; //Step 2: Delete everything deleteVariables("$Pref::Server::ND::*"); //Step 3: Set current prefs again //Limits $Pref::Server::ND::AdminOnly = %adminOnly; $Pref::Server::ND::PaintAdminOnly = %paintAdminOnly; $Pref::Server::ND::PaintFxAdminOnly = %paintFxAdminOnly; $Pref::Server::ND::WrenchAdminOnly = %wrenchAdminOnly; $Pref::Server::ND::FloatAdminOnly = %floatAdminOnly; $Pref::Server::ND::SaveAdminOnly = %saveAdminOnly; $Pref::Server::ND::LoadAdminOnly = %loadAdminOnly; $Pref::Server::ND::FillBricksAdminOnly = %fillBricksAdminOnl; //Settings $Pref::Server::ND::TrustLimit = %trustLimit; $Pref::Server::ND::AdminTrustBypass1 = %adminTrustBypass1; $Pref::Server::ND::AdminTrustBypass2 = %adminTrustBypass2; $Pref::Server::ND::SelectPublicBricks = %selectPublicBricks; $Pref::Server::ND::MaxBricksAdmin = %maxBricksAdmin; $Pref::Server::ND::MaxBricksPlayer = %maxBricksPlayer; $Pref::Server::ND::MaxBoxSizeAdmin = %maxBoxSizeAdmin; $Pref::Server::ND::MaxBoxSizePlayer = %maxBoxSizePlayer; $Pref::Server::ND::SelectTimeoutMS = %selectTimeoutMS; $Pref::Server::ND::PlantTimeoutMS = %plantTimeoutMS; //Advanced $Pref::Server::ND::PlayMenuSounds = %playMenuSounds; $Pref::Server::ND::MaxGhostBricks = %maxGhostBricks; $Pref::Server::ND::InstantGhostBricks = %instantGhostBricks; $Pref::Server::ND::ScatterGhostBricks = %scatterGhostBricks; $Pref::Server::ND::ProcessPerTick = %processPerTick; $Pref::Server::ND::BoxSelectChunkDim = %boxSelectChunkDim; $Pref::Server::ND::SymTableOnStart = %symTableOnStart; }