[Вопрос] Чат
|
|
[CM]James17 |
Дата: Воскресенье, 10.06.2018, 15:40 | Сообщение # 1
|
Новичок
Сообщений: 22
Статус: Offline
|
Добрый день. Вы не раз видели, как работает любой чат: новые смс появляются снизу старых, без каких-либо видимых обновлений чата. Приведу пример:
Код #SingleInstance Force #Include SAMP.ahk Gui, Color, FFFFFF Gui, Font, S15 CDefault, Arial Gui, Add, Edit, x-2 y-3 w750 h440 ReadOnly vGUIChat, Gui, Font, S18 CDefault, Arial Gui, Add, Edit, x6 y470 w580 h30 vGoText, Gui, Add, Button, x596 y447 w130 h40 gSendMessagetoChat, Отправить Gui, Add, Button, x596 y497 w130 h40 gGUIChatClear, Очистить Gui, Show, w748 h545, ChatHelper GuiControl, Focus, GoText ChatLog = %A_MyDocuments%\GTA San Andreas User Files\SAMP\chatlog.txt SetTimer, ChatRefresh, ON return
SendMessagetoChat: Gui, Submit, NoHide if GoText = { return } SendChat(GoText) GuiControl, Text, GoText, return
ChatRefresh: FileRead, chat, %ChatLog% GuiControl, Text, GUIChat, %chat% ControlSend, Edit1, ^{End}, SAMPChatHelper sleep 1000 return
GUIChatClear: FileDelete, %ChatLog% sleep 100 FileAppend,, %Chatlog% return
GuiClose: ExitApp Это простейший пример, чтобы понять, о чем я говорю. Если мы будем таким образом обновлять чат, то придется постоянно листать его вручную вниз, но даже с ControlSend это выглядит просто ужасно. Есть ли какие-либо иные способы обновления чата? Я надеюсь, что доступно объяснил, что мне требуется узнать. Благодарю.
Сообщение отредактировал [CM]James17 - Воскресенье, 10.06.2018, 15:54 |
|
|
|
|
[CM]James17 |
Дата: Вторник, 12.06.2018, 12:53 | Сообщение # 3
|
Новичок
Сообщений: 22
Статус: Offline
|
Цитата Phoenixxx_Czar ( ) Можешь попробовать сделать инверсию всех сообщений, новые вверху, старые внизу и тогда не прийдется так мучаться. Да, тоже была такая мысль. Можно будет хотя бы следить за новыми сообщениями чата. Но опять же, возможно листать чат утеряна. Придется теперь постоянно следить исключительно за новыми сообщениями.
|
|
|
|
Dworkin |
Дата: Вторник, 12.06.2018, 22:18 | Сообщение # 4
|
Боец
Сообщений: 110
Статус: Offline
|
Поищи исходники чатов
|
|
|
|
[CM]James17 |
Дата: Среда, 13.06.2018, 14:50 | Сообщение # 5
|
Новичок
Сообщений: 22
Статус: Offline
|
Цитата Dworkin ( ) Поищи исходники чатов Все, что связано с SAMP`ом - внутриигровые чаты, там ничего примечательного нет, насчет обновления последних сообщений париться не надо. А вот такие, обычные чаты, я не находил.
Цитата Phoenixxx_Czar ( ) Можешь попробовать сделать инверсию всех сообщений, новые вверху, старые внизу и тогда не прийдется так мучаться. Сделал инверсию, все работает замечательно. Спасибо за идею. Работает так: 1. Читаем chatlog.txt 2. Создаем файл с инверсией этих строк. 3. Проверяем первую строчку нашего файла с последней строчкой chatlog.txt, если они не совпадают, то в самое начало нашего файла добавляем эту самую последнюю строчку, которая не совпала. *GUI интерфейс отображает содержимое нашего файла.
Но, если уж придраться, то к тому, что теперь нельзя листать сообщения вниз долго, иначе как только обновится GUI, то снова будет все показываться сверху. В любом случае, это всяко лучше того, что было до этого.
Сообщение отредактировал [CM]James17 - Среда, 13.06.2018, 14:57 |
|
|
|
|
[CM]James17 |
Дата: Среда, 13.06.2018, 17:52 | Сообщение # 7
|
Новичок
Сообщений: 22
Статус: Offline
|
Phoenixxx_Czar, прекрасно. На моменте, где GuiControl, просто стоит добавить проверку на Checkbox, чтобы сам файл с чатом продолжал обновляться, но просто не отображался в GUI-интерфейсе. Спасибо, это отличная идея.
|
|
|
|