|
Вопросы по чату - Общение разработчиков - Программирование для Perfect World, общение и обсуждене разработок |
27.02.2017, 11:06
|
#1
|
|
|
|
Разведчик
|
Регистрация: 11.10.2010
Сообщений: 13
Популярность: 10
Сказал(а) спасибо: 3
Поблагодарили 5 раз(а) в 5 сообщениях
|
Вопросы по чату
Привет, ребята!
Недавно начал изучать чат в пв и столкнулся с некоторыми вопросами.
Написал вот такой класс-шаблон для работы с чатом:
Код:
class ChatReader
{
IntPtr handle;
int ChNold;
List<Message> messages;
int ChatStart = 0x00F06768;
int ChatNumber = 0x00F06774;
public ChatReader(IntPtr handle)
{
this.handle = handle;
messages = new List<Message>();
}
public void ReadChat()
{
int processID;
//получаем id процесса по хендлу
WinApi.GetWindowThreadProcessId(handle, out processID);
//запускаем процесс и получаем его дескриптор
IntPtr oph = WinApi.OpenProcess(WinApi.ProcessAccessFlags.All, false, processID);
//начало чата
int ChS = CalcMethods.CalcInt32Value(oph, ChatStart);
//количество сообщений в памяти клиента
int ChN = CalcMethods.CalcInt32Value(oph, ChatNumber);
for (int i = 0; i< ChN; i++)
{
//id сообщения
int messageID = CalcMethods.CalcInt32Value(oph, (ChS + (i * 0x24)) + 0x14);
//тип сообщения
int messageType = CalcMethods.CalcInt32Value(oph, (ChS + (i * 0x24)) + 0x4);
//первая форма сообщения
int message_1_address = CalcMethods.CalcInt32Value(oph, (ChS + (i * 0x24)) + 0xc);
string message_1 = CalcMethods.CalcStringValue(oph, message_1_address);
//вторая форма сообщения
int message_2_address = CalcMethods.CalcInt32Value(oph, (ChS + (i * 0x24)) + 0x8);
string message_2 = CalcMethods.CalcStringValue(oph, message_2_address);
if (messageID > ChNold)
{
//если сообщение новое, то добавляем в коллекцию и выводим инфу в лог
messages.Add(new Message(i, messageType, messageID, message_1, message_2));
CalcMethods.Logging("++++++++++++++");
CalcMethods.Logging(messageType.ToString());
CalcMethods.Logging(messageID.ToString());
CalcMethods.Logging(message_1);
CalcMethods.Logging(message_2);
ChNold = messageID;
}
}
WinApi.CloseHandle(oph);
}
}
Так вот, как я понял, messageType обычно 1 - мирчат, 2 - группчат, 3 - кч и т.д.
Но у меня помимо этих типов может считаться что-то типа 11468801 (это в int). И у сообщений одного типа могут быть разные messageType. В чем проблема, подскажите, пожалуйста? Или может это норма и сообщения все по-другому сортируют?
И есть еще один глупый вопрос: можно ли по чату узнать wid персонажа, отправившего сообщение?
|
|
|
28.02.2017, 16:18
|
#2
|
|
|
|
Разведчик
|
Регистрация: 14.07.2009
Сообщений: 11
Популярность: 306
Сказал(а) спасибо: 0
Поблагодарили 11 раз(а) в 6 сообщениях
|
Re: Вопросы по чату
Если перейти по адресу ChatStruct, то там хранится до 200 дескрипторов сообщений. Каждый дескриптор имеет следующую структуру:
Код:
ChatStruct=record
uk1 : DWORD;
TypeChat : Byte;
SmileSet : Byte;
uk2 : Byte;
uk3 : Byte;
Addr : DWORD;
uk4 : DWORD;
ItemID : DWORD;
ID : DWORD;
uk5 : DWORD;
uk6 : DWORD;
WID : DWORD;
end;
По адресу Addr находится само сообщение + различная информация о типе сообщения, наличие смайлов, нике и другая.
WID же можно взять сразу из дескриптора, если тебе нужно выделить сообщения того персонажа, к которому подключен бот, то его WID всегда равен 0xFFFFFFFF
|
|
|
28.02.2017, 19:29
|
#3
|
|
|
|
Разведчик
|
Регистрация: 11.10.2010
Сообщений: 13
Популярность: 10
Сказал(а) спасибо: 3
Поблагодарили 5 раз(а) в 5 сообщениях
|
Re: Вопросы по чату
|
|
|
28.02.2017, 20:10
|
#4
|
|
|
|
Разведчик
|
Регистрация: 14.07.2009
Сообщений: 11
Популярность: 306
Сказал(а) спасибо: 0
Поблагодарили 11 раз(а) в 6 сообщениях
|
Re: Вопросы по чату
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Похожие темы
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
[Помогите!] Вопросы от почты
|
Six Six Six |
Вопросы, просьбы, обсуждение |
1 |
22.02.2014 15:26 |
[Помогите!] вопросы.
|
CyberNEŦik |
Вопросы и ответы, обсуждения |
4 |
25.09.2012 22:01 |
Все вопросы по F-cf mod
|
VeelZevuL |
Общение и обсуждение CrossFire |
27 |
22.08.2011 18:59 |
ВОПРОСЫ
|
олененок |
Общение и обсуждение (Тюряга ВК) |
9 |
23.12.2010 13:12 |
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 06:56.
|
|