добавил Игры, нужно разобраться с передачей команд в игру

This commit is contained in:
PC1\PTyTb
2025-08-18 23:33:38 +03:00
parent fc5a835b1f
commit 318365f63b
16 changed files with 890 additions and 129 deletions
+71 -27
View File
@@ -27,7 +27,7 @@ uses
System.IOUtils, fCommands, uDataBase, FMX.Edit, FMX.Colors, FMX.SpinBox,
windows, System.Skia, FMX.Skia, uCreateChat, uCreateNotify, fOBS, fTTS,
fPlayerWeb, uWebServerKandinsky, FMX.Memo.Types, FMX.ScrollBox, FMX.Memo,
fRevards;
fRevards, json;
type
TTTW_Bot = class(TForm)
@@ -124,6 +124,7 @@ type
procedure ESStatus(Sender: TObject; const ConnectionEvent: String;
StatusCode: Integer; const Description: String);
procedure ESOnSubOk(s: string);
procedure checkAndSendToGames(aNick: string; aCommand: string);
public
{ Public declarations }
procedure toLog(aModule, aMethod, aMessage: string; aCode: Integer);
@@ -432,6 +433,27 @@ begin
db.WriteSetting('cbTheme', inttostr(cbTheme.ItemIndex));
end;
procedure TTTW_Bot.checkAndSendToGames(aNick: string; aCommand: string);
var
I: Integer;
j: Integer;
begin
for I := 0 to frOBS1.GameWebServers.Count - 1 do
begin
for j := 0 to frOBS1.GameWebServers[I].commands.Count - 1 do
begin
if frOBS1.GameWebServers[I].commands[j] = aCommand then
begin
var
obj := TJSONObject.Create;
obj.AddPair('user', aNick);
obj.AddPair('cmd', aCommand);
frOBS1.GameWebServers[I].WebServerGame.Input(obj);
end;
end;
end;
end;
procedure TTTW_Bot.FormCreate(Sender: TObject);
var
Path: string;
@@ -515,12 +537,13 @@ end;
procedure TTTW_Bot.FormDestroy(Sender: TObject);
begin
FreeAndNil(frOBS1.ChatBadges);
FreeAndNil(frOBS1.ChatBadges);
FreeAndNil(frOBS1.ChatEmotes);
FreeAndNil(frOBS1.ChatWebServers);
FreeAndNil(frOBS1.EventWebServers);
FreeAndNil(frOBS1.KandinskyWebServers);
FreeAndNil(frRevards1.CustomRewards);
FreeAndNil(frOBS1.EventWebServers);
FreeAndNil(frOBS1.KandinskyWebServers);
FreeAndNil(frOBS1.GameWebServers);
FreeAndNil(frRevards1.CustomRewards);
frOBS1.BTTV.Free;
frOBS1.m7tv.Free;
@@ -533,7 +556,7 @@ FreeAndNil(frRevards1.CustomRewards);
FreeAndNil(ttw_API);
if Assigned(Kandinsky) then
Kandinsky.Free;
//frSettings1.Destroy;
// frSettings1.Destroy;
FreeAndNil(db);
FreeAndNil(frAutoActions1.FTimerList);
FreeAndNil(frLog1.FLogList);
@@ -577,14 +600,14 @@ var
frAutoActions1.UpdateGridFromArray;
end;
function StringToArray(const input: string): TArray<string>;
function StringToArray(const Input: string): TArray<string>;
var
Delimiter: char;
Words: TArray<string>;
I: Integer;
begin
Delimiter := ',';
Words := input.Split([Delimiter]);
Words := Input.Split([Delimiter]);
SetLength(Result, Length(Words));
for I := 0 to High(Words) do
Result[I] := Words[I].Trim;
@@ -725,8 +748,9 @@ begin
UpdateWordCounters(processedText);
CheckBannedWords(processedText, aRecord.DisplayName, aRecord.UserId);
if (frCommands1.frContruct1.cbTextToSpeach.IsChecked) and (processedText[1] = '!') and
(processedText[2] = '!') and (processedText[3] = '!') then
if (frCommands1.frContruct1.cbTextToSpeach.IsChecked) and
(processedText[1] = '!') and (processedText[2] = '!') and
(processedText[3] = '!') then
begin
s := StringReplace(processedText, '!!!', '', [rfReplaceAll]);
s := Trim(s);
@@ -734,7 +758,8 @@ begin
exit;
end;
if (frCommands1.frContruct1.cbHelloTTS.IsChecked) and (aRecord.FirstMsg = 1) then
if (frCommands1.frContruct1.cbHelloTTS.IsChecked) and (aRecord.FirstMsg = 1)
then
toSpeech('приветствую, ' + IfThen(aRecord.DisplayName <> '',
aRecord.DisplayName, aRecord.Username));
@@ -752,6 +777,8 @@ begin
end);
PlayNotifySound((aRecord.Moder = 1), (aRecord.Vip = 1),
(aRecord.Subscriber = 1));
processedText := StringReplace(processedText, '!', '', [rfReplaceAll]);
checkAndSendToGames(aRecord.DisplayName, processedText);
end;
procedure TTTW_Bot.PlayNotifySound(aMod, aVip, aSub: Boolean);
@@ -806,30 +833,36 @@ begin
end;
procedure TTTW_Bot.frAutoActions1btnCounterAddClick(Sender: TObject);
var i:integer;
var
I: Integer;
begin
frAutoActions1.btnCounterAddClick(Sender);
frCommands1.frContruct1.cbCounterName.Items.Clear;
for i:=0 to high(frAutoActions1.listCounters) do
frCommands1.frContruct1.cbCounterName.Items.Add(frAutoActions1.listCounters[i].counterName);
for I := 0 to high(frAutoActions1.listCounters) do
frCommands1.frContruct1.cbCounterName.Items.Add
(frAutoActions1.listCounters[I].counterName);
end;
procedure TTTW_Bot.frAutoActions1btnCounterDeleteClick(Sender: TObject);
var i:integer;
var
I: Integer;
begin
frAutoActions1.btnCounterDeleteClick(Sender);
frCommands1.frContruct1.cbCounterName.Items.Clear;
for i:=0 to high(frAutoActions1.listCounters) do
frCommands1.frContruct1.cbCounterName.Items.Add(frAutoActions1.listCounters[i].counterName);
frCommands1.frContruct1.cbCounterName.Items.Clear;
for I := 0 to high(frAutoActions1.listCounters) do
frCommands1.frContruct1.cbCounterName.Items.Add
(frAutoActions1.listCounters[I].counterName);
end;
procedure TTTW_Bot.frAutoActions1btnCounterEditClick(Sender: TObject);
var i:integer;
var
I: Integer;
begin
frAutoActions1.btnCounterEditClick(Sender);
frCommands1.frContruct1.cbCounterName.Items.Clear;
for i:=0 to high(frAutoActions1.listCounters) do
frCommands1.frContruct1.cbCounterName.Items.Add(frAutoActions1.listCounters[i].counterName);
frCommands1.frContruct1.cbCounterName.Items.Clear;
for I := 0 to high(frAutoActions1.listCounters) do
frCommands1.frContruct1.cbCounterName.Items.Add
(frAutoActions1.listCounters[I].counterName);
end;
procedure TTTW_Bot.frCommands1btnRandAddClick(Sender: TObject);
@@ -1094,15 +1127,19 @@ procedure TTTW_Bot.ReadDB;
// Загрузка гридов автоматических действий
procedure LoadAutoActionsGrids;
var i:integer;
var
I: Integer;
begin
db.LoadRecordArray<TListTimer>('listTimer', frAutoActions1.listTimer);
db.LoadRecordArray<TBanWord>('listBanWords', frAutoActions1.listBanWords);
db.LoadRecordArray<TCounter>('listCounters', frAutoActions1.listCounters);
for I := 0 to High(frAutoActions1.listCounters) do
frCommands1.frContruct1.cbCounterName.items.Add(frAutoActions1.listCounters[i].counterName);
frCommands1.frContruct1.cbTextToSpeach.IsChecked:=db.ReadSetting('cbTextToSpeach', 'False') = 'True';
frCommands1.frContruct1.cbHelloTTS.IsChecked:= db.ReadSetting('cbHelloTTS', 'False') = 'True';
for I := 0 to High(frAutoActions1.listCounters) do
frCommands1.frContruct1.cbCounterName.Items.Add
(frAutoActions1.listCounters[I].counterName);
frCommands1.frContruct1.cbTextToSpeach.IsChecked :=
db.ReadSetting('cbTextToSpeach', 'False') = 'True';
frCommands1.frContruct1.cbHelloTTS.IsChecked :=
db.ReadSetting('cbHelloTTS', 'False') = 'True';
frAutoActions1.initTimers;
frAutoActions1.UpdateGridFromArray;
end;
@@ -1143,6 +1180,13 @@ var i:integer;
end;
db.LoadRecordArray<TOBSGames>('listGames', frOBS1.listGames);
frOBS1.GameWebServers := TList<TGameWebServers>.Create;
for I := 0 to High(frOBS1.listGames) do
begin
frOBS1.CreateWebGame(frOBS1.listGames[I].game, frOBS1.listGames[I].port);
end;
frOBS1.UpdateGridFromArray;
end;