Получаем список ближайших мобов и NPC [Delphi 7] - Разработка ПО для Perfect World - Бюро разработчиков Zhyk.Ru: создание ботов, снифферов и прочих программ для Perfect World
12.07.2014, 03:05
#1
Пехотинец
Регистрация: 03.02.2013
Сообщений: 60
Популярность: 10
Сказал(а) спасибо: 12
Поблагодарили 25 раз(а) в 12 сообщениях
Получаем список ближайших мобов и NPC [Delphi 7]
Доброго времени суток.
Сделал небольшую наработку для получения списка ближайших мобов и NPC,
в приложении исходник на Delphi 7.
Код работающий, но по-моему громоздкий.
Если кто разбирается, подскажите, можно ли как-то код оптимизировать?
[Ссылки могут видеть только зарегистрированные пользователи. ]
12.07.2014, 17:09
#2
Рыцарь-капитан
Регистрация: 14.06.2012
Сообщений: 511
Популярность: 7566
Сказал(а) спасибо: 4
Поблагодарили 181 раз(а) в 88 сообщениях
Re: Получаем список ближайших мобов и NPC [Delphi 7]
зачем тебе вообще этот участок кода?
Код:
ReadProcessMemory (hProcess, Pointer(ba), @tpm, 4, Nob);
ReadProcessMemory (hProcess, Pointer(tpm+$1C), @tpm1, 4, Nob);
ReadProcessMemory (hProcess, Pointer(tpm1+$30), @tpm2, 4, Nob);
ReadProcessMemory (hProcess, Pointer(tpm2+$1458), @cnt1, 4, Nob);
ReadProcessMemory (hProcess, Pointer(cnt1+$3C), @cnt1, 4, Nob);
tc1:=integer(cnt1); //Target counter
ты же его нигде не применяешь в конечном счете
так же идет двойной повтор SetLength(D,n+1);
то есть у тебя массив станет в 2 раза больше чем есть мобов на карте, не критично но все же.
Убрать излишние Begin_End и будет минимум используемого кода
________________
Хотите как то отблагодарить за помощь?
Не стесняйтесь нажимайте "Спасибо"
Делаю программы на заказ, по всем вопросам в скайп: Ginrey2
12.07.2014, 17:32
#3
Разведчик
Регистрация: 26.10.2012
Сообщений: 14
Популярность: 1354
Сказал(а) спасибо: 1
Поблагодарили 5 раз(а) в 2 сообщениях
Re: Получаем список ближайших мобов и NPC [Delphi 7]
Вообще количество мобов вокруг можно было сделать проще чере GameAddress
GA + 1C + 20 + 5C
[Ссылки могут видеть только зарегистрированные пользователи. ]
Но ты делаешь через BaseAddress
BA + 1C + 1C+ 20 + 14
[Ссылки могут видеть только зарегистрированные пользователи. ]
Итог:
[Ссылки могут видеть только зарегистрированные пользователи. ]
12.07.2014, 18:51
#4
Старший сержант
Регистрация: 20.10.2010
Сообщений: 170
Популярность: 684
Сказал(а) спасибо: 146
Поблагодарили 74 раз(а) в 54 сообщениях
Re: Получаем список ближайших мобов и NPC [Delphi 7]
Я мобов(и нпс) нахожу так
Код:
for i:=0 to 768 do begin
MobWID:=0;
ReadProcessMemory (hProcess, Pointer(GameAdress), @Mob, 4, NoB);
ReadProcessMemory (hProcess, Pointer(Mob+$1C), @Mob, 4, NoB);
ReadProcessMemory (hProcess, Pointer(Mob+$20), @Mob, 4, NoB);
ReadProcessMemory (hProcess, Pointer(Mob+$1C), @Mob, 4, NoB);
ReadProcessMemory (hProcess, Pointer(Mob+i*$4), @Mob, 4, NoB);
ReadProcessMemory (hProcess, Pointer(Mob+$4), @Mob, 4, NoB);
ReadProcessMemory (hProcess, Pointer(Mob+$120), @MobWId, 4, NoB);
if Integer(MobWId) <> 0 then begin
ReadProcessMemory (hProcess, Pointer(Mob+$B4), @MobType, 4, NoB);
if Integer(MobType) = 6 then begin
ReadProcessMemory (hProcess, Pointer(Mob+$29C), @MobDis, 4, NoB);
ReadProcessMemory (hProcess, Pointer(Mob+$124), @MobId, 4, NoB);
ReadProcessMemory (hProcess, Pointer(Mob+$128), @MobLVL, 4, NoB);
ReadProcessMemory (hProcess, Pointer(Mob+$278), @MobN, 4, NoB);
ReadProcessMemory (hProcess, Pointer(MobN+$0), @MobName, 255, NoB);
ReadProcessMemory (hProcess, Pointer(Mob+$3C), @MobLocX, 4, NoB);
ReadProcessMemory (hProcess, Pointer(Mob+$44), @MobLocY, 4, NoB);
ReadProcessMemory (hProcess, Pointer(Mob+$40), @MobLocZ, 4, NoB);
end;
end;
end;
________________
Вихри говорят "Х-ш-ш-ш"
[6 лет здесь]
13.07.2014, 08:08
#5
Пехотинец
Регистрация: 03.02.2013
Сообщений: 60
Популярность: 10
Сказал(а) спасибо: 12
Поблагодарили 25 раз(а) в 12 сообщениях
Re: Получаем список ближайших мобов и NPC [Delphi 7]
Цитата:
зачем тебе вообще этот участок кода?
Код:
ReadProcessMemory (hProcess, Pointer(ba), @tpm, 4, Nob);
ReadProcessMemory (hProcess, Pointer(tpm+$1C), @tpm1, 4, Nob);
ReadProcessMemory (hProcess, Pointer(tpm1+$30), @tpm2, 4, Nob);
ReadProcessMemory (hProcess, Pointer(tpm2+$1458), @cnt1, 4, Nob);
ReadProcessMemory (hProcess, Pointer(cnt1+$3C), @cnt1, 4, Nob);
tc1:=integer(cnt1); //Target counter
ты же его нигде не применяешь в конечном счете
так же идет двойной повтор SetLength(D,n+1);
то есть у тебя массив станет в 2 раза больше чем есть мобов на карте, не критично но все же.
Убрать излишние Begin_End и будет минимум используемого кода
Спасибо за ответ. Да,лишнее не убрал. Я изначально мобов заносил в массив, одновременно с ID и LVL, а затем циклом в листбокс выводил. Честно говоря пытался сделать 3 массива, для ID, Имени и LVL, но не додумал, как это проще реализовать...
Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 19:25 .