Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- {
- Export armor stats from *.csv files.
- Right click and apply script to selected armors, armor group,
- plugin or several selected plugins.
- }
- unit UserScript;
- var
- slArmo, slValues, slLookup: TStringList;
- function Initialize: integer;
- var
- i: integer;
- dlgOpen: TOpenDialog;
- begin
- Result := 0;
- // strings list with weapons data
- slArmo := TStringList.Create;
- // list used to divide imported values
- slValues := TStringList.Create;
- slValues.Delimiter := ';';
- slValues.StrictDelimiter := true; // don't treat space as a delimiter
- // lookup list to find formids when importing
- slLookup := TStringList.Create;
- // Export: add columns headers line
- slArmo.Add('FormID;Name;Value;Weight;AR');
- end;
- function Process(e: IInterface): integer;
- var
- i: integer;
- begin
- Result := 0;
- // process only weapons, skip other records
- if Signature(e) <> 'ARMO' then
- Exit;
- // use square brackets [] on formid to prevent Excel from treating them as a numbers
- slArmo.Add(Format('[%s];%s;%s;%s;%s', [
- // FixedFormID depends only on explicit masters and not affected by plugin's load order
- IntToHex(FixedFormID(e), 8),
- GetElementEditValues(e, 'FULL - Name'),
- GetElementEditValues(e, 'DATA\Value'),
- GetElementEditValues(e, 'DATA\Weight'),
- GetElementEditValues(e, 'DNAM - Armor Rating')
- ]));
- end;
- function Finalize: integer;
- var
- dlgSave: TSaveDialog;
- begin
- Result := 0;
- if not Assigned(slArmo) then
- Exit;
- // save export file only if we have any data besides header line
- if (slArmo.Count > 1) then begin
- // ask for file to export to
- dlgSave := TSaveDialog.Create(nil);
- dlgSave.Options := dlgSave.Options + [ofOverwritePrompt];
- dlgSave.Filter := 'Spreadsheet files (*.csv)|*.csv';
- dlgSave.InitialDir := ProgramPath;
- dlgSave.FileName := 'weapons.csv';
- if dlgSave.Execute then
- slArmo.SaveToFile(dlgSave.FileName);
- dlgSave.Free;
- end;
- slArmo.Free;
- slValues.Free;
- slLookup.Free;
- end;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement