AddToSystemJournal
Writes a message to the Stealth system journal (the “System” tab in the main Stealth window).
Supports the \n escape sequence (linebreak) for line breaks within the message.
The behavior differs significantly between script engines:
PascalScript: Accepts a single String parameter. To log non-string values, convert them to string manually.
DWScript: Accepts any number of parameters of any type. The compiler automatically converts all parameters to a single string. This means you can pass records, objects, arrays, enums, sets, and any other types directly — DWS will stringify them. This is extremely convenient for debugging.
Python: Accepts a single string parameter.
For formatted output with custom colors, font size, and font name, use AddToSystemJournalEx.
Записывает сообщение в системный журнал Stealth (вкладка «System» в главном окне Stealth).
Поддерживает escape-последовательность \n (linebreak) для переноса строки.
Поведение различается в зависимости от скриптового движка:
PascalScript: Принимает единственный параметр типа String. Для вывода нестроковых значений нужно вручную преобразовывать их в строку.
DWScript: Принимает любое количество параметров любого типа. Компилятор автоматически преобразует все параметры в одну строку. Можно передавать записи, объекты, массивы, перечисления, множества и прочие типы напрямую — DWS выполнит их строковое представление. Очень удобно для отладки.
Python: Принимает единственный параметр типа ‘string`.
Для форматированного вывода с настройкой цвета, размера и шрифта используйте AddToSystemJournalEx.
procedure AddToSystemJournal(Text: String);
procedure AddToSystemJournal(Param1: AnyType; [..ParamN]);
def AddToSystemJournal(Text: str) -> None: ...
PascalScript — simple string output:
begin
AddToSystemJournal('Script started');
AddToSystemJournal('Current HP: ' + IntToStr(HP));
end.
DWScript — auto-stringify any types:
type
TMyRecord = record
Name: String;
Value: Integer;
end;
var
kk: TStringList;
rec: TMyRecord;
begin
// Stringify a TStringList
kk := TStringList.Create;
kk.Add('Test1');
kk.Add('Test2');
AddToSystemJournal('List = ', kk);
kk.Free;
// Stringify a record
rec.Name := 'Iron Ingot';
rec.Value := 42;
AddToSystemJournal(rec);
// Stringify a Stealth record directly
AddToSystemJournal(StealthInfo);
// Stringify an array of records from a method
AddToSystemJournal(GetMenuItems('Equipment'));
// Multiple params of mixed types
AddToSystemJournal('HP = ', HP, ' / ', MaxHP);
end.
DWScript vs PascalScript comparison:
var
i: Integer;
TL: TStringList;
begin
{$IFDEF DWSCRIPT}
// DWS: pass array directly, auto-stringified
AddToSystemJournal(GlobalChatChannelsList);
{$ELSE}
// PascalScript: must iterate manually
TL := TStringList.Create;
GlobalChatChannelsList(TL);
if TL.Count > 0 then
for i := 0 to TL.Count - 1 do
AddToSystemJournal(TL[i]);
TL.Free;
{$ENDIF}
end.
AddToSystemJournal('Script started')
AddToSystemJournal(f'Current HP: {HP()} / {MaxHP()}')