Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- procedure TfrmMain.wsClientRconMessage(Connection: TsgcWSConnection; const Text: string);
- var
- jdata, jchat, jplayers, jplayer: TdJSON;
- LItem: TListViewItem;
- I: Integer;
- begin
- lvConsole.BeginUpdate;
- if not Text.IsEmpty then
- begin
- jdata := TdJSON.Parse(Text);
- try
- if jdata['Identifier'].AsInteger = 10 then
- begin
- lvPlayers.BeginUpdate;
- lvPlayers.Items.Clear;
- lvPlayers.EndUpdate;
- jplayers := TdJSON.Parse(jdata['Message'].AsString);
- try
- I := 0;
- for jplayer in jplayers do
- begin
- Inc(I);
- end;
- SetLength(Players, I);
- I := 0;
- for jplayer in jplayers do
- begin
- Players[I].SteamID := jplayer['SteamID'].AsString;
- Players[I].OwnerSteamID := jplayer['OwnerSteamID'].AsString;
- Players[I].DisplayName := jplayer['DisplayName'].AsString;
- Players[I].Ping := jplayer['Ping'].AsInteger;
- Players[I].Address := jplayer['Address'].AsString;
- Players[I].ConnectedSeconds := jplayer['ConnectedSeconds'].AsInteger;
- Players[I].VoiationLevel := jplayer['VoiationLevel'].AsString;
- Players[I].CurrentLevel := jplayer['CurrentLevel'].AsString;
- Players[I].UnspentXP := jplayer['UnspentXp'].AsString;
- Players[I].Health := jplayer['Health'].AsString;
- LItem := lvPlayers.Items.Add;
- LItem.Text := Players[I].DisplayName + ' (' + Players[I].SteamID + ')';
- LItem.Data[TMultiDetailAppearanceNames.Detail1] := 'IP: ' + Players[I].Address;
- LItem.Data[TMultiDetailAppearanceNames.Detail2] := 'Ping: ' + Players[I].Ping.ToString + 'ms';
- LItem.Data[TMultiDetailAppearanceNames.Detail3] := 'Connected for ' + SecsToTimeStr(Players[I].ConnectedSeconds, True);
- Inc(I);
- end;
- finally
- jplayers.Free;
- end;
- tbtmPlayers.Text := 'Players [' + PlayerManager.GetPlayerCount.ToString + ']';
- end
- else if jdata['Identifier'].AsInteger = 11 then
- begin
- lvBans.BeginUpdate;
- lvBans.Items.Clear;
- lvBans.EndUpdate;
- jplayers := TdJSON.Parse(jdata['Message'].AsString);
- try
- for jplayer in jplayers do
- begin
- LItem := lvBans.Items.Add;
- LItem.Text := jplayer['username'].AsString;
- LItem.Data[TMultiDetailAppearanceNames.Detail1] := 'SteamID: ' + jplayer['steamid'].AsString;
- LItem.Data[TMultiDetailAppearanceNames.Detail2] := 'Group: ' + jplayer['group'].AsString;
- LItem.Data[TMultiDetailAppearanceNames.Detail3] := 'Notes: ' + jplayer['notes'].AsString;
- end;
- finally
- jplayers.Free;
- end;
- tbtmBans.Text := 'Bans: [' + lvBans.Items.Count.ToString + ']';
- end
- else
- begin
- if jdata['Type'].AsString <> 'Chat' then
- begin
- if not jdata['Message'].AsString.Trim.IsEmpty then
- begin
- LItem := lvConsole.Items.Add;
- LItem.Text := '[' + DateTimeToStr(Now) + '] ' + jdata['Message'].AsString;
- lvConsole.ItemIndex := LItem.Index;
- end;
- tbtmAll.Text := 'All [' + lvConsole.Items.Count.ToString + ']';
- end;
- if jdata['Type'].AsString = 'Chat' then
- begin
- jchat := TdJSON.Parse(jdata['Message'].AsString);
- try
- LItem := lvRconChat.Items.Add;
- LItem.Text := '[' + DateTimeToStr(Now) + '] ' + jchat['Username'].AsString + ': ' + jchat['Message'].AsString;
- lvRconChat.ItemIndex := LItem.Index;
- // Chat Monitor
- if switchEnableChatMonitor.IsChecked then
- begin
- for I := 0 to lvListeningWords.Items.Count - 1 do
- begin
- if chkChatMonitorCaseSensitive.IsChecked then
- begin
- if AnsiContainsStr(UpperCase(jchat['Message'].AsString), UpperCase(lvListeningWords.Items[I].Text)) then
- begin
- LItem := lvChatMonitor.Items.Add;
- LItem.Text := jchat['Username'].AsString;
- LItem.Data[TMultiDetailAppearanceNames.Detail1] := 'SteamID: ' + Players[PlayerManager.IndexOfDisplayName(jchat['Username'].AsString)].SteamID;
- LItem.Data[TMultiDetailAppearanceNames.Detail2] := 'Time: ' + DateTimeToStr(Now);
- LItem.Data[TMultiDetailAppearanceNames.Detail3] := jchat['Message'].AsString;
- end;
- end;
- end;
- end;
- finally
- jchat.Free;
- end;
- tbtmChat.Text := 'Chat [' + lvRconChat.Items.Count.ToString + ']';
- end;
- end;
- finally
- jdata.Free;
- end;
- end;
- lvConsole.EndUpdate;
- end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement