Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ' Save File System Inline-Function for VoiceAttack - Load Any/All Variables from File/List to Profile
- ' by SemlerPDX Mar2020
- ' VETERANS-GAMING.COM
- ' --Loads Variables from Text List Format into VA Variables of Appropriate Data Type (INT/DEC/TXT/BOOL)--
- ' **note: format for ALL variable names saved to file must start with same 4 character prefix i.e. AVCS_MyVar1, AVCS_MyVar2**
- ' ((below is example from VA command action list prior to calling this inline:))
- '---------------------------------------------------------------------------------------------
- '// Set variable to text contents of save file or text variable (list) depending on parameter(s) used
- 'Begin Boolean Compare : [AVCS_SFS_LOAD_list] Equals False
- ' Set text [~save_file] to [{TXT:AVCS_SFS_SaveFilePath}] (Trim)
- 'Else
- ' Set text [~save_file] to [AVCS_SFS_LOAD_contents] (Trim)
- 'End Condition
- '//
- 'Begin Text Compare : [~save_file] Does Not Contain '{NEWLINE}'
- ' Set text [~save_file] to [~save_file] (Replace '{SPACE}{TXTSUBSTR:~save_file:0:4}' with '(/n){TXTSUBSTR:~save_file:0:4}')
- 'End Condition
- '---------------------------------------------------------------------------------------------
- Imports Microsoft.VisualBasic
- Imports System
- Imports System.Collections
- Imports System.Collections.Generic
- Imports System.Data
- Imports System.Drawing
- Imports System.Diagnostics
- Imports System.Windows.Forms
- Imports System.Linq
- Imports System.Xml.Linq
- Imports System.Threading.Tasks
- Public Class VAInline
- dim clearVariable as boolean
- dim saveVariable as boolean
- dim variableIndex as integer
- dim countD as integer
- dim countC as integer
- dim contents() as string
- dim entry() as string
- Public Sub Main()
- if VA.GetText("~save_file") IsNot nothing
- 'Check and Set Clear/Save Parameter Variables
- if VA.GetBoolean("AVCS_SFS_LOAD_clear") IsNot nothing
- clearVariable = VA.GetBoolean("AVCS_SFS_LOAD_clear")
- end if
- if VA.GetBoolean("AVCS_SFS_LOAD_save") IsNot nothing
- saveVariable = VA.GetBoolean("AVCS_SFS_LOAD_save")
- end if
- 'Split contents of save file into single lines separated by the newline or (/n)
- if VA.GetText("~save_file").Contains(vbNewLine)
- contents = VA.GetText("~save_file").Split(new string() {Environment.NewLine},StringSplitOptions.None)
- else
- contents = VA.GetText("~save_file").Split(new string() {"(/n)"},StringSplitOptions.None)
- end if
- 'In each line, isolate Var Name/Val via '=' and Eval entry value for data type
- for each line as string in contents
- entry = line.Split("=")
- if(entry(1).Contains ("."))
- countD = entry(1).Split(".").Length -1
- else
- countD = 0
- end if
- if(entry(1).Contains (","))
- countC = entry(1).Split(",").Length -1
- else
- countC = 0
- end if
- 'Use Comma and Decimal Count to check data type for casting as Int or Dec
- if((IsNumeric(entry(1))) and (((countD = 1) and (countC = 0)) or ((countD = 0) and (countC = 1)) or ((countD = 0) and (countC = 0))))
- if(entry(1).Contains (".") or entry(1).Contains (","))
- ' Attempt to Handle International Decimal Separator
- if(entry(1).Contains (","))
- entry(1) = Replace(entry(1), ",", ".")
- end if
- ' Entry is a DECIMAL Type
- if((clearVariable) and (saveVariable))
- ' Prepare Decimal Var for SaveToProfile command, clearing from Profile completely
- variableIndex = variableIndex + 1
- VA.SetText("~~varType" + variableIndex.ToString(), "DEC")
- VA.SetText("~~varName" + variableIndex.ToString(), entry(0))
- elseif(saveVariable)
- ' Prepare Decimal Var for SaveToProfile command
- variableIndex = variableIndex + 1
- VA.SetText("~~varType" + variableIndex.ToString(), "DEC")
- VA.SetText("~~varName" + variableIndex.ToString(), entry(0))
- VA.SetText("~~varValue" + variableIndex.ToString(), entry(1))
- elseif(clearVariable)
- ' Clear Decimal Var directly from Profile
- VA.SetDecimal(entry(0), nothing)
- else
- ' Load Decimal Var directly to Profile
- VA.SetDecimal(entry(0), entry(1))
- end if
- else
- ' Entry is an INTEGER Type
- if((clearVariable) and (saveVariable))
- ' Prepare Integer Var for SaveToProfile command, clearing from Profile completely
- variableIndex = variableIndex + 1
- VA.SetText("~~varType" + variableIndex.ToString(), "INT")
- VA.SetText("~~varName" + variableIndex.ToString(), entry(0))
- elseif(saveVariable)
- ' Prepare Integer Var for SaveToProfile command
- variableIndex = variableIndex + 1
- VA.SetText("~~varType" + variableIndex.ToString(), "INT")
- VA.SetText("~~varName" + variableIndex.ToString(), entry(0))
- VA.SetText("~~varValue" + variableIndex.ToString(), entry(1))
- elseif(clearVariable)
- ' Clear Integer Var directly from Profile
- VA.SetInt(entry(0), nothing)
- else
- ' Load Integer Var directly to Profile
- VA.SetInt(entry(0), entry(1))
- end if
- end if
- 'if entry(1) is NOT Numeric--------------------------
- elseif((LCase (entry(1)) = "true") or (LCase (entry(1)) = "false"))
- ' Entry is a BOOLEAN Type
- if((clearVariable) and (saveVariable))
- ' Prepare Boolean Var for SaveToProfile command, clearing from Profile completely
- variableIndex = variableIndex + 1
- VA.SetText("~~varType" + variableIndex.ToString(), "BOOL")
- VA.SetText("~~varName" + variableIndex.ToString(), entry(0))
- elseif(saveVariable)
- ' Prepare Boolean Var for SaveToProfile command
- variableIndex = variableIndex + 1
- VA.SetText("~~varType" + variableIndex.ToString(), "BOOL")
- VA.SetText("~~varName" + variableIndex.ToString(), entry(0))
- VA.SetText("~~varValue" + variableIndex.ToString(), entry(1))
- elseif(clearVariable)
- ' Clear Boolean Var directly from Profile
- VA.SetBoolean(entry(0), nothing)
- else
- ' Load Boolean Var directly to Profile
- VA.SetBoolean(entry(0), entry(1))
- end if
- else
- ' Entry is a TEXT Type
- if((clearVariable) and (saveVariable))
- ' Prepare Text Var for SaveToProfile command, clearing from Profile completely
- variableIndex = variableIndex + 1
- VA.SetText("~~varType" + variableIndex.ToString(), "TXT")
- VA.SetText("~~varName" + variableIndex.ToString(), entry(0))
- elseif(saveVariable)
- ' Prepare Text Var for SaveToProfile command
- variableIndex = variableIndex + 1
- VA.SetText("~~varType" + variableIndex.ToString(), "TXT")
- VA.SetText("~~varName" + variableIndex.ToString(), entry(0))
- VA.SetText("~~varValue" + variableIndex.ToString(), entry(1))
- elseif(clearVariable)
- ' Clear Text Var directly from Profile
- VA.SetText(entry(0), nothing)
- else
- ' Load Text Var directly to Profile
- VA.SetText(entry(0), entry(1))
- end if
- end if
- next 'loop around to the next entry value
- if(variableIndex > 0)
- ' Set Max Count of Vars prepared for SaveToProfile command func, execute as sub-command, wait for completion
- VA.SetInt("~~varIndex", variableIndex.ToString())
- vaProxy.Command.Execute ("f_sfs_to_profile", true, true)
- end if
- end if
- End Sub
- End Class
- ' -- end of inline function --
- ' ((below is example from VA command action list for the 'f_sfs_to_profile' command executed at end of inline:))
- '---------------------------------------------------------------------------------------------
- '
- 'Start Loop : Repeat From 1 to [~~varIndex]
- 'Set text [~type] to '{TXT:~~varType{INT:~i}}'
- 'Begin Text Compare : [~type] Equals 'BOOL'
- 'Begin Boolean Compare : [AVCS_SFS_LOAD_clear] Equals True
- 'Set Boolean [{TXT:~~varName{INT:~i}}] to [Not Set] (save value to profile)
- 'Else
- 'Convert text [~~varValue{INT:~i}] to true/false (boolean) [{TXT:~~varName{INT:~i}}]
- 'Set Boolean [{TXT:~~varName{INT:~i}}] to [{TXT:~~varName{INT:~i}}] (save value to profile)
- 'End Condition
- 'Else If Text Compare : [~type] Equals 'TXT'
- 'Begin Boolean Compare : [AVCS_SFS_LOAD_clear] Equals True
- 'Set text [{TXT:~~varName{INT:~i}}] to [Not Set] (save value to profile)
- 'Else
- 'Set text [{TXT:~~varName{INT:~i}}] to '{TXT:~~varValue{INT:~i}}' (save value to profile)
- 'End Condition
- 'Else If Text Compare : [~type] Equals 'DEC'
- 'Begin Boolean Compare : [AVCS_SFS_LOAD_clear] Equals True
- 'Set decimal [{TXT:~~varName{INT:~i}}] value to [Not Set] (save value to profile)
- 'Else
- 'Set decimal [{TXT:~~varName{INT:~i}}] value to the converted value of {TXT:~~varValue{INT:~i}} (save value to profile)
- 'End Condition
- 'Else If Text Compare : [~type] Equals 'INT'
- 'Begin Boolean Compare : [AVCS_SFS_LOAD_clear] Equals True
- 'Set integer [{TXT:~~varName{INT:~i}}] value to [Not Set] (save value to profile)
- 'Else
- 'Set integer [{TXT:~~varName{INT:~i}}] value to the converted value of {TXT:~~varValue{INT:~i}} (save value to profile)
- 'End Condition
- 'End Condition
- 'End Loop
- '//
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement