|
Помогите плиз взять квест) - Общение разработчиков - Программирование для Perfect World, общение и обсуждене разработок |
07.05.2014, 04:01
|
#1
|
|
|
|
Разведчик
|
Регистрация: 13.04.2011
Сообщений: 9
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
|
Помогите плиз взять квест)
Пишу VB.NET
Есть несколько примеров из чужего исходника, к примеру: Взятие кв у Ли Мэнбай
SendPacket(2, 0, &H1B, &H49, &H10, &H80)
SendPacket(&H23, 0, &H1B, &H49, &H10, &H80)
SendPacket(&H25, 0, 7, 0, 0, 0, 12, 0, 0, 0, &HCD, &H20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
3,4 байты(первые 2 пакета) я так понимаю имеют отношения к самому нипу, сделал такой вывод сравнив пакеты Ли Мэнбай (у него 7 квестов, 1 стартующий и 6 принимает) отличия только в последней строчке 11 и 12 байты.
Сравнивая с другими нипами пришел к выводу что 3,4(первые 2 пакета) это нип. 11,12(третий пакет) это квест.
Ну вот теперь не могу сопоставить с базой PW.
То есть нип Ли Мэнбай имеет код 14090 (&H370A) тут как не тыкай непонимаю.
Квест вроде подходит - "Дом за скрепку" - 8397(&H20CD)
Что нужно, может уже кто делал, В морае взять часовой квест и любые 2 из списка возможных(суточных, знаю наглею но желательно на раскопку)
Если я правильно понимаю у нипа надо с начало прочесть список имеющихся и по ID выбрать.
Также соответственно их сдать(после завершения),
Еще может кто научит как прочесть число мобов(набитых\необходимых)
умею читать ID квестов, вот наверняка где то рядом (просто не хочется губить квесты на поиски, репу фармлю)
Dim Quest As List(Of Integer) = New List(Of Integer)
WinAPI.ReadProcessMemory(ptr, (AdrPERSSTRUCT + Offsets.PERS.Quest.Array), Buffer, 4, Num)
WinAPI.ReadProcessMemory(ptr, (BitConverter.ToInt32(Buffer, 0) + Offsets.PERS.Quest.Pointer), Buffer, 4, Num)
Dim QuestPointer As Integer = BitConverter.ToInt32(Buffer, 0)
For i = 0 To 70 - 1
' Вот тут офсетик может кто подскажит сколько мобов еще нуно?
WinAPI.ReadProcessMemory(ptr, (QuestPointer + ((i * 32) + Offsets.PERS.Quest.ID)), Buffer, 2, Num)
Dim ID As Integer = BitConverter.ToUInt16(Buffer, 0)
If ID <> 0 Then
Quest.Add(ID)
End If
Next i
ReDim Pers.Quest(Quest.Count - 1)
Quest.CopyTo(Pers.Quest)
Добавлено через 16 минут
Стоп меня тут осенило) в первых двух пакетах WID нипа 8010491B, у меня уже мозги плавятся,
тогда 2 вопроса,
как прочитать список доступных квестов? (я так понимаю 2 варианта этих списков, обычные и типо таких как по доске или морае суточные)
Как прочесть в квестах сколько времени осталось и сколько требуется\убито мобов.
Последний раз редактировалось VitMitS; 07.05.2014 в 04:18.
Причина: Добавлено сообщение
|
|
|
16.05.2014, 02:46
|
#2
|
|
|
|
Разведчик
|
Регистрация: 13.08.2011
Сообщений: 15
Популярность: 10
Сказал(а) спасибо: 6
Поблагодарили 1 раз в 1 сообщении
|
Re: Помогите плиз взять квест)
Про квесты очень мало информации на форуме, пытаюсь научится читать хотя бы доступные/текущие без результатно
|
|
|
23.05.2014, 23:17
|
#3
|
|
|
|
Рыцарь-капитан
|
Регистрация: 14.06.2012
Сообщений: 511
Популярность: 7566
Сказал(а) спасибо: 4
Поблагодарили 181 раз(а) в 88 сообщениях
|
Re: Помогите плиз взять квест)
________________
Хотите как то отблагодарить за помощь?
Не стесняйтесь нажимайте "Спасибо"
Делаю программы на заказ, по всем вопросам в скайп: Ginrey2
|
|
|
25.05.2014, 02:10
|
#4
|
|
|
|
Разведчик
|
Регистрация: 13.08.2011
Сообщений: 15
Популярность: 10
Сказал(а) спасибо: 6
Поблагодарили 1 раз в 1 сообщении
|
Re: Помогите плиз взять квест)
GUI Как то не пошел, то ли офсеты неверные, то ли использовал их неправильно, и информации про это меньше всего на форуме
|
|
|
13.06.2014, 12:24
|
#5
|
|
|
|
Разведчик
|
Регистрация: 13.04.2011
Сообщений: 9
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
|
Re: Помогите плиз взять квест)
|
Цитата: |
|
|
|
|
|
|
|
|
|
на каждый квест своя ячейка памяти, где хранится вся информация о квесте, и путем перечисления уже вытаскивать нужное
|
|
|
|
|
|
Я так понимаю там не ячейка а целая структура, я знаю как вытянуть список ID квестов взятых.
Код:
Dim Quest As List(Of Integer) = New List(Of Integer)
WinAPI.ReadProcessMemory(ptr, (AdrPERSSTRUCT + Offsets.PERS.Quest.Array), Buffer, 4, Num)
WinAPI.ReadProcessMemory(ptr, (BitConverter.ToInt32(Buffer, 0) + Offsets.PERS.Quest.Pointer), Buffer, 4, Num)
Dim QuestPointer As Integer = BitConverter.ToInt32(Buffer, 0)
For i = 0 To 70 - 1
WinAPI.ReadProcessMemory(ptr, (QuestPointer + ((i * 32) + Offsets.PERS.Quest.ID)), Buffer, 2, Num)
Dim ID As Integer = BitConverter.ToUInt16(Buffer, 0)
If ID <> 0 Then ' Сдесь если квест не 0, значит сохраняем его
Quest.Add(ID)
End If
If ID = 2312 Then ' Сдесь я выводил в отладчик 32 байта и изучал их
' Ну по той логике что ID читаются с шагом 32 байта
' Однако таймера и количество мобов я тут не нашел.
Dim temp(31) As Byte
WinAPI.ReadProcessMemory(ptr, (QuestPointer + ((i * 32))), temp, 32, Num)
Dim st As Integer = 0
End If
Next i
Подозреваю что на нужные мне значения таймера и кол.мобов в этой структуре их нет, но возможно есть ссылки.
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 10:33.
|
|