Advertisement
pragasette

_p7_Replace_MOD_prefix_in_ARMA.pas

Jan 28th, 2020
620
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 2.83 KB | None | 0 0
  1. {
  2.   Replace world model filename prefix in ARMA records.
  3. }
  4. unit _p7_Replace_MOD_prefix_in_ARMA;
  5.  
  6. interface
  7.  
  8. {
  9. // Uncomment this block to enable linting, requires xEdit >= 4.0.3
  10. uses
  11.   System.Classes,   // TStringList
  12.   System.SysUtils,  // StringReplace, rfIgnoreCase
  13.   xEditAPI;
  14.  
  15. procedure SetupList(list: TStringList; text: string);
  16. }
  17.  
  18. const
  19.   ORIGINAL_MALE_PATHS =
  20.     'Armor\Imperial\M\'
  21.     + ';Armor\Khajiit\tom\'
  22.     + ';Armor\Nord\';
  23.  
  24.   ORIGINAL_FEMALE_PATHS =
  25.     'Armor\Imperial\F\'
  26.     + ';Armor\Khajiit\pussy\'
  27.     + ';Armor\Nord\';
  28.  
  29.   CUSTOM_MALE_PATHS =
  30.     'CustomRaces\Imperial\Male\armor\'
  31.     + ';CustomRaces\Khajiit\Male\armor\'
  32.     + ';CustomRaces\Nord\Male\armor\';
  33.  
  34.   CUSTOM_FEMALE_PATHS =
  35.     'CustomRaces\Imperial\Female\armor\'
  36.     + ';CustomRaces\Khajiit\Female\armor\'
  37.     + ';CustomRaces\Nord\Female\armor\';
  38.  
  39.   MALE_MOD = 'Male world model\MOD2';
  40.   FEMALE_MOD = 'Female world model\MOD3';
  41.  
  42. implementation
  43.  
  44. var
  45.   origMalePaths, origFemalePaths, custMalePaths, custFemalePaths: TStringList;
  46.  
  47. function Initialize: integer;
  48. begin
  49.   Result := 0;
  50.  
  51.   origMalePaths := TStringList.Create;
  52.   origFemalePaths := TStringList.Create;
  53.   custMalePaths := TStringList.Create;
  54.   custFemalePaths := TStringList.Create;
  55.  
  56.   SetupList(origMalePaths, ORIGINAL_MALE_PATHS);
  57.   SetupList(origFemalePaths, ORIGINAL_FEMALE_PATHS);
  58.   SetupList(custMalePaths, CUSTOM_MALE_PATHS);
  59.   SetupList(custFemalePaths, CUSTOM_FEMALE_PATHS);
  60. end;
  61.  
  62. function Process(e: IInterface): integer;
  63. var
  64.   i: integer;
  65.   maleMod, femaleMod, newMod: string;
  66. begin
  67.   Result := 0;
  68.  
  69.   maleMod := GetElementEditValues(e, MALE_MOD);
  70.  
  71.   for i := 0 to Pred(origMalePaths.Count) do begin
  72.     //AddMessage(Format('DEBUG: Pos(\'%s\', \'%s\') == %i', [origMalePaths[i], maleMod, Pos(origMalePaths[i], maleMod)]));
  73.  
  74.     if Pos(origMalePaths[i], maleMod) = 1 then begin
  75.       newMod := StringReplace(maleMod, origMalePaths[i], custMalePaths[i], [rfIgnoreCase]);
  76.       SetElementEditValues(e, MALE_MOD, newMod);
  77.       break;
  78.     end;
  79.   end;
  80.  
  81.   femaleMod := GetElementEditValues(e, FEMALE_MOD);
  82.  
  83.   for i := 0 to Pred(origFemalePaths.Count) do begin
  84.     //AddMessage(Format('DEBUG: Pos(\'%s\', \'%s\') == %i', [origFemalePaths[i], femaleMod, Pos(origFemalePaths[i], femaleMod)]));
  85.  
  86.     if Pos(origFemalePaths[i], femaleMod) = 1 then begin
  87.       newMod := StringReplace(femaleMod, origFemalePaths[i], custFemalePaths[i], [rfIgnoreCase]);
  88.       SetElementEditValues(e, FEMALE_MOD, newMod);
  89.       break;
  90.     end;
  91.   end;
  92. end;
  93.  
  94. function Finalize: integer;
  95. begin
  96.   Result := 0;
  97.  
  98.   origMalePaths.Free;
  99.   origFemalePaths.Free;
  100.   custMalePaths.Free;
  101.   custFemalePaths.Free;
  102. end;
  103.  
  104. procedure SetupList(list: TStringList; text: string);
  105. begin
  106.   list.Delimiter := ';';
  107.   list.StrictDelimiter := True;
  108.   list.DelimitedText := text;
  109. end;
  110.  
  111. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement