Программка для поиска Базового адреса.
При запуске выводится окошко открытия файла elementclient.
Указываете на интересующий вас файл, при удачном поиске программа копирует BaseAdress в буфер обмена и показывает его в боксе.
Бывает, что на фришках файл elementclient запакован - тогда запускаете игру, на аккаунт можно не заходить - программа ищет BaseAdress из запущенного процесса elementclient и копирует его в буфер обмена. Когда поиск ведется из запущенного процесса, находится также GameAdress.
Также есть возможность поиска BaseAdress в других играх, где используется elementclient.exe - например, Jade Dynasty или Legend of Martial Arts. Скриншотов нет, так как программа не имеет формы. Написано специально для zhyk.ru для быстрого определения BaseAdress на неизвестных фришках и при обновлении на оф сайте.
34119
VT ([Ссылки могут видеть только зарегистрированные и активированные пользователи] 622d780c1777ee/analysis/1341209123/)
===============================================
BA+0x1C+0x04+0x18+I+D
I (окна, длинна 0x850 байт)
0x2B8 Действия
0x2C0 Игроки и группы
0x2C4 Служба поддержки
0x314 Характеристики персонажа
0x32C Ремонт
0x36C Призыв духа
0x3E8 Помощь
0x40C Инвентарь
0x428 Диалог с нпс
0x438 Домашние животные
0x458 Окно алхимика
0x468 Панель 1-9
0x470 Горячие клавиши
0x4B0 Настройки
0x4C4 Умения
0x50C Системная панель
0x51C Задания
D (данные окна, длинна 0x218 байт)
0x98 WndX, dword
0x9C WndY, dword
0xA0 WndW, dword
0xA4 WndH, dword
0X90 WndO, byte (1-open, 0-close)
Unfreeze=00B28534
Unfreeze=00431F02 (84 C0 > B0 01) /B0 00 - заморожен/
FreezeFlag=00AF78D4 (00B28534)
Zoom=00407E40
ExpArr=00B28C40+[(Lvl)*4]
MultOff=00437712 (57 8D 4E 04 E8 55 EA FD FF > 90 8D 4E 04 90 90 90 90 90)
OnlineFlag = 00B27CE0 /В игре - 1, не в игре - 0/
ChatStart = 00B2CD80 (С какого адреса ссылки)
ChatEnd = 00B2CD84 (По какой адрес ссылки)
ChatMax = 00B2CD88 (Максимальное количество ссылок, max 0x109)
ChatNumber = 00B2CD8C (Ссылок в наличии, max 0xC7)
Message = [[ChatStart]+((0 to ChatNumber)*0x1C+0x08)]+0]
===============================================
BaseAdress = 0x00A591E0
GameAdress = 0x00A59ACC
Структура перса (HostPlayer Struct) такая же, как у "Земли духов"
InGameFlag=00A573C8, byte /0 - не в игре 1 - в игре/
OnLineFlag=00A688EC, byte
Unfreeze=00420204 (84 C0 > B0 01) /B0 00 - заморожен/ или 00420206 (88 75 > C6 01)
Zoom=00439EBB (0F 85 1D > E9 1E FF)
UnfreezeFlag=00A57F3C
FullTarget=00630790
ToVillage=006500D0
PetAttack=00962E7C
PetStop=009AC2E0
PetFollow=00962E74
PetOffensive=00962E68
PetDefensive=00962E5C
PetCombat=00962E54
PetCancel=00950C18
PetSkillUse=005A63C0
PetSetMode1=005307F0
PetSetMode2=00630B00
Mining=006505B0
TalkToNPC=00630B60
Walk1=00494620
Walk2=00498290
Walk3=00494EC0
WalkOfs1=000010BC
UseItem=00630580
Pick=00630720
PickWalk=00489470
PackCall 0063DB70
Sell=004D6250
SkillCall=00492A90
ButtonPress=005D40C0
NPCSelect=0064FBD0
Для работы с диалогами :
DialogOpAddr = 0077D3E0;
DlgCancelPush = 00950C18; IdCancel
DlgNoPush = 00950C24;
DlgYesPush = 00950C08;
Autoattack=0064FC10 /Автоатака по таргету/
ChatStart=00A5CAB8
ChatNumber=00A5CAC4
===============================================
BaseAdress=00B4EF34
GameAdress=00B4F5FC
Структура перса такая же как в Землях духов, отличия после 0xA00
GroundZ=0C20
Target=0BDC
InventArr=0D20
EquipArr=0D24
QuestItemArr=0D28
ActionArr=10C4
QuestArr=10CC
PetArr=10DC
SkillArr=10F0
ActiveSkillCnt=10F4
Структура мобов такая же, как в Землях Духов, отличие:
BufCount=032C
BA +0x1C +0x1C +0x20 +0x14 Count, dword /Количество/
BA +0x1C +0x1C +0x20 +0x18 +(i*0x4) +0x4 /i = 0 - 0x300/
Длинна структуры 0x950 байт
Адреса такие же, как и у своего перса
BA +0x1C +0x1C +0x24 +0x14 Count, dword /Количество/
BA +0x1C +0x1C +0x24 +0x18 +(i*0x4) +0x4 /i = 0 - 0x300/
Длинна структуры 0x3D4 байта
ChatStart = 00C3DF10(С какого адреса ссылки)
ChatEnd = 00C3DF14 (По какой адрес ссылки)
ChatMax = 00C3DF18 (Максимальное количество ссылок)
ChatNumber = 00C3DF1C (Ссылок в наличии)
Эти адреса и оффсеты были найдены и выложены
специально для посетителей сайта zhyk.ru
При этом были задействованы знания и время
участников этого проекта.
Если Вы собрались спиз. ой, скопипастить эти данные для
другого сайта, просьба присоединить к своей теме ссылку
на первоисточник.
BA+1C+034+107C+I*4 Skills array (I=Number of active skills)} //Массив умений
BA+1C+034+1050 Actions array //Массив действий
Это_Что_то
28.10.2011, 03:13
блин оффсеты не верные
деньги например не 558 а 554
demon6
28.10.2011, 16:58
искал базовый адрес по одному из гайдов на этом сайте с помощью СЕ, получил 00B27A02 оч похож на адрес автора темы, ток чот на 2 не сходится....
_Rocksi_
28.10.2011, 21:59
+1068 PetArray {+(I*4+0x10)+0x38-HP +0x150-MaxHP}
Не верно:
+04C8 MaxHP, dword
+04CC MaxMP, dword
Правильно:
+4D0 MaxHP, dword
+04D4 MaxMP, dword
sumikot
29.10.2011, 23:20
Извиняюсь, некоторые адреса действительно неверны. В основном они были найдены автоматически. Там, где кто нибудь подтвердил правильность, через слеш даю имя (кроме раздела структура игрока). В понедельник освобожусь, постараюсь проверить все вручную. Так как сам играю на фришке, оффсеты на оффе ищу только в очень свободное время, от игры в том числе, к сожалению...
И к очень большому сожалению - активность проверки очень маленькая... Такое впечатление, что со времен форума елитепвперс интересующихся этой темой стало раз в 10 меньше.
demon6, базовый адрес точно верен - у меня он проверяется 2мя способами и было подтверждение в другой ветке, можно не сомневаться.
sirkio
30.10.2011, 10:27
Исправь:
+04C8 MaxHP, dword
+04CC MaxMP, dword
На следующие:
+04D0 MaxHP, dword
+04D4 MaxMP, dword
Добавлено через 6 минут
Дополнения (ссори яесли уже некоторые написаны правельно)
Интересует следующее:
Было:
В пределах радара:
GA +8 +20 - hashtable игроков
GA +8 +24 - hashtable мобов и NPC
GA +8 +28 - hashtable валяющихся на земле предметов и шахт
Все три контейнера устроены одинаково:
+14 - количество элементов во всем контейнере
+18 - адрес начала массива адресов первых элементов списков
+24 - количество списков
Структура элемента списка:
+0 - адрес следующего элемента в списке (или ноль)
+4 - адрес структуры объекта
+8 - World ID объекта
А что сейчас?
Добавлено через 3 часа 37 минут
Интересует следующее:
Было:
А что сейчас?
______________________________________________
Нашел, всем спасибо.
-= NPC/mob/pet list (sorted) =-
NPC count RBASE+0x1C+0x1C+0x24+0x14
NPC pointer RBASE+0x1C+0x1C+0x24+0x50+(X*0x4) X=NPC number (0 ... NPC count)
NPC X coord. RBASE+0x1C+0x1C+0x24+0x50+(X*0x4)+0x3C (400+X/10) Float
NPC Y coord. RBASE+0x1C+0x1C+0x24+0x50+(X*0x4)+0x44 (550+Y/10) Float
NPC Z coord. RBASE+0x1C+0x1C+0x24+0x50+(X*0x4)+0x40 (Z/10) Float
NPC id RBASE+0x1C+0x1C+0x24+0x50+(X*0x4)+0x11C
NPC pwdb id RBASE+0x1C+0x1C+0x24+0x50+(X*0x4)+0x120
NPC current HP RBASE+0x1C+0x1C+0x24+0x50+(X*0x4)+0x12C
NPC max. HP RBASE+0x1C+0x1C+0x24+0x50+(X*0x4)+0x16C
NPC name RBASE+0x1C+0x1C+0x24+0x50+(X*0x4)+0x254+0x0 Text (Unicode)
NPC spec. feat. RBASE+0x1C+0x1C+0x24+0x50+(X*0x4)+0x248
-= PPL list (sorted) =-
PPL count RBASE+0x1C+0x1C+0x20+0x14
PPL pointer RBASE+0x1C+0x1C+0x20+0x88+(X*0x4) X=PPL number (0 ... PPL count)
PPL X coord. RBASE+0x1C+0x1C+0x20+0x88+(X*0x4)+0x3C (400+X/10) Float
PPL Y coord. RBASE+0x1C+0x1C+0x20+0x88+(X*0x4)+0x44 (550+Y/10) Float
PPL Z coord. RBASE+0x1C+0x1C+0x20+0x88+(X*0x4)+0x40 (Z/10) Float
PPL id RBASE+0x1C+0x1C+0x20+0x88+(X*0x4)+0x46C
PPL lvl RBASE+0x1C+0x1C+0x20+0x88+(X*0x4)+0x478
PPL cultivation RBASE+0x1C+0x1C+0x20+0x88+(X*0x4)+0x47C
PPL current HP RBASE+0x1C+0x1C+0x20+0x88+(X*0x4)+0x480
PPL current MP RBASE+0x1C+0x1C+0x20+0x88+(X*0x4)+0x484
PPL max. HP RBASE+0x1C+0x1C+0x20+0x88+(X*0x4)+0x4C0
PPL max. MP RBASE+0x1C+0x1C+0x20+0x88+(X*0x4)+0x4C4
PPL name RBASE+0x1C+0x1C+0x20+0x88+(X*0x4)+0x628+0x0 Text (Unicode)
PPL HP charm RBASE+0x1C+0x1C+0x20+0x88+(X*0x4)+0x59C
PPL MP charm RBASE+0x1C+0x1C+0x20+0x88+(X*0x4)+0x5A0
PPL cathop name RBASE+0x1C+0x1C+0x20+0x88+(X*0x4)+0x724+0x0 Text (Unicode)
-= Resource/Loot list (unsorted) =-
Resource count RBASE+0x1C+0x1C+0x28+0x14
Resource pointer RBASE+0x1C+0x1C+0x28+0x18+(X*0x4) X=Resource number (0 ... 768)
Resource X coord. RBASE+0x1C+0x1C+0x28+0x18+(X*0x4)+0x4+0x3C (400+X/10) Float
Resource Y coord. RBASE+0x1C+0x1C+0x28+0x18+(X*0x4)+0x4+0x44 (550+Y/10) Float
Resource Z coord. RBASE+0x1C+0x1C+0x28+0x18+(X*0x4)+0x4+0x40 (Z/10) Float
Resource ID RBASE+0x1C+0x1C+0x28+0x18+(X*0x4)+0x4+0x10C
Resource name RBASE+0x1C+0x1C+0x28+0x18+(X*0x4)+0x4+0x164+0x0 Text (Unicode)
likas
03.11.2011, 16:07
Что то печально с окнами..
Пытаюсь найти в клиенте эту структуру:
BA+0x1C+0x04+0x18+I+D
Уже при +0х04 значение ссылается на 0, а дальше вообще на неизвестное.
Кто то уже смотрел эту структурку? Не подскажете, как верно?
Skuka.95
20.11.2011, 09:54
sumikot, у тя там вс оффсеты перепутаны...
выкладываю то что успел проверить из списка..
498- опыт, 544-защита от земли .540- Защита от огня
53С-защита от воды 538 -защита от дерево 548-физ деф
54C-уклонение 4A4-чи
4C0-выносливость 4C4- интелект 4CC-ловкость 4C8-сила
4F0-меткость
HellD
22.11.2011, 01:30
похоже что тема забыта... ибо не исправлено даже то, что уже давно писалось... ((
AEBus
22.11.2011, 07:04
Автора темы можно изменить, если кто - то согласится поддерживать тему и развивать её - назначу автором
Skuka.95
22.11.2011, 07:07
похоже что тема забыта... ибо не исправлено даже то, что уже давно писалось... ((
ну как видиш часть оффсетов из его списка правельных я выписал, потом остальные проверю)
hiho
22.11.2011, 15:44
Походу народ думает, что чем меньше правильных оффсетов тут лежит, тем меньше псевдоботов-кликером появляется в игре
Skuka.95
22.11.2011, 15:57
Походу народ думает, что чем меньше правильных оффсетов тут лежит, тем меньше псевдоботов-кликером появляется в игре
ты думаешь люди не могут подставлять и проверять оффсеты ?
Skuka.95
22.11.2011, 17:21
особенно на мах хп уж точно... а если нет.. то и нафиг очередной безмозглый ботовод миру нужен? )) имхо! ))
ну я пока что безмозглый) лан тогда нестану выкладывать правельные оффсеты из списка автора)
Skuka.95
22.11.2011, 21:19
И были люди, которые разжевали мне и инжекты, и динамическую адресацию.
можешь мне разжуёшь про инжекты ? желательно в этой теме [Ссылки могут видеть только зарегистрированные и активированные пользователи] да бы не "флудить" тут
sumikot
22.11.2011, 21:46
Skuka.95, обязательно. Только уже не сегодня, оки?
HellD, да и так ошибок полно... еще если их и специально делать...
Да, потом неинформативные сообщения поудаляем - не будем давать работу модераторам )
Dinmaite
22.11.2011, 23:35
с утра... (~13:00) по мск удалю все свое...
речь не о конкретно этой теме.. а суммарно... мой пост про обезьяну с гранатой... не хочу никого обежать... но людей прежде чем дать им оружие, учат с ним обращаться... а мы даем им именно оружие... я просто предлагаю поставить его на предохранитель... пусть все правильные адреса лежат в подполье... (сам в нем не состою) здесь выкладывать... но выкладывать с частичными ошибками... мое мнение... завтра все свои сабжи удаляю.
Данный раздел создавался именно для открытого обсуждения любой доступной информации. Конечно лишь той, которой пользователи пожелают поделиться.
Адреса в подполье это нонсенс. Что бы рождались новые идею нужно освободить людей от потребности в создании велосипеда.
Prom4eg
23.11.2011, 02:01
Я не дополнил?? значит тока в мозгу и было ))) правильные оффсеты тока в подполье, в паблике, оффсеты с частичными ошибками ))
А что означает с частичными ошибками? Я вот 3 дня пытался сообразить чем отличается флажок анфриза от функции, перечитал кучу тем по несколько раз, кучу раз убивал клиент игры пытаясь менять значения.Очень смущало небольшое различие выложенного адреса функции и того который прописан в настройке фоксбота, но Я вроде бы разобрался. Вот мне и интересно какую же частичную ошибку можно сделать например в данном случае?
Мне бы очень хотелось не обычного написание готовых адресов и смещений, а побольше материала о том какими путями это можно найти =) и желательно без всяких там ошибок =)
Добавлено через 6 минут
Кстати, пока искал нужное мне пришел у выводу, что даже с правильной информацией далеко не каждый может, а скорее всего желает этой информацией воспользоватся, большинству подавай готовых "супер-пупер" ботов =) так зачем же еще больше осложнять жизнь тем единицам которые пытаются хотя бы в чем нибудь разобраться.
Skuka.95
23.11.2011, 07:11
Я не дополнил?? значит тока в мозгу и было ))) правильные оффсеты тока в подполье, в паблике, оффсеты с частичными ошибками ))
а зачем ? с одними лишь оффсетами они бота не сделают, тут как минимум нужно знания инжектинга)
Dinmaite
23.11.2011, 18:39
тут как минимум нужно знания инжектинга)
Этого, иногда, много для бота.
VeTaL_UA
23.11.2011, 18:56
с одними лишь оффсетами они бота не сделают
Бота, хоть и неполноценного, можно сделать и записью в ячейку памяти, а это вполне реально сделать, зная оффсеты :)
А про адреса в подполье - бред полнейший... /facepalm
whoami
23.11.2011, 19:05
Иные умельцы делают ботов посылая WM_KEY* окну =)
Dinmaite
23.11.2011, 19:29
В использовании инжектов главное знать где остановиться. Чтобы не превращать средство в самоцель.
Кроме того, чем меньше использовано инжектов, и чем меньше использовано офсетов - тем проще поддерживать бота в будующем :)
Edellake
23.11.2011, 19:46
В теме чуть выше все молчат.. неужели никто не знает оффсет для получения данных о пати и вообще ПЛа?
sumikot
23.11.2011, 20:06
Все таки понял, что смущает народ - смогут сделать бота vs не смогут сделать бота :)
Большая просьба тем, кто отписывается по теме - будьте внимательны. Если не хотите выдавать суперсекретные данные, лучше не пишите. Дезы в сети и так много.
+0x150 MaxHP
либо утки высоко летают, либо я собаку низко подкидываю... потому что как не кручу, нефига у меня тут максхп пета не выдается...
Prom4eg
27.11.2011, 06:23
либо утки высоко летают, либо я собаку низко подкидываю... потому что как не кручу, нефига у меня тут максхп пета не выдается...
У мистиков выдается =) у друлек нет.
Есть вот такая штука еще
+1C PetHP(%) (float)
отсюда и макс ХП можно узнать
HellD
27.11.2011, 13:50
вот надо было подписать что для мистиков )) а то я уж подумал, что я полный идиот, и зачем то всю жизнь получал мхп через
+1C PetHP(%) (float)
когда все можно было сделать намного проще )) правда подозрения все равно были, учитывая количество прокаченых друлек в попытках найти этот самый злополучный оффсет ))
begemottio2
27.11.2011, 19:23
Тоже задам пару вопросов =)
1) Что такое Duration of life/recall of a pet?
2) Где лежит WID текущего призванного пета? Раньше, по разным сведениям, было либо GA + HostPlayer + $74C, либо GA + HostPlayer + PetStruct + $38
Заранее спасибо.
P.S.: FlagPeaceZone будет правильнее :)
P.P.S.: Windows Struct + $810 - количество сломанных/вот-вот сломающихся вещей (Broken Items Count (1b)).
sumikot
28.11.2011, 12:08
P.P.S.: Windows Struct + $810 - количество сломанных/вот-вот сломающихся вещей (Broken Items Count (1b)).
Это получается BA+0x1C+0x04+0x18+0x810 ? Окно показа сломанной вещи? Не понял, но сегодня постараюсь найти.
Про пета будем ответ от Helld ждать - у меня на офе есть кто угодно, друлей нет)
Прийдется наверно хоть одну друльку завести и докачать до квеста приручения петов - для проверки.
Skuka.95
28.11.2011, 12:21
sumikot, могу дать друльку на время на сириусе)
sumikot
28.11.2011, 13:24
sumikot, могу дать друльку на время на сириусе)
Давай, только для качественного поиска офсетов нужна друля 102 лвл с голд шмотом и фулл доступом :) временно конечно. В жизни все временно, как ни крути )
begemottio2
28.11.2011, 13:50
sumikot, BA + 1C + 18 + 8 + 810
Skuka.95
28.11.2011, 14:44
Давай, только для качественного поиска офсетов нужна друля 102 лвл с голд шмотом и фулл доступом
я под столом)
надеюсь дру 30 лвл пойдёт)) щас вышлю логин и пароль) (сервер сириус)
Prom4eg
28.11.2011, 15:40
2) Где лежит WID текущего призванного пета? Раньше, по разным сведениям, было либо GA + HostPlayer + $74C, либо GA + HostPlayer + PetStruct + $38
GA + HostPlayer + PetStruct + $3С --- Если я правильно понимаю то так
begemottio2
28.11.2011, 19:46
Да, оно самое. Спасибо =)
(NevO)
28.11.2011, 21:22
Скиньте плиз elementclient.exe из которого выдергивались эти адреса. у меня почему-то валхак не принимает бейс адрес(
AEBus
28.11.2011, 21:43
у меня почему-то валхак не принимает бейс адрес(
этот? ([Ссылки могут видеть только зарегистрированные и активированные пользователи])
а этот пробовал ([Ссылки могут видеть только зарегистрированные и активированные пользователи])? по моему намного удобнее
HellD
28.11.2011, 23:13
Про пета будем ответ от Helld ждать - у меня на офе есть кто угодно, друлей нет)
ответа?? а у меня никто ничего не спрашивал )) про какого пета? )) если речь про макс хп, то на сколько я для себя понял его просто не существует... либо высчитывается он просто по какой то форумуле внутри клиента, либо так же как и большинство через
+1C PetHP(%) (float)
но CE при различных условиях поиска, при различных петах и ситуациях выдавал в конечном итоге либо что то явно не то, либо вообще заканчивался поиск нулевым результатом ((
я, конечно, не исключаю возможности что я где то ошибся... и не утверждаю, что его нет сто процентов, вперед ищите если желание есть )) но то, что я его не нашел... а пробовал не раз, эт факт )
begemottio2
29.11.2011, 05:21
HellD, Что такое Duration of life/recall of a pet?
HellD
29.11.2011, 05:34
HellD, Что такое Duration of life/recall of a pet?
Если я правильно понял, это что то вроде секундомера, который сбрасывается на ноль при призыве и отзыве любого пета...
Jordi333
29.11.2011, 14:31
у меня вопрос уважаемые знатаки\хакеры) раз мизвесты офф сеты нельзя взять бота пвавто и тупо забить другие офф сеты?
Skuka.95
29.11.2011, 14:37
нельзя
вот и ответ
VeTaL_UA
29.11.2011, 16:36
раз мизвесты офф сеты нельзя взять бота пвавто и тупо забить другие офф сеты?
Можно. Только для этого нужна знания ассемблера и умение пользоваться дебагером и хекс редактором...
Skuka.95
29.11.2011, 16:44
Можно. Только для этого нужна знания ассемблера и умение пользоваться дебагером и хекс редактором...
или тупо спросить исходники у автора
HellD
29.11.2011, 17:31
у меня вопрос уважаемые знатаки\хакеры) раз мизвесты офф сеты нельзя взять бота пвавто и тупо забить другие офф сеты?
Как же все просто )) и зачем тут все головы ломают... Что то ищут, разбираются, придумывают... нужно просто взять оффсеты и !тупо! забить их в пвавто )) Все ж так просто... снимаю шляпу перед Вашей гениальностью...
Ну так попробуй забить... а если слишком сложно, то есть еще одно веселое занятие, думать прежде чем писать ))
Skuka.95
29.11.2011, 17:36
HellD, ну это уж грубо как то, хотя в чём то ты прав)
p.s. ушол изучать 180 страниц писанины на элитпвперс
VeTaL_UA
29.11.2011, 17:48
или тупо спросить исходники у автора
Легче уже дебагером изменить, чем сорцы у него выпросить...
есть еще одно веселое занятие, думать прежде чем писать ))
:D
sumikot
29.11.2011, 17:51
Skuka.95, вообще то про друлю - это была шутка с моей стороны....
Так что логин-пасс запоминать и записывать не стал. Спасибо, конечно.
Можно. Только для этого нужна знания ассемблера и умение пользоваться дебагером и хекс редактором...
Если бот не упакован. Если не сильно изменились коды для инжекта. В общем, легче написать нового...
Есть вопрос - для чего использовался оффсет
BA+1C+58+04+08+24+08+20+AF8 в версии с базовым 009C0E6C ?
Skuka.95
29.11.2011, 17:54
Легче уже дебагером изменить, чем сорцы у него выпросить...
ну владеть исходниками пвАвто тоже хорошо...)
Skuka.95, вообще то про друлю - это была шутка с моей стороны....
эх, ну спасибо за то что хоть дру цела)
p.s. блин чё то я тут зафлудился(
HellD
29.11.2011, 18:24
Есть вопрос - для чего использовался оффсет
BA+1C+58+04+08+24+08+20+AF8 в версии с базовым 009C0E6C ?
я, конечно, далеко не уверен в правильности моей версии... AF8 это id персонажа... да и +20 это как раз структура игрока... так что.. думаю что то из этой серии... был бы тут цикл... сказал с большой долей уверенности, что это получение id персонажей в клане, или еще где нить ))
sumikot
29.11.2011, 19:41
цикла нет явно, цепочка прямая. Если из структуры персонажа на той версии - это таргет.
Если из структуры игроков - даже не знаю что, там по моему, вся структура 0х870 байт весила.
но цепочка очень длинная...
и +1С +58 я сюда и не лазил никогда...
полностью выглядит так
mov eax, 009C14F8 ; это GA только -1С
mov eax, [eax+1Ch]
mov eax, [eax+58h]
mov eax, [eax+4]
mov eax, [eax+8]
mov eax, [eax+24h]
mov eax, [eax+8]
mov eax, [eax+20h]
mov eax, [eax+0AF8h]
и обидно что проверить негде...
Skuka.95
29.11.2011, 19:47
это GA только -1С
сразу написал бы что это ba , т.к. GA=BA+1c
и обидно что проверить негде...
всмысле ?
sumikot
29.11.2011, 19:58
сразу написал бы что это ba , т.к. GA=BA+1c
по смыслу это и есть [BA], просто дал как в оригинале
а mov eax, [009C0E6C] и mov eax, 009C14F8 по смыслу не отличается никак, только синтаксисом.
p.s. ушол изучать 180 страниц писанины на элитпвперс
а зря не прочитал - на основе данных из этой ветки у меня бегал бот по треку вокруг ГО, собирал Т1. За ночь приносил минимум 1кк выручки. 2 "но" - это было давно, цены явно изменились; бегал он методом "тыка" с подменой координат, что не есть гуд.
всмысле ?
В смысле версии клиента 009C0E6C уже нет.
Skuka.95
29.11.2011, 21:02
Ого, тему закрепили, значит мне уже опасно тут флудить)
p.s. надо чёнить полезное написать а то ещё красную выдадут(
а зря не прочитал
180 страниц ?) ты шутиш что ли)
p.p.s. у тя тут нехватает оффсета в структуре петов... офст растояния..
MobStructure+$278 расстояние до моба
sumikot
29.11.2011, 21:57
у тя тут нехватает оффсета в структуре петов... офст растояния..
поставил, хотя и есть подозрение, что он со старой версии клиента. Проверить не могу сейчас - один проектик в дверь постучался ))
barmatula
03.12.2011, 12:38
может кто дать офф сет рабочий под PW Window Unfreezer?Или уже не работает эта программа?Ну или рабочий анфризер
VeTaL_UA
03.12.2011, 12:53
Ну или рабочий анфризер
Вот же он ([Ссылки могут видеть только зарегистрированные и активированные пользователи])...
Nickitee
03.12.2011, 16:11
Ребятки, решил заняться написанием софта для PW.
Пока только учусь находить оффсеты.
Стал вопрос,
вот я нашёл BA - 0x00B27A04
Как мне теперь получить GA в таком же виде как и BA?
(Принимаю и кодом на C# :D)
Skuka.95
03.12.2011, 16:40
попробуй эту прогу....[Ссылки могут видеть только зарегистрированные и активированные пользователи] исходники прилогаются)
p.s. Base_Adress это GA
а Base_CallAdress это ВА
VeTaL_UA
03.12.2011, 17:12
Как мне теперь получить GA в таком же виде как и BA?
GA=BA+1C
Nickitee
03.12.2011, 19:20
Если не трудно, дайте оффсет дистанции от моба. Ибо который в первом посте - устарел.
//Поправка, оффсет работает, просто вышла ошибочка в коде.
sin(alpha)
10.12.2011, 15:44
+058C - ID полета
+06F8 - scill flag
semoder
12.12.2011, 01:29
GA+34+728+C+0+0+0 Имя клана
begemottio
16.12.2011, 22:47
0001 0001 0000 0001 - не только голд, но и грин. Осталось кому-то оранж выронить для полноты картины :)
FreePVP)))
16.12.2011, 22:50
GA+34+728+C+0+0+0 Имя клана
728 - структура клана?
GA+34+CA6(byte) - флаг блокировки паролем от банка
semoder
16.12.2011, 23:43
728 - структура клана?
Глубже не копал)
krukovis
23.12.2011, 19:08
Добрый день!
Раньше структура игроков рядом описывалась так: GA +8 +20 +18 +[I*4] + (+0)^J +4: (I in [0..300])
А сейчас я вижу что BA +0x1C +0x1C +0x20 +0x18 +(i*0x4) +0x4 /i = 0 - 0x300/
Исчез (+0)^J
Делаю вывод - Теперь все игроки на одной странице. Но вроде как это не может быть? Или может?
krukovis
Просто проверил в гд днем, когда много котов по GA +8 +20 +18 +[I*4] + (+0)^J +4: (I in [0..300])
Некоторых персов бот не видит. В таргет берешь - в игре инфа по персу есть. Бот найти его не может.
Причем разница между счетчиком +14 и посчитанными персами на всех страницах небольшая - допустим, 128 по счетчику и 135 на страницах. Предположил, что есть еще какой то механизм, который я не знаю. Либо еще одна страница, наподобие кеша - для старых записей. Потому как не видны в боте были в основном коты, которые долго стояли. Новый перс вошел - его сразу видно, а на некоторых котах хоть затыкайся....
Так что формула не изменилась, просто я ее полностью не знаю.
HellD
25.12.2011, 00:43
А чем вас GA+$34+$38с+$88+I*4 не устраивает? )
sumikot
27.12.2011, 18:33
Helld
А чем вас GA+$34+$38с+$88+I*4 не устраивает? )
Если обратить внимание на шапку, то там это есть.
opex90
27.12.2011, 21:41
Простите если не в тему.
Как в делфи прочесть имя перса? раньше это запросто делалось а сейчас какойто набор символов выдает
krysun
27.12.2011, 21:59
Дополню структуру питомца: (проверено)
//Питомец
OfActivePetId = $774
OfPet= $1068;
OfPetName= $34;// +0 имя (WideChar string)
OfPetHp= $38;//текущее значение хп
OfPetHpPerc= $1C;//Значение ХП в процентах (float, от 0.00 до 1.00)
OfPetLoyale= $4;//верность
OfPetLvl= $24;//уровень
OfPetExp= $2C;//Опыт
OfPetSkillId1=$40;//Id скила 1 (bot.ini) // Названия скилов по id в соседней ветки
OfPetSkillId2=$50;//Id скила 2 (bot.ini) // ...проверено, совпадает.
OfPetSkillId3=$60;//Id скила 3 (bot.ini)
OfPetSkillId4=$70;//Id скила 4 (bot.ini)
OfPetCd1= $48;//Откат скила №1
OfPetCd2= $58;//Откат скила №2
OfPetCd3= $68;//Откат скила №3
OfPetCd4= $78;//Откат скила №4
OfPetHunger= $8; //голод
//0
//1
//2 -изголодавшийся
//6,7 -полуживой
//8 -умирающий
Добавлено через 8 минут
Простите если не в тему.
Как в делфи прочесть имя перса? раньше это запросто делалось а сейчас какойто набор символов выдает
function GetPlayerName(Local_hProc:dword):string;
var
data,rw:dword;
str:string;
begin
ReadProcessMemory(Local_hProc,ptr($00B280C4),@data ,sizeof(data),rw);
ReadProcessMemory(Local_hProc,ptr(data+$34),@data, sizeof(data),rw);
ReadProcessMemory(Local_hProc,ptr(data+$638),@data ,sizeof(data),rw);
ReadProcessMemory(Local_hProc,ptr(data),@str,32,rw );
Result:=str;
end;
sumikot
28.12.2011, 00:36
Спасибо, krysun. Не за себя - мне оффсеты пета не нужны. Просто приятно видеть, что не все "свое личное, накопанное таким трудом" держат только для себя. Всех с наступающим!
krukovis
29.12.2011, 17:49
Cтруктура пета описывается немного элегантнее, если знать, что
PetsStruct + 0x8 - это PetHutch - № клетки вызванного пета 0-9 или -1 (0xFFFFFFFF)- не вызван (PetsStruct надо понимать как HostPlayerStruct + 0x1068)
А дальше через этот параметр приходим в структуру нужного нам пета:
PetStruct + (PetHutch * 0x4 + 0x10) - пусть это будет CurrentPetStruct
И уже в ней имеются все параметры как:
+0x4 - PetLoyalty
+0x8 - PetHungry и т.д. на первой странице остальная инфа.
Вот этого параметр никто не выкладывал, по-моему:
+0x18 - PetClass - класс пета (0-ездовой, 1-друид, 2-декор)
И дальше красивее, по-моему тогда описывать скиллы пета так: ( j - номер нужного нам скила от 0 до 3)
+ ( j * 0x10 + 0x40 ) -/dword/ PetSkillID
+(j * 0x10 + 0x44) - /bool/PetSkillAviable - выучен ли скилл 0- не выучен, 1-выучен
+((j*0x10 +0x48) ) - /dword/PetSkillCoolDown
krysun
29.12.2011, 19:37
+(j * 0x10 + 0x44) - /bool/PetSkillAviable - выучен ли скилл 0- не выучен, 1-выучен
Пригодилось) Спасибо)
krukovis
29.12.2011, 22:08
Адрес UseSkill=00463630* для инжектов не фурычит. Не подскажите правильный? Или гайд как самому адреса инжектов искать?
semoder
29.12.2011, 23:40
Адрес UseSkill=00463630* для инжектов не фурычит. Не подскажите правильный? Или гайд как самому адреса инжектов искать?
Добавлено через 7 минут
Нормально пашет)))
Сори... Все действительно пашет.
Я просто забыл в функции поправить указатель на структуру персонажа в строчке "mov ecx, dword ptr [ecx+$34]", у меня старые +$20 стояло.
Кстати, а если полностью на пакеты переходить, там же нужно контролировать постоянно расстояние до цели иначе не будет скилл кастоваться? Есть способ узнать максимальное расстрояние для скила, кроме как глазами посмотреть в игре в описании скила? Или проще находиться от цели на каком расстроянии просто всегда заведомо достаточном для кастования?
krysun
30.12.2011, 13:13
Добавлено через 7 минут
Или проще находиться от цели на каком расстроянии просто всегда заведомо достаточном для кастования?
Если OUT бота пишешь, то смысл есть....
При использовании инжекта скила все намного проще... Сам бежит сколько надо. Не заморачивайся только на пакетах....
Добавлено через 2 минуты
+(j * 0x10 + 0x44) - /bool/PetSkillAviable - выучен ли скилл 0- не выучен, 1-выучен
Это лвл скила. 0=не выучен, 1,2,3,4,5 - его уровень. Не путайте людей.
BeniRey
02.01.2012, 14:14
Подскажите пожалуйста как можно найти такие оффсеты как :
<offset name="Name" value="0x638" type="string" />
<offset name="TargetID" value="0xB68" />
Это сейчас на руофе
А я хочу найти на фришке, но пока без успешно.. (PW Crystal)
Ищу при помощи СЕ 6.1
Если у кого нибудь есть какая нибудь информация по этой фришке, поделитесь пожалуйста, если конечно это возможно...:bow:
semoder
02.01.2012, 14:28
1. Через CE ищешь имя перса в Unicode, смотришь нужное(например изменяй значение имени на что нибудь другое, и смотри когда оно изменится над головой) потом смотри откуда идёт доступ к этому адресу...
2. вводишь в консоль d_showid появятся WID'ы мобов над их головами, выбери любого и ищи его WID через CE, выбери другого моба, отсей все значения, и опять смотришь откуда идёт доступ к памяти...
Объяснять толком не умею, но думаю суть ясна
BeniRey
02.01.2012, 17:42
Подскажите в чем моя ошибка?
Нахожу Адрес изменяя значение которого меняется имя персонажа над головой, просматриваю информацию нахожу на что ссылается. Тут у меня ступор:
1. Не могу понять где смещение..
2. Почему второй адрес ссылается сам на себя
На скрине слева первый адрес справа второй адрес
А можно по подробнее об этом? Просто я не совсем понял что от чего и к чему... Для меня все это ново, я еще только пытаюсь во всем этом разобраться.
Lёхa
02.01.2012, 22:06
А можно по подробнее об этом? Просто я не совсем понял что от чего и к чему... Для меня все это ново, я еще только пытаюсь во всем этом разобраться.
Эт не тебе было адресовано. Это дополнение к оффсетам структуры персонажа
BritishColonist
02.01.2012, 22:42
ыы. Да не, я не тебе написал, а просто в дополнение к шапке. Люди оффсеты кидают, вот и я подкинул свои пять копеек.
А вообще, не знаю, в чём у тебя проблема. Ты уверен, что проверяешь нужный адрес? Попробуй другой.
И проверяй только те адреса, которые больше, чем начало структуры персонажа, но и чтоб не на много больше были. В общем, делай так: ищи ник, в таблицу добавляй только то, что больше начала структуры игрока, затем ставь на каждый адрес отладчик. Никаких там умножений в квадратных скобочках быть не должно. Скорее всего будет так: [ecx+12345] или [esi+12345].
Выделено:
Синий - заменил на адреса из шапки
Walk1=0046E410 /by VictorPr
Walk2=004728E0 /by VictorPr
Walk3=0046E880 /by VictorPr
Зеленый - заменил на офсеты из шапки
WalkOfs1=064C /by VictorPr
WalkOfs2=1050 /by VictorPr
Красный - хз че делать
Фиол - тоже хз
procedure Walk(x,y,z:single);
var aParams: TParams;
ipbuf,BytesCount,BaseWalkMode:dword;
begin
ReadProcessMemory(hProcess, ptr(GAME_ADD), @ipbuf, sizeof(ipbuf), BytesCount);
ReadProcessMemory(hProcess, ptr(ipbuf+$34), @ipbuf, sizeof(ipbuf), BytesCount);
ReadProcessMemory(hProcess, ptr(ipbuf+$64C), @BaseWalkMode, sizeof(BaseWalkMode), BytesCount);
if BaseWalkMode = 0 then aParams.Param1:=0 else aParams.Param1:=1;
aParams.x:=x;
aParams.y:=y;
aParams.z:=z;
InjectFunc(hProcess,@WalkCall,@aParams,SizeOf(aPar ams));
end;
BritishColonist
09.01.2012, 05:55
0xB27CE0 - [byte] OnlineFlag
значения:
= 0 (игрок не зашёл в аккаунт/не выбрал персонажа/ещё не дождался загрузки мира)
= 1 (игрок выбрал персонажа и находится онлайн в игре).
Идеальная проверка перед запуском бота.
ToRcH2565
09.01.2012, 09:47
+0CAC
+0С+[(0-31)*4] /Ячейка/
+0x08 ID
+0x10 Count /количество/
Весь моск сломал, может кто пояснить как сие считать?
на примере нулевой и 2 ячейки....)
semoder
09.01.2012, 10:21
Весь моск сломал, может кто пояснить как сие считать?
на примере нулевой и 2 ячейки....)
а что сложного?
GA+34+CAC+10+C+I*4+8(это ид вещи)
вместо I, ставь 0 или 2 :omg:
вот сего в исходной формуле незаметил)) да и не замечаю досих))))
но вобщем то спасибо именно за пример) по нему разобрался..)
Sanych89
09.01.2012, 18:56
Для инвентаря дополню:
CAC+C+I*4+58 - требуемый уровень, если это банка.
CAC+C+I*4+4C+0 - затрудняюсь, как его назвать, "глобальный тип". Пример. Банки на хп. ([Ссылки могут видеть только зарегистрированные и активированные пользователи])
CAC+10 - количество ячеек в рюкзаке.
CAC+40+0 - название предмета.
Если было - извиняюсь, но в первом посте не обновлено.
krukovis
09.01.2012, 22:42
CAC+40+0 - название предмета.
Ну это не совсем название предмета. Это, как я понял, часть описания предмета при наведении мышкой в инвентаре.
Название предмета лежит тут:
CAC+C+I*4+54+С - где I - номер ячейки, но не все названия читаются.
Добавлено через 18 минут
Подскажите пожалуйста как можно найти такие оффсеты как :
<offset name="Name" value="0x638" type="string" />
<offset name="TargetID" value="0xB68" />
Это сейчас на руофе
А я хочу найти на фришке, но пока без успешно.. (PW Crystal)
Ищу при помощи СЕ 6.1
Если у кого нибудь есть какая нибудь информация по этой фришке, поделитесь пожалуйста, если конечно это возможно...:bow:
А ты хочешь чужой бот адаптировать под фришку или свой пишешь?
Если чужой и ты не понимаешь в программировании - то тут сложно помочь, только если за тебя найти.
А если свой пишешь и понимаешь чуток в программировании, то легкий и быстрый способ найти все искомые значения простым перебором в цикле. Т.е. перебираешь все смещения в каких то разумных пределах, пока не найдешь нужное значение при определенном смещении. Я так все смещения для фришки искал, да и сейчас под последнюю версию руофа.
semoder
09.01.2012, 23:49
Имена вещей читаются в зависимости от их типа...
Например
(itemType=0) or (itemType=3) то
ReadProcessMemory(hProcess, ptr(itemstruct+$e0),@itemNtmpname,sizeof(itemNtmpn ame),BytesCount);
ReadProcessMemory(hProcess, ptr(itemNtmpname+$C),@itemNname,64,BytesCount);
(itemType=17) то
begin
ReadProcessMemory(hProcess, ptr(itemstruct+$4c),@itemNtmpname,sizeof(itemNtmpn ame),BytesCount);
ReadProcessMemory(hProcess, ptr(itemNtmpname+$8),@itemNname,64,BytesCount);
end
(itemType=2) то
begin
ReadProcessMemory(hProcess, ptr(itemstruct+$cc),@itemNtmpname,sizeof(itemNtmpn ame),BytesCount);
ReadProcessMemory(hProcess, ptr(itemNtmpname+$8),@itemNname,64,BytesCount);
end
(itemType=8) or (itemType=9) or (itemType=23) то
begin
ReadProcessMemory(hProcess, ptr(itemstruct+$54),@itemNtmpname,sizeof(itemNtmpn ame),BytesCount);
ReadProcessMemory(hProcess, ptr(itemNtmpname+$C),@itemNname,64,BytesCount);
end
(itemType=15) то
begin
ReadProcessMemory(hProcess, ptr(itemstruct+$e8),@itemNtmpname,sizeof(itemNtmpn ame),BytesCount);
ReadProcessMemory(hProcess, ptr(itemNtmpname+$C),@itemNname,64,BytesCount);
end
(itemType=20) or (itemType=27) or (itemType=32) or (itemType=5) or (itemType=10) or (itemType=13) or (itemType=19)or (itemType=31) then
begin
ReadProcessMemory(hProcess, ptr(itemstruct+$4C),@itemNtmpname,sizeof(itemNtmpn ame),BytesCount);
ReadProcessMemory(hProcess, ptr(itemNtmpname+$4),@itemNname,64,BytesCount);
end
itemType=43 then
begin
ReadProcessMemory(hProcess, ptr(itemstruct+$54),@itemNtmpname,sizeof(itemNtmpn ame),BytesCount);
ReadProcessMemory(hProcess, ptr(itemNtmpname+$4),@itemNname,64,BytesCount);
end
itemType=36 then
begin
ReadProcessMemory(hProcess, ptr(itemstruct+$b8),@itemNtmpname,sizeof(itemNtmpn ame),BytesCount);
ReadProcessMemory(hProcess, ptr(itemNtmpname+$4),@itemNname,64,BytesCount);
end
itemType=41 то
begin
ReadProcessMemory(hProcess, ptr(itemstruct+$10c),@itemNtmpname,sizeof(itemNtmp name),BytesCount);
ReadProcessMemory(hProcess, ptr(itemNtmpname+$4),@itemNname,64,BytesCount);
end
Остальные типы не рассматривал, потому что их не было в инвентаре)
krukovis
10.01.2012, 07:24
Имена вещей читаются в зависимости от их типа...
Спасибо за инфу!
Дополню до общей картины:
CAC+C+I*4+4 -(где I-номер ячейки) = ItemType - тип вещи из предыдущего примера.
krukovis
11.01.2012, 17:51
Доброго времени суток!
А кто нибудь знает где лежит информация в памяти клиента сколько ярости нужно для конкретного скилла, время отката, время пения, наименование?
BritishColonist
12.01.2012, 00:58
Присоединяюсь к вопросу. Ещё бы хорошо узнать кол-во затрачиваемой маны, длительность каста, а так же тип применения (на себя или на цель, атакующий или хилящий. наверняка есть в памяти) и, собственно, эффект (сколько урона, какой стихией и т.д.). Было бы здорово, ибо не придётся составлять базу скиллов для каждого класса.
Remii
13.01.2012, 07:28
Выкладываю по вашей просьбе:
[Ссылки могут видеть только зарегистрированные и активированные пользователи] Flugel PW
Версия в лаунчере - 42
24715
wajskopf
13.01.2012, 19:15
Подскажите по какому оффсету и какое значение должно быть фулл чи? То есть, то что выложено показывает текущий уровень ярости, а мне нужен фулл чи. Типа 1 или 0 (есть или нет)
krukovis
13.01.2012, 19:20
Я проанализировал значение 06F4 WaitSkill* - это указатель на структуру кастующегося в данный момент скилла. Если посмотреть дальше, то можно обнаружить следующие показатели:
+4 SkillID
+8 SkillID
+C SkillLvl
+10 SkillCoolDown
+14 SkillMaxCoolDown
Это смещение интересно по нескольким причинам:
1) Мы можем легко обнаружить какой скилл кастуется в данный момент посмотрев на его ID по смещению +8 - SkillID
2) Мы можем легко понять когда скилл перестал кастоваться - по этому смещению будет 0.
Я бы назвал это смещение как ActiveSkillPtr.
Добавлено через 8 минут
================================================== ===============================================
Подскажите по какому оффсету и какое значение должно быть фулл чи? То есть, то что выложено показывает текущий уровень ярости, а мне нужен фулл чи. Типа 1 или 0 (есть или нет)
На сколько я знаю полных чи нет. Да и зачем оно, если можно проверять кол-во ярости по смещению +4A4 в структуре персонажа. Если >= 100 - значит 1 чи есть, если >=200 - значит 2 чи, если >= 300 - значит 3 чи.
Добавлено через 15 минут
================================================== =============================================
/+0480 Chi, dword/*
По этому смещению лежит количество полных чи. Т.е. если это значение = I, то максимальное кол-во ярости будет I+99, где i = 0 to 3.
Добавлено через 1 час 47 минут
==================================================
Что то по этому адресу не вижу Ожидания призыва пета +0B60 Duration of life/recall of a pet /Ожидание призыва пета/, не подскажите правильный? Или поясните что это за параметр, пожалуйста.
wajskopf
13.01.2012, 22:10
На сколько я знаю полных чи нет. Да и зачем оно, если можно проверять кол-во ярости по смещению +4A4 в структуре персонажа. Если >= 100 - значит 1 чи есть, если >=200 - значит 2 чи, если >= 300 - значит 3 чи.
Этот совет помог. По смещению +0480 лежат нули
krukovis
13.01.2012, 22:48
Этот совет помог. По смещению +0480 лежат нули
Очевидно твой перс не получил еще ни одного чи ;)
Docent2001
14.01.2012, 01:45
Возможно тут уже писали об этом, но я такого не нашел.
По смещениям от +055C до +05BC в структуре перса лежат item_id оружия, брони и т.п.
Но, несмотря на то что они определены как "двойное слово" - DWord, в реальности для хранения item_id используется только младшее слово, а старшее может содержать то ли мусор, то ли какую-то непонятную (во всяком случае не описанную здесь) информацию (а может и нули).
Поэтому нужно либо сразу определять в своей программе тип этих переменных как Word или SmallInt (для Delphi), либо маскировать старшее слово.
Choochoo
15.01.2012, 10:29
А чем вас GA+$34+$38с+$88+I*4 не устраивает? )
Пошу прощения, но поиски по этим офсетам. Как и по любым другим в списке игроков рядом правильно выдают только их количество. А такие данные как Имя перса. его лвл (после взятия в таргет) и прочее выдают заведомо ложную информацию. Или я что то не так делаю, или одно из двух....
Docent2001
15.01.2012, 18:58
Брать информацию о близлежащих игроках по ссылке из структуры перса не пробовал.
А вот здесь информация о них точно есть:
"Структура игроков
BA +0x1C +0x1C +0x20 +0x14 Count, dword /Количество/
BA +0x1C +0x1C +0x20 +0x18 +(i*0x4) +0x4 /i = 0 - 0x300"
wajskopf
16.01.2012, 19:30
Где можно посмотреть какое либо значение, которое показывало бы в игре перс или вылетел? Коты часто вылетают...
krukovis
16.01.2012, 19:36
Где можно посмотреть какое либо значение, которое показывало бы в игре перс или вылетел? Коты часто вылетают...
OnlineFlag = 00B27CE0 /В игре - 1, не в игре - 0/
внимательно изучи первую страницу и всю эту ветку (с карандашем)
opex90
17.01.2012, 21:03
А у меня структура лута не работает.
списки игроков и мобов работают нормально.
При чем офсет на количество лута и ресов вокруг работает а инфа о них неправильная (((
procedure Walk(x,y,z:single);
var aParams: TParams;
ipbuf,BytesCount,BaseWalkMode:dword;
begin
ReadProcessMemory(hProcess, ptr(GAME_ADD), @ipbuf, sizeof(ipbuf), BytesCount);
ReadProcessMemory(hProcess, ptr(ipbuf+$34), @ipbuf, sizeof(ipbuf), BytesCount);
ReadProcessMemory(hProcess, ptr(ipbuf+$64C), @BaseWalkMode, sizeof(BaseWalkMode), BytesCount);
if BaseWalkMode = 0 then aParams.Param1:=0 else aParams.Param1:=1;
aParams.x:=x;
aParams.y:=y;
aParams.z:=z;
InjectFunc(hProcess,@WalkCall,@aParams,SizeOf(aPar ams));
end;
Блин все равно не получается, клиент с ошибкой вылетает(((/okay
Решил отдельно замутить для проверки. Гляньте что не так плиз. Мозг уже не варит, он и так то не варил, а ща вообще мертв.:eek:
type
PParams = ^TParams;
TParams = packed record
WID: DWord;
end;
type
PWalkParams = ^TWalkParams;
TWalkParams = packed record
Packet: array [0..100] of byte;
CallAddress1,CallAddress2,CallAddress3: Pointer;
x,y,z: single;
Param1: dword;
Param4: array [1..88] of widechar;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
//podkluchenie k pw
function Contopw: dword;
var
WndHndl:Thandle;
PID,hprocess:dword;
begin
WndHndl:=findwindow(nil, pchar('Perfect World'));
GetWindowThreadProcessId(WndHndl, @PID);
hProcess:=OpenProcess(PROCESS_ALL_ACCESS, False, PID);
if hprocess<>0 then begin
Result:=hprocess; end
else
begin
Result:=0;
end;
end;
procedure InjectFunc(ProcessID: Cardinal; Func, aParams: Pointer;
aParamsSize: DWord);
var
hThread: THandle;
lpNumberOfBytes: DWord;
ThreadAddr, ParamAddr: Pointer;
begin
if ProcessID<>0 then
begin
// ----
ThreadAddr := VirtualAllocEx(ProcessID, nil, 256, MEM_COMMIT, PAGE_READWRITE);
WriteProcessMemory(ProcessID, ThreadAddr, Func, 256, lpNumberOfBytes);
procedure Walk(x,y,z:single);
var
aParams: Twalkparams;
ipbuf,BytesCount,BaseWalkMode, hprocess:dword;
begin
hProcess := contopw();
ReadProcessMemory(hProcess, ptr($B280C4), @ipbuf, sizeof(ipbuf), BytesCount);
ReadProcessMemory(hProcess, ptr(ipbuf+$34), @ipbuf, sizeof(ipbuf), BytesCount);
ReadProcessMemory(hProcess, ptr(ipbuf+$64C), @BaseWalkMode, sizeof(BaseWalkMode), BytesCount);
if BaseWalkMode = 0 then aParams.Param1:=0 else aParams.Param1:=1;
aParams.x:=x;
aParams.y:=y;
aParams.z:=z;
InjectFunc(hProcess,@WalkCall,@aParams,SizeOf(aPar ams));
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Walk(0,0,0);
end;
end.
krukovis
18.01.2012, 16:07
Я чуть не разуверился в этом мире пока отловил ошибку тут:
MultOff=00437712 (57 8D 4E 04 EB 55 EA FD FF > 90 8D 4E 04 90 90 90 90 90)
Правильный опкод для исправления (57 8D 4E 04 E8 55 EA FD FF) - поправь пожалуйста.
sumikot
18.01.2012, 18:35
Ок, невнимательность моя...
gurin
19.01.2012, 12:01
Jok3r666, у меня вместо
lea eax, dword ptr [esp+$0c]
стоит
lea eax, dword ptr [esp+$18]
krukovis
19.01.2012, 21:37
Я нашел отсортированный список для Мобов/NPC/Петов ! :hd:
MobsHash = BaseAddress+0x1C+0x1C+0x24+0x50 + (0x04*I)
Где I = 0 to MobsCount (MobsCount = BaseAddress+0x1C+0x1C+0x24+0x14)
Добавлено через 12 часов 30 минут
Брать информацию о близлежащих игроках по ссылке из структуры перса не пробовал.
А вот здесь информация о них точно есть:
"Структура игроков
BA +0x1C +0x1C +0x20 +0x14 Count, dword /Количество/
BA +0x1C +0x1C +0x20 +0x18 +(i*0x4) +0x4 /i = 0 - 0x300"
Рекомендую пользоваться отсортированным списком:
PlayersHash = BaseAdress +0x1C +0x34+038С+088+(I*4), где I = 0..PlayersCount
PlayersCount = BaseAdress +0x1C +0x34+038С+14
И дальше HashPlayers +
...
+0x46C ID, dword
+ прочие значения с 1-ой страницы....
+ ....
....
Удобнее.
Jok3r666
20.01.2012, 10:55
Я нашел отсортированный список для Мобов/NPC/Петов ! :hd:
MobsHash = BaseAddress+0x1C+0x1C+0x24+0x50 + (0x04*I)
Где I = 0 to MobsCount (MobsCount = BaseAddress+0x1C+0x1C+0x24+0x14)
Добавлено через 12 часов 30 минут
Рекомендую пользоваться отсортированным списком:
PlayersHash = BaseAdress +0x1C +0x34+038С+088+(I*4), где I = 0..PlayersCount
PlayersCount = BaseAdress +0x1C +0x34+038С+14
И дальше HashPlayers +
...
+0x46C ID, dword
+ прочие значения с 1-ой страницы....
+ ....
....
Удобнее.
именно это и искал спс
В шапку выложите + в структуре персонажей (ba+1c+1c+20+18...) исправьте playername - 0x638, да и все остальное как у hostplayer
sumikot
20.01.2012, 12:08
Структуру мобов BA +0x1C +0x1C +0x24 +0x50 +(i*0x4)
и персов BA +0x1C +0x1C +0x20 +0x88 +(i*0x4)
первый нашел krysun, но я не занес ее в шапку. krysun, прими мои извинения, восстанавливаю первооткрывателя. Там не полный массив игроков. Попробуйте зайти на ГДЗ и найти всех котов - многих там не будет.
krukovis
20.01.2012, 12:17
и персов BA +0x1C +0x1C +0x20 +0x88 +(i*0x4)
Я смотрел по этому адресу - он как то плохо работает. Не нужно его в шапку, я думаю.
BaseAdress +0x1C +0x34+038С+088+(I*4) - этот лучше. И он на первой странице есть. Но оформлен стилистически не очень хорошо, видимо в спешке. Если есть время - подкорректируй плиз.
sumikot
20.01.2012, 13:08
krukovis, да в принципе понятно оформлен, там больше ничего не допишешь :) На всякий случай вставил его в описание структуры игроков.
Только есть одно "но" -
BA +0x1C +0x1C +0x20 +0x88 +(i*0x4)
и
BA +0x1C +0x34+038С+088+(I*0x4)
ссылаются на одинаковую таблицу, на те же самые адреса, так что работают они абсолютно одинаково.
И нет в жизни счастья....
krukovis
20.01.2012, 13:27
+0x248 Feature
(+0x240 - See +0x225)
А не скажете что это: (+0x240 - See +0x225) ?
sumikot
20.01.2012, 13:40
что в скобках - это внесено обычно с левых источников, сам не проверял и не пользовался этими ячейками.
есть множество адресов, которые можно узнать, допустим на китайских сайтах - а с чем они их едят, разбираться лень. Оставляю обычно на всякий случай, может будет время разобраться и понять, например:
XingXingAdd
OpenXXPar
OpenXXCallA
OpenXXCallB
OpenXXCallC
OpenXXCallD
OpenXXCallE
AnswerCallA
AnswerCallB
Это параметры адресов для общения со столбами в ХХ - адреса строчек в диалоге.
Со времен общения с нипами с помощью инжектов.
Jok3r666
20.01.2012, 20:29
Со времен общения с нипами с помощью инжектов.
А сейчас как с нипами общаются?
krukovis
20.01.2012, 21:30
А сейчас как с нипами общаются?
Сейчас пакетами в основном. Хотя за всех сказать сложно. Но это самое простое, как мне кажется. Особенно с появлением утилиты Packet Listener.
sumikot
20.01.2012, 21:42
Сейчас пакетами в основном. Хотя за всех сказать сложно. Но это самое простое, как мне кажется. Особенно с появлением утилиты Packet Listener.
Точно ) Блин, ушли китайские адреса в прошлое, а я так и не успел разобраться, что это такое было).
krukovis
20.01.2012, 21:58
ссылаются на одинаковую таблицу, на те же самые адреса, так что работают они абсолютно одинаково.
И нет в жизни счастья....
Сначала они сказали мне что НЕТ(!) Деда Мороза, а потом это...
Да, ты пирафф. Видимо первый раз я допустил где то ошибку.
Добавлено через 13 часов 44 минуты
Точно ) Блин, ушли китайские адреса в прошлое, а я так и не успел разобраться, что это такое было).
Бог миловал :D
Стал переделывать под сортированный список функцию поиска моба. И мне кажется что отсортированный список - это не удобно. Т.к. там индекс моба постоянно меняется (особенно в местах массового фарма). Получается нашел себе моба. Запомнил индекс, чтобы потом по этому индексу постоянно контроливать его ХП, и прочие параметры. А в какой то момент клиент пересортировал массив и у меня по этому индексу уже другой моб записан. Это получается нужно постоянно проверять, то ли Id у моба по нужному индесу. Еще сложнее получается, чем при работе с несортированным списком. Там все проще - выбрал моба. Запомнил индекс и точно знаешь, что моб именно тот, который нужен. И он будет по этому индексу пока не сдохнет.
Так что зря я вообще искал отсортированный список.
==========
А еще поэкспериментировал и обнаружил, что индекс для Моба-НПС-Пета в неотсортированном списке условно постоянный. Т.е. если не бегать по городам и не загружать в память большое кол-во объектов, то индекс интересующего нас Моба-НПС-Пета будет один и тот же.
Добавлено через 15 часов 25 минут
+0x218 /Номер в массиве/
Что это за параметр?
Добавлено через 20 часов 6 минут
+2D4 MobPTargetID, dword (ID для Физ.атаки)
+2D8 MobMTargetID, dword (ID для Маг.атаки)
Эти смещения не правильные. Сейчас эти значения тут:
+2DC MobPTargetID, dword (ID для Физ.атаки)
+2E0 MobMTargetID, dword (ID для Маг.атаки)
Jok3r666
21.01.2012, 22:15
можешь в шапку добавить офсеты названий предметов от сюда [Ссылки могут видеть только зарегистрированные и активированные пользователи]
krukovis
21.01.2012, 22:59
можешь в шапку добавить офсеты названий предметов от сюда [Ссылки могут видеть только зарегистрированные и активированные пользователи]
А ты не мог бы их выложить в более привычном виде?
Например как на первой странице:
Type = 0,3 Name = +E0 +C
Type = 17 Name = +4C +8
Type = 2 Name = +CC +8
Type = 8,9,23 Name = +54 +C
Type = 15 Name = +E8 +C
Type = 20,27,32,5,10,13,19,31 Name = +4C +4
Type = 43 Name = +54 +4
Type = 36 Name = +B8 +4
Type = 41 Name = +10C +4
BeniRey
22.01.2012, 12:11
Ребят кто нибудь разбирался с массивом действий? Если кто знает тип данных и за что отвечают эти смещения отпишитесь пожалуйста.
+0x47C Cultivation, dword - это вообще надо удалить. херпоймическая культивация какая то )).
Поправь пожалуйста.
Добавлено через 5 минут
$4
ты хочешь сказать что $4 <> 4 ?
VeTaL_UA
22.01.2012, 18:38
ты хочешь сказать что
Не, не хочу :) Просто так привычнее :) А так то адреса некоторые кривые ;)
Jok3r666
22.01.2012, 20:00
Кто нить проверял офсеты окон? По той цепочке облом. ba+1c+4+18+...
Choochoo
23.01.2012, 15:32
(ipbuf+(i*$4))
Пробовал, не помогает.
krukovis
23.01.2012, 15:49
Пробовал, не помогает.
Да и не должно было. Потому что 4 = $4.
У тебя в другом ошибка, если она вообще есть. Посмотри как этот адрес ищется в Cheat Engine. И проверь все ли значения совпадают у тебя?
З.Ы. Ну что, VeTaL_UA, добился своего? Сбил парня с понталыку? :D
VeTaL_UA
23.01.2012, 16:28
Ну что, VeTaL_UA, добился своего? Сбил парня с понталыку?
:Злорадствует: /problem
Мне так привычнее, просто. Когда-то давно нифига не получалось прочитать значение и я исправил 4 на $4, а так же исправил ошибки. Тогда я подумал, что дело в знаке $ и не читалось именно из-за него :D
Choochoo
23.01.2012, 17:34
да нее, х10 и х16 для значений 0<х<10 не играет роли. офсеты норм. так как количество персов рядом читает норм.... Ошибка если и есть, то в приведенном куске кода. Пишу для PW не первый раз... Перепробовал много вариантов... Не сумел найти ошибки поэтому и спрашиваю сообщество...
Jok3r666
23.01.2012, 18:21
ReadProcessMemory(hProcess, ptr(buf+$628), @buf, sizeof(buf), BytesCount);
ReadProcessMemory(hProcess, ptr(buf), @buf, sizeof(buf), BytesCount);
ReadProcessMemory(hProcess, ptr(buf), @_nm, 32, BytesCount);
Судя по этому получается +628+0+0 , 628 не правильный офсет, надо +638+0 (без еще одного ноля)
сделай так
ЗЫ у меня по ба+1с+1с+20+18+и*4+4+638+0 все прекрасно ищется, просто не во всех значениях и есть данные, много пустых
krukovis
23.01.2012, 19:29
ЗЫ у меня по ба+1с+1с+20+18+и*4+4+638+0 все прекрасно ищется, просто не во всех значениях и есть данные, много пустых
Потому что это не отсортированный список там i = 0 - 0x300
А в сортированном
BA +0x1C +0x34 +0x38C +0x88 +(i*0x4)
i = от 0 до Count - кол-ва игроков. Там все персонажи идут по порядку. Но говорят, что в этот список не все попадают. А может быть просто эти персы определяются сервером с ошибкой и он о них инфу с ошибкой шлет.
Jok3r666
23.01.2012, 19:40
Но говорят, что в этот список не все попадают. А может быть просто эти персы определяются сервером с ошибкой и он о них инфу с ошибкой шлет.
У меня бот по отсортированому гоняет, сколько тестил ни разу не одного не пропустил,там просто бывает имена не подгружаются, это когда в игре у таргета вместо имени стоит Р-123435, а так все пучком, намного лучше чем не отсортированый вариант.
VeTaL_UA
23.01.2012, 20:38
в игре у таргета вместо имени стоит Р-123435
Id перса тоесть. Это лаги клиента при большом пинге :)
samosi
23.01.2012, 21:09
И так есть вопрос вот с етим
Структура лута, ресов
BA +0x1C +0x1C +0x28 +0x14 Count, dword /Количество/
BA +0x1C +0x1C +0x28 +0x18 +(i*0x4) +0x4 /i = 0 - 0x300/
читаю так
var nearCount = MemoryManager.ChainReadInt32(GameRun, 0x28, 0x14);
но у меня не хочет показивать кол во лута помогите а.
Пишу на С#
krukovis
23.01.2012, 21:35
А ты читаешь потому что не правильно. Читай так
var nearCount = MemoryManager.ChainReadInt32(BaseAdr, 0x1c, 0x1c, 0x28, 0x14);
Ну если прям фанат GA, то так
var nearCount = MemoryManager.ChainReadInt32(GameRun, 0x1c, 0x28, 0x14);
sumikot
23.01.2012, 22:43
Не правильное смещение. Правильное +0x47C - WID
Да там все просто - какие смещения на своем персе, такие и на чужих. Только длинна структуры меньше и не все переменные попадают к клиенту - он их выставляет в 0. Каюсь, упорядочить все некогда. Сейчас и играть то некогда... Так что заношу ваши офсеты, не проверяя. Спасибо всем, кто доводит правильные данные в массы :)
PS Вопрос - для инжектов смещения вообще нужны кому нибудь? А то может их нафик затереть и лучше таблицу пакетов сделать ?
Оставим движение, остальное, я чувствую, никому не нужно? ** так и стоят...
krukovis
24.01.2012, 06:36
PS Вопрос - для инжектов смещения вообще нужны кому нибудь? А то может их нафик затереть и лучше таблицу пакетов сделать ?
Оставим движение, остальное, я чувствую, никому не нужно? ** так и стоят...
Пусть будут :) . Использование скилла я использую еще - удобнее пакета. Расстояние до цели контролировать не нужно. Некоторые прыгают инжектом.
Прыжок еще говорят пакетами не работает. Если есть пакет на прыжок - напишите опкод плиз. Я только инжектом знаю.
Движение пакетами есть способ осуществить?
sumikot
24.01.2012, 06:53
Движение пакетами есть способ осуществить?
Можно, только считать сложно... Инжектом гораздо удобнее - конечную точку отправил, и все. А пакетами прийдется множество точек трека отправлять плюс пакет остановки, при этом глушить пакеты движения, которые сам клиент будет пытаться пропихнуть.
Если у меня есть оффсеты с * , которые у вас работают, подтверждайте, плз.
krukovis
24.01.2012, 06:54
Так что заношу ваши офсеты, не проверяя.
Неправда... Проверил то что я выкладывал - на первой странице не обновлено.
Отнесись серьезней, пожалуйста. Тогда и люди будут к поиску смещений серьезней относиться и выкладывать легко, не жалея. А сейчас только и делаешь, что ищешь уже давно найденное, как оказывается в итоге. Или проверяешь, то что уже давно проверили.
Если прям ну ваще нет времени - давай попросим модераторов поменять автора. У меня сейчас есть время и желание. Потом будешь по-свободнее, скажешь, поставим обратно.
Добавлено через 6 минут
Да там все просто - какие смещения на своем персе, такие и на чужих.
Не могу найти адрес для PhizTarget для чужих игроков. Подскажите, пожалуйста!
Для MagicTarget нашел + &H6F8
Jok3r666
24.01.2012, 09:41
Не могу найти адрес для PhizTarget для чужих игроков. Подскажите, пожалуйста!
Для MagicTarget нашел + &H6F8
Затести прогу [Ссылки могут видеть только зарегистрированные и активированные пользователи]
krukovis
24.01.2012, 10:00
Я проверил всячески. PhizTarget в структуре чужого персонажа отсутствует. Я зашел в 2 окна и на своем втором персе тестировал. Есть только MagTarget, но учитывая что в 99% случаев скилы используют, то MagTarget в общем то достаточно.
krukovis
24.01.2012, 15:04
Для твоего удобства подведу итог по тому что обнаружил и не увидел на первой странице.
В структуре чужих персонажей
MagicTarget + &H6F8
FizTarget - отсутствует
WID +0x47C
Cultivation - затереть думаю надо, ибо х.з. чО (было +0х47С).
К остальным не проверенным параметрам надо добавить звездочки, убрать звездочки только после проверки.
В структуре Мобов/НПС/Петов
+2DC MobPTargetID, dword (ID для Физ.атаки)
+2E0 MobMTargetID, dword (ID для Маг.атаки)
В структуре своего персонажа
+0B60 Duration of life/recall of a pet /Ожидание призыва пета/ - неправильный адрес. И правильный не смог найти. М.б. затереть или пометить что он не найден? Может кто увидит и скажет?
Можно, думаю, добавить пояснение к этому значению:
/+0480 Chi, dword/ - По этому смещению лежит количество полных чи. Т.е. если это значение = I, то максимальное кол-во ярости будет I+99, где i = 0 to 3.
Ну вроде все :)
Docent2001
24.01.2012, 15:29
krukovis, ты не совсем прав.
Cultivation - затереть думаю надо, ибо х.з. чО
Это не хз чо, а вполне понятная вещь - числовая форма "статуса" персонажа - значение меняется каждые 10 лвл с прохождением "уважения". Причем, что интересно, если окружающих персов не брать в таргет - то их данные практически пустые, за исключением очень немногих значений, одно из которых как раз Cultivation.
К примеру таким образом можно определить примерный лвл персонажа не выделяя его в таргет (1-8, 9-18, 19-28 и т.п.). Кроме того это единственный, насколько я понимаю, способ определить адский или райский перс.
krukovis
24.01.2012, 15:34
Это не хз чо, а вполне понятная вещь - числовая форма "статуса" персонажа -
Спасибо, что пояснил. А я спрашивал - все плечами пожимали. А смещение рабочее не подскажешь?
Docent2001
24.01.2012, 15:39
Я на работе сейчас, как дома буду - гляну в исходники. Но вообще брал смещения из этой темы. По сути это смещение такое же как и у "своего" перса - то бишь должно быть 0х48С
krukovis
24.01.2012, 15:42
Я на работе сейчас, как дома буду - гляну в исходники. Но вообще брал смещения из этой темы. По сути это смещение такое же как и у "своего" перса - то бишь должно быть 0х48С
Ну если у тебя будет отличаться от того что на сайте - выложи плиз. А так я домой приду - проверю.
samosi
24.01.2012, 16:31
Структура лута, ресов
BA +0x1C +0x1C +0x28 +0x18 +(i*0x4) +0x4 /i = 0 - 0x300/
хотел спросить нашет етого дак вот читаю я так
var nearItemCount = MemoryManager.ChainReadInt32(BaseAddress, 0x1c, 0x1c, 0x28, 0x14);
for (var i = 0; i < nearItemCount; i++)
{
var itemBase = MemoryManager.ChainReadInt32(BaseAddress, 0x1c, 0x1c, 0x28, 0x18, i * 0x4, 0x4);
if (itemBase != 0)
{
// Получаем данные из структуры, которые нам нужны
var Name = MemoryManager.ChainReadString(itemBase + 0x164, 64, 0x0);
и как не странно не все имена предметов выводит, выводит где то 2 из 30 в чем ошибка???
krukovis
24.01.2012, 16:42
как не странно не все имена предметов выводит, выводит где то 2 из 30 в чем ошибка???
Ошибки нет. Просто имена предметов читаются в зависимости от типа предмета.
Читай тут [Ссылки могут видеть только зарегистрированные и активированные пользователи]
И тут есть более полная функа на определение Имени предмета [Ссылки могут видеть только зарегистрированные и активированные пользователи] правда на Delphi, но смещения есть.
Choochoo
24.01.2012, 18:16
Потому что это не отсортированный список там i = 0 - 0x300
А в сортированном
BA +0x1C +0x34 +0x38C +0x88 +(i*0x4)
i = от 0 до Count - кол-ва игроков. Там все персонажи идут по порядку. Но говорят, что в этот список не все попадают. А может быть просто эти персы определяются сервером с ошибкой и он о них инфу с ошибкой шлет.
В результате список заполненый "кракозябрами" Ниодного удобочитаемого имени..../facepalm
samosi
24.01.2012, 18:23
Ошибки нет. Просто имена предметов читаются в зависимости от типа предмета.
Читай тут [Ссылки могут видеть только зарегистрированные и активированные пользователи]
И тут есть более полная функа на определение Имени предмета [Ссылки могут видеть только зарегистрированные и активированные пользователи] правда на Delphi, но смещения есть.
хм можеш помочь со смещениям а то я не понял хД особино со смещениями
ну вот к примеру
2: begin //strella
ReadProcessMemory(hProcess, ptr(jumpptr+item1_2_ofs), @ipbuf, sizeof(ipbuf), BytesCount);
ReadProcessMemory(hProcess, ptr(ipbuf+item2_2_ofs), @buf32, sizeof(buf32), BytesCount);
Result:=buf32;
end;
и вот смешения
item1_2_ofs=$C8
item2_2_ofs=$4
вот и как его там хз вапше
krukovis
24.01.2012, 18:57
ReadProcessMemory(hProcess, ptr(ipbuf+$38), @ipbuf, sizeof(ipbuf), BytesCount);
Не $38, а $38C
Добавлено через 14 минут
хм можеш помочь со смещениям а то я не понял хД особино со смещениями
Вот, лови:
Функция получения имени предмета:
public string parItemName(cell_number)
{
Благодарствую!
кстате че за 2 параметра
osItemPtrStep и adrInventaryCellsStuct???
krukovis
24.01.2012, 20:33
кстате че за 2 параметра
osItemPtrStep и adrInventaryCellsStuct???
osItemPtrStep - шаг чтения указателей = 0x4.
adrInventaryCellsStuct = MemoryManager.ChainReadInt32(adrBaseAdress, 0x1c, 0x34, 0xcac, 0xc); - я назвал эту цепочку как Структура ячеек инвентаря.
Я функции из свойств класса выдрал. Поэтому this - убери.
samosi
24.01.2012, 20:51
:/ меня убило
таким методом он не хочет считивать
case (20 | 27 | 32 | 5 | 10 | 13 | 19 | 31):
а только так
case (20):
case (27):
и т.д а то он мне гад Наименование не определено.
и читает както кривовато хм
Item count: 17
Name Item: Ящик с оружием (5 ур.)
ID Item: 0
WID Item: 0
Distance: 0
Location: 400, 550 ↑0
Name Item: ☆Примитивная булава
ID Item: 0
WID Item: 0
Distance: 0
Location: 400, 550 ↑0
Name Item: ☆Тренировочные бриджи
ID Item: 0
WID Item: 0
Distance: 0
Location: 400, 550 ↑0
Name Item: Малое исцеляющее зелье
ID Item: 0
WID Item: 0
Distance: 0
Location: 400, 550 ↑0
Name Item: Толченая известь
ID Item: 0
WID Item: 0
Distance: 0
Location: 400, 550 ↑0
Name Item:
ID Item: 0
WID Item: 0
Distance: 0
Location: 400, 550 ↑0
и т.д.
krukovis
24.01.2012, 22:40
:/ меня убило
таким методом он не хочет считивать
case (20 | 27 | 32 | 5 | 10 | 13 | 19 | 31):
а только так
case (20):
case (27):
и т.д а то он мне гад Наименование не определено.
и читает както кривовато хм
Добавь после каждого return в переборе select case - брейк.
break;
samosi
25.01.2012, 18:18
Спасибо, теперь вопрос что делают в программе инвентарь если мне надо лут хм ну по функам все какраз таки инвентарь и смотрит и т.д ловыца из инветроря а лут он показует имя пробел хм...
samosi
25.01.2012, 19:14
Кстате не у кого нет офсетов аукциона голда??
krukovis
27.01.2012, 16:29
? +0B60 Duration of life/recall of a pet /Ожидание призыва пета/ непроверено
Подскажите пожалуйста правильное смещение этого параметра.
С меня спасибки :).
Jok3r666
27.01.2012, 21:26
Никто не знает офсет пинга или как его определить вообще?
ЗЫ надпись при наводе на шестеренку(где пинг в игре пишется и сервер) я нашел, но он редко обновляется.
Может пригодится кому нить
ба+1с+34+са8+170+184
HellD
27.01.2012, 22:51
? +0B60 Duration of life/recall of a pet /Ожидание призыва пета/ непроверено
Если я правильно понял, это что то вроде секундомера, который сбрасывается на ноль при призыве и отзыве любого пета...
А значение именно времени до вызова пета... не слышал про такое )
opex90
28.01.2012, 16:16
ЗЫ надпись при наводе на шестеренку(где пинг в игре пишется и сервер) я нашел, но он редко обновляется.
Может пригодится кому нить
ба+1с+34+са8+170+184
не работает, смещение ба+1с+34+са8 ведет на ноль
krukovis
28.01.2012, 18:21
Нашел 2 адреса. Текущий и максимальный кулдаун времени пения текущего скила, если скилл не мгновенный.
В структуре персонажа:
+ 994 - Current Skill Activation CoolDown
+ 998 - Current Skill Activation Max CoolDown
Появляются в момент начала кастования скилла. Я думаю, что клиент их использует для отображения пения скила.
Пользоваться ими для осознания кастуется ли в данный момент скилл - не целесообразно. Удобнее по старинке через параметра ActiveSkill_Ptr = HostPlaerStruct + 0x6F4
Но можно контролировать докастовался ли скилл или был прерван. Например скилл воскрешения питомца.
Проверять можно задав условие "Не прерывался ли скилл (не стало ли ActiveSkill_Ptr = 0) на протяжении времени = максимальному времени пения этого скилла"
yeyebvz
29.01.2012, 02:30
Jump=0047E890*
пол дня потратил, нашел на форуме правильный
Jump := $459D60 ([Ссылки могут видеть только зарегистрированные и активированные пользователи])
=Оленька=
29.01.2012, 13:10
Помогите пожалуйсто с инжектом закрытия окон
procedure BtnPressAs(Btn: PParams); stdcall;
var
PW_Call: Pointer;
PW_BASE_ADDR: dword;
BT_ADDR: dword;
begin
Я полагаю что тут должно быть 00804A80, но функция возможно уже изменилась.
samosi
29.01.2012, 16:25
Подкиньте офсеты аука голда плз.
krukovis
29.01.2012, 16:30
Подсмотрел у semoder значение Кол-во ярости для скилла, добавляю в копилку:
SkillRage = SkillsStruct + (i * 0x4) + 0x4 + 0x4 +0x36 , где i = 0 to ActiveSkillsCount
yeyebvz
29.01.2012, 20:34
Attack=00696D60* нужно заменить на Attack=004523F0
источник [Ссылки могут видеть только зарегистрированные и активированные пользователи]
ссылка исправлена, сори)
BritishColonist
29.01.2012, 21:58
Attack=00696D60* нужно заменить на Attack=004523F0
источник [Ссылки могут видеть только зарегистрированные и активированные пользователи]
вообще-то вот источник ([Ссылки могут видеть только зарегистрированные и активированные пользователи]) ;D
krukovis
31.01.2012, 15:59
Всем привет!
А не подскажите смещение на параметр у лута - "свой" - "чужой" (может персонаж собрать лут или нет).
Choochoo
31.01.2012, 17:57
Не $38, а $38C
Прошу прощения но все равно не работает... Я близок к истерике.....
krukovis
31.01.2012, 19:49
Оконная структура:
Окна
BA+0x1C+0x04+0x18+I+D
Подскажите, пожалуйста, это правильный набор смещений? У меня по этому адресу пусто.
Точнее пусто уже тут BA+0x1C+0x04+0x18
DHouse
31.01.2012, 21:30
Структура перса
$060c - ID призванного ездового пета. =0 если не призван.
Добавлено через 1 час 36 минут
$0760 - ID персонажа, которого держите на руках (или который вас держит)
lcd1232
01.02.2012, 07:32
Есть какие-нибудь структуры пати? Конкретно интересует сколько человек в пати и кто на какой локации.
krukovis
01.02.2012, 07:56
Есть какие-нибудь структуры пати? Конкретно интересует сколько человек в пати и кто на какой локации.
В структуре персонажа:
+06D8 PartyMember, array /Структуры членов группы/
+14 +[i*4], i = 1 to 5
+00C PartyId, dword
Добавлено через 3 часа 15 минут
Вот еще данные по Пати которых нет в нашей ветке:
(Pm - PartyMember )
Проблемма со списком персонажей решилась.. как не знаю пока что сам....
Никому не попадался флаг ПК ?
Пивень
03.02.2012, 01:49
BA +0x1C +0x1C +0x28 +0x14 Count, dword /Количество/
BA +0x1C +0x1C +0x28 +0x18 +(i*0x4) +0x4 /i = 0 - 0x300/
Что-то я в трёх соснах заблудился. Используя эти данные, я получаю количество лута/шахт - оно получается и правильное. Но вот когда я пытаюсь получить описание лута/шахт все выходят нули на этапе i*0x4. В примере 0х0, т.е. я получаю описание первого объекта. Где грабли? оО
Там елементы лежат не по порядку(половина значений I пустые), проверяй id на <> 0 или еще что нибудь и потом собирай всю инфу.
Т.е. (I*4) = 0 может быть что то есть а (I*4) = 4,8,12,16 пусто, затем (I*4) = 20 что то лежит.
VeTaL_UA
03.02.2012, 15:40
Unfreeze function - $00431F02
Норма - TEST AL,AL
Вечно разморожен - MOV AL,1
Вечно заморожен - MOV AL,0
Zoom Address - $00407E40
Норма - JNZ SHORT 00407E45
Неограниченный Zoom - JMP SHORT 00407E45
Пивень
03.02.2012, 20:28
Jok3r666, спасибо, после перебора i все объекты нашлись.
krukovis
03.02.2012, 21:09
Unfreeze function - $00431F02 Норма - TEST AL,AL Вечно разморожен - MOV AL,1 Вечно заморожен - MOV,AL,0
Ну это на первой странице какбэ есть :)
А за зум спасибо, сам бы не нашел - ибо не знаю как искать (м.б. скажешь как, если знаешь, можно в личку) Добавлю в свой патчер :)
Вечно заморожен - MOV,AL,0
Улыбнуло :)
VeTaL_UA
03.02.2012, 21:52
Ну это на первой странице какбэ есть
Unfreeze=00431F02 (84 C0 > B0 01)
Там в байтах, а я в ассемблерных командах записал :D
А за зум спасибо, сам бы не нашел - ибо не знаю как искать
Сам долго искал. Искать по методу жука ([Ссылки могут видеть только зарегистрированные и активированные пользователи]), только искать не sequence of commands
, а All sequence. Там внизу адрес найдёт. Рядом с ним и искал :)
Улыбнуло
Почему же? Иногда это является очень даже полезным :)
krukovis
03.02.2012, 22:01
Почему же? Иногда это является очень даже полезным
Например?
Добавлено через 1 час 17 минут
Вечно заморожен - MOV,AL,0
Да... забыл сразу сказать... запятая лишняя... :)
VeTaL_UA(1)
04.02.2012, 00:03
Например?
Например, когда программа выполняет цепочку действий в клиенте и вмешательство пользователя может навредить этому, удобно заморозить клиент напрочь для предотвращения ошибок. :)
Да... забыл сразу сказать... запятая лишняя... :)
Действительно, допустил ошибку. Зайду с компа - исправлю. :-)
krukovis
04.02.2012, 10:41
удобно заморозить клиент напрочь для предотвращения ошибок.
Да, интересный подход. Но он может напугать юзверя - раз и все почернело. А если операция долгая - юзверь подумает что ему подсунули глючный софт )).
VeTaL_UA
04.02.2012, 11:17
юзверь подумает что ему подсунули глючный софт )).
Тем лучше. Меньше нубских юзверей - меньше нубских вопросов /dgs
krukovis
04.02.2012, 11:24
Меньше нубских юзверей - меньше нубских вопросов
Хороший юзер - мертвый юзер. :pif:/problem
pw.lancer
04.02.2012, 12:19
...
[MORE="Окна"]
BA+0x1C+0x04+0x18+I+D
I (окна, длинна 0x850 байт)
0x2B8 Действия
0x2C0 Игроки и группы
0x2C4 Служба поддержки
0x314 Характеристики персонажа
0x32C Ремонт
0x36C Призыв духа
0x3E8 Помощь
0x40C Инвентарь
0x428 Диалог с нпс
0x438 Домашние животные
0x458 Окно алхимика
0x468 Панель 1-9
0x470 Горячие клавиши
0x4B0 Настройки
0x4C4 Умения
0x50C Системная панель
0x51C Задания
D (данные окна, длинна 0x218 байт)
0x98 WndX, dword
0x9C WndY, dword
0xA0 WndW, dword
0xA4 WndH, dword
0X90 WndO, byte (1-open, 0-close)
...
Пробежался по окнам, адреса верные. Удалось также выцепить оттуда имя класса окна. Однако, не получается найти указатель на список контролов. Может быть, это не единственный список окон? Если у кого есть информация, очень прошу поделиться. Очень хочется заинжектить хотя бы закрытие окна (через пункт "До встречи" или системный "крестик"), ибо в хх перед Эмиссаром не боты не могут через ESC закрыть диалоговое окно с НПС, какое-то оно там особенное (остальные закрываются). А с открытым окном прист не запрыгивает на постамент ни пробелом, ни инжектом..
Кстати, если кому пригодится, офффсет для Class name ptr: 4C.
Ну и сами названия по этому смещению:
Действия 'Win_Action'
Игроки и группы 'Win_ArrangeTeam'
Служба поддержки 'Win_InputString6'
Характеристики персонажа 'Win_Character'
Ремонт 'Win_DamageRep'
Призыв духа 'Win_AddExp'
Помощь 'Win_Help'
Инвентарь 'Win_Inventory'
Диалог с нпс 'Win_NPC'
Домашние животные 'Win_PetList'
Окно алхимика 'Win_Produce'
Панель 1-9 'Win_Quickbar9Va'
Горячие клавиши 'Win_QuickKey'
Настройки 'Win_SettingSystem'
Умения 'Win_Skill'
Системная панель 'Win_Main'
Задания 'Win_Quest'
Оконная структура:
Подскажите, пожалуйста, это правильный набор смещений? У меня по этому адресу пусто.
Точнее пусто уже тут BA+0x1C+0x04+0x18
BA+0x1C+0x18+0x08
krukovis
04.02.2012, 15:31
Очень хочется заинжектить хотя бы закрытие окна
Тут посмотри [Ссылки могут видеть только зарегистрированные и активированные пользователи]
Добавлено через 2 минуты
Однако, не получается найти указатель на список контролов.
WinStruct + 1C8 - Структура контролов.
Более подробно тут [Ссылки могут видеть только зарегистрированные и активированные пользователи]
Vadim_n
07.02.2012, 19:01
Подскажите пожалуйста правильные пути до офсетов для нового клиента?
BaseCall_Address=B27A04
раньше я использовал такие пути, поиск нашего перса:
calba+1C+20+ofset+0 - имя нашего перса (в цикле слажую по 1й букве имя до пустого байта, так как не знаю где найти количество букв в имени)
calba+1C+20+ofset - инфа нашего перса
calba+1C+20+ofset+перобразование по формуле (значение+4000)/10 = x, (значение+5500)/10 = y, (значение/10) = z - координаты нашего перса
поиск мобов и нипов :
calba +1C+8+24+18+(e*4)+(0 i рас)+4+11c (e = от 0 до 768) (i = от 1 до пустой страницы) - WID моба/нипа
(0 i рас) – 0 прибавляю i рас, это вроде переход на другую страницу памяти. Я перебираю страницы пока не дойду до пустой, так как не знаю где найти количество мобов/нипов, обычно страниц выходит до 5ти шт.
Если есть WID то нахожу мне нужную информацию calba+1C+8+24+18+(e*4)+(0 i рас)+4+ofset
отделяю мобов от нипов calba +1C+8+24+18+(e*4)+(0 i рас)+4+B4 (если значение = 6-моб 7-NPC 9-Пет)
поиск персов:
calba+1C+8+20+18+(e*4)+(0 i рас)+4+11c (e = от 0 до 768) (i = от 1 до пустой страницы) - WID других персов
Ну там в формулах много квадратных кавычек, в скобках я написал циклы, я не сильно разбираюсь в правильности написания формул, просто прибавляю не всё подряд а значение по адресу + следующий переход и получаю новый адрес. Ну Вы это знаете. Мне просто понятнее так записывать.
PPL max. HP RBASE+0x1C+0x1C+0x20+0x88+(X*0x4)+0x4C0
Это как теперь 2 раза нужно 1С прибавлять? Мой бот на вб а в эсемблере не разбираюсь, 0x1C это я так понял просто 1С.
Я так понял перебирать по страницам (0 i рас) уже не нужно, все мобы на одной странице, и достаточно просто прочитать 768 адресов 1 страницы?
У меня ещё не получается найти название клана персонажей вокруг. По какой формуле найти название клана перса?
По какой формуле можно найти лут рядом лежащий?
BritishColonist
07.02.2012, 19:15
Для начала обратись к первому посту данной темы, там под спойлерами адреса, если ты вдруг не видел.
А потом рекомендую исправить пост таким образом, чтобы его можно было нормально читать, понимая при этом, чего ты хочешь.
krukovis
07.02.2012, 20:13
Это как теперь 2 раза нужно 1С прибавлять? Мой бот на вб а в эсемблере не разбираюсь, 0x1C это я так понял просто 1С.
Я так понял перебирать по страницам (0 i рас) уже не нужно, все мобы на одной странице, и достаточно просто прочитать 768 адресов 1 страницы?
У меня ещё не получается найти название клана персонажей вокруг. По какой формуле найти название клана перса?
По какой формуле можно найти лут рядом лежащий?
Как будто переводчиком от гугла переводил... У тебя русский язык - не родной?
Choochoo
09.02.2012, 15:59
Если кому то интересно пересчет координат. Сменился коэффициент по оси Y
X (0x3C + 4000)/10
Y (0x44 + 5500)/10
Z (0x40 / 10)
chersanya
09.02.2012, 22:37
Choochoo, а разве были не такие же?
Jok3r666
10.02.2012, 00:21
Если кому то интересно пересчет координат. Сменился коэффициент по оси Y
X (0x3C + 4000)/10
Y (0x44 + 5500)/10
Z (0x40 / 10)
Там все по старому:pandal:
Choochoo
11.02.2012, 09:20
А если чесно не помню уже.. вроде было 4000 и 5000 ровно... Просто в теме не нашел данных и решил выложить.
krukovis
11.02.2012, 09:43
А если чесно не помню уже.. вроде было 4000 и 5000 ровно... Просто в теме не нашел данных и решил выложить.
Не нужно выкладывать непроверенных данных. А за проверенные можно и спасибку получить.
Вот проверенные данные:
Координата viewX= (realX/10+400)
Координата viewZ = (realZ/10)
Координата viewY = (realY/10+550)
Choochoo
12.02.2012, 13:25
Не нужно выкладывать непроверенных данных. А за проверенные можно и спасибку получить.
Вот проверенные данные:
Координата viewX= (realX/10+400)
Координата viewZ = (realZ/10)
Координата viewY = (realY/10+550)
Данные проверенны, я их использую сам. Непроверенное это изменилась ли формула.
lcd1232
12.02.2012, 22:58
Такой интересный вопрос насчет делфи. Если написать просто x,y,z:single;
...
...
...
Label1.Caption:=inttostr(x/10+400) компилятор выпишет ошибку. Но если написать
x,y,z:single;
...
...
...
Label1.Caption:=inttostr(round(x/10+400))То все работает нормально. Как я понимаю функция round переводит число в тип integer?
Update 1.
Кстати, что значат следующие данные?
+099C Time Mining
+09A0 Time Mining Const
Лично у меня показывает 1000.
Update 2.
Также вопрос: как можно узнать стоит ли замок, сколько времени осталось до конца и насколько он стоит?
krukovis
12.02.2012, 23:17
Как я понимаю функция round переводит число в тип integer?
Для ответов на эти вопросы есть Help по делфи, а еще ближе Google.
+099C Time Mining
+09A0 Time Mining Const
Это кулдаун копания и максимальный кулдаун копания ресурсов.
Попробуй посмотреть на эти значения когда копаешь что нибудь.
Jok3r666
13.02.2012, 11:38
Label1.Caption:=inttostr(round(x/10+400))
При делении получается число с точкой (1.11 или 1.00) а это уже не инт а float
ЗЫ замени инттостр на floattostr
sumikot
14.02.2012, 21:45
Подсмотрел у semoder значение Кол-во ярости для скилла, добавляю в копилку:
SkillRage = + (i * 0x4) + 0x4 + 0x4 +0x36 , где i = 0 to ActiveSkillsCount
Вот тут немного не понял - SkillsStruct + (i * 0x4) + 0x4 получается SkillID, а так как это не адрес для дальнейшего смещения, то где я неправ?
SkillsStruct = +107С ?
krukovis
14.02.2012, 22:02
SkillsStruct + (i * 0x4) + 0x4 получается SkillID -это не ID, а указатель на структуру текущего скила. Т.к. скилы все разные, то все подумали, что это ID, но это на самом деле это структура текущего скила - CurrentSkillSturct. Я не смотрел, но там же могут быть показатели "Время каста" и прочее. А ID скилла было всегда тут : ID = SkillsStruct + (i * 0x4) + 0x8.
Добавлено через 2 минуты
SkillsStruct = +107С ?
Да
lcd1232
15.02.2012, 17:11
Reputation: BaseAdress +0x1C +0x34 +0x5C8, dword
HellD
15.02.2012, 20:39
//Сори, не удержался...
найти лут рядом лежащий?
Йода, ты? )
Пивень
18.02.2012, 02:06
BA +218 +4 Count, dword /Количество/
BA +218 +8 +[i*4] + (+0)^J: Clans Struct (I in [0..389])
Что это за (+0)^j?
Какие значения кроме +0 оно может принимать? У меня при любых значениях кроме +0 получается ахинея в результатах, но при этом +0 показывает не все кланы, которые попадались персонажу.
gurin
18.02.2012, 07:22
Что это за (+0)^j?
Какие значения кроме +0 оно может принимать? У меня при любых значениях кроме +0 получается ахинея в результатах, но при этом +0 показывает не все кланы, которые попадались персонажу.
-
(+0)^J - специальный символ, отображающий количество (J) страниц (+0) в связанном списке.
Запись BA +218 +8 +[I*4] + (+0)^J +4 для разных значений J расшифровывается как:
Продолжать, пока не будут найдены все элементы. Элементы неравномерно распределены по всему массиву. Количество элементов можно посмотреть по адресу, указанному в первой строке описания каждой структуры.
Добавлено через 6 минут
Цитата:
Сообщение от sumikot
SkillsStruct + (i * 0x4) + 0x4 получается SkillID
-это не ID, а указатель на структуру текущего скила. Т.к. скилы все разные, то все подумали, что это ID, но это на самом деле это структура текущего скила - CurrentSkillSturct. Я не смотрел, но там же могут быть показатели "Время каста" и прочее. А ID скилла было всегда тут : ID = SkillsStruct + (i * 0x4) + 0x8.
в смысле указатель на структуру текущего скила? там же стот I, что подразумевает перечисление
Пивень
18.02.2012, 10:54
gurin, спасибо. Всё оказалось проще, чем я думал.
Vadim_n
19.02.2012, 11:00
Для начала обратись к первому посту данной темы,
Извините за моё сообщение выше, не заметил скрытого текста с данными.
Спасибо создателям темы!
У тебя русский язык - не родной?
У меня действительно с русским очень плохо.
Подскажите пожалуйста что значит - MobPTargetID (ID для Физ.атаки), MobMTargetID (ID для Маг.атаки), MagAtk /Цель для маг атаки/, PhizAtk /Цель для физ атаки/?
Ещё есть ли Count для количества символов в имени персонажа? PlayerName, wchar*8 (UText / Unicode String) на VB у меня читает по 2 байта ReadToInteger до пустого и иногда получается имя персонажа + ещё какой то текст с игры.
Есть адреса чтобы найти имя клана или ID клана другого персонажа, или как определить клан другого персонажа со структуры кланов?
Есть известные офсеты и адреса или может готовые структуры для аукциона и чата?
HellD
20.02.2012, 10:46
Ещё есть ли Count для количества символов в имени персонажа? PlayerName, wchar*8 (UText / Unicode String) на VB у меня читает по 2 байта ReadToInteger до пустого и иногда получается имя персонажа + ещё какой то текст с игры.
Показал бы как читаешь ) и лучше в теме общения а не тут ) скорей всего косяк где то в коде ) у меня всегда читается на ура, включая русские символы и всякие знаки...(хоть может и не все) )) и никакой лишней инфы ))
Есть адреса чтобы найти имя клана или ID клана другого персонажа
адрес id клана другого, такой же как и своего ) а как найти из него имя клана, вопрос поднимался уже неоднократно.. поройся ) тут дофига по этому поводу ) сам спрашивал даже ))
krukovis
21.02.2012, 07:22
в смысле указатель на структуру текущего скила? там же стот I, что подразумевает перечисление
sumikot спрашивал по поводу значения: SkillsStruct + (i * 0x4) + 0x4 , где i - номер скилла.
На певой странице это значение было обозначено как SkillID, что не верно. Это указатель на описание скилла. В этой структуре лежит значение необходимой ярости, например. Я думаю, если посмотреть на память в виде float чисел, там же лежат и остальные показатели скилла - время пения, кол-во манны и прочие показатели. Сейчас нет желания копаться в этой структуре, т.к. основной нужный показатель - кол-во Ярости (чи) для скилла - уже найден и выложен.
Добавлено через 14 минут
MobPTargetID (ID для Физ.атаки), MobMTargetID (ID для Маг.атаки), MagAtk /Цель для маг атаки/, PhizAtk /Цель для физ атаки/?
Это значения ID цели при кастовании скилла и при физической атаке. Нужно определять на кого в данный момент направлена агрессия моба или персонажа. При проверке совместно с действием (Action = бьет физой, бьет магией, идет, стоит, и т.д.) дает ясную картину что делает моб и на кого направлена его агрессия, в случае агрессивных состояний.
Ещё есть ли Count для количества символов в имени персонажа? PlayerName, wchar*8 (UText / Unicode String) на VB у меня читает по 2 байта ReadToInteger до пустого и иногда получается имя персонажа + ещё какой то текст с игры.
А ты не думаешь освоить VB.Net ? Для .NET программистов сделали классную DLL - PW FrameWork называется. Позволяет абстрагироваться от подобных вопросов и просто считывать данные из памяти. Поищи на форуме - если не найдешь - напиши, я тебе дам ссылку на исходники на форуме и, если нужно будет - дам исходники доработанной ДЛЛ, я добавлял туда чтение ACSII строк (мне для анализа окон было нужно).
Добавлено через 21 минуту
Есть адреса чтобы найти имя клана или ID клана другого персонажа, или как определить клан другого персонажа со структуры кланов?
Используй смещения для СВОЕГО игрока в структуре ЧУЖОГО игрока. Это справедливо не только для кланов. Если обратишь внимание и сравнишь числа - то все смещения одинаковые.
whoami
23.02.2012, 12:17
я добавлял туда чтение ACSII строк (мне для анализа окон было нужно)
вообще-то оно там всегда было... ну, или очень давно. Свойство MemPtr.AString и метод MemPtr.ToAString()
krukovis
23.02.2012, 22:00
вообще-то оно там всегда было... ну, или очень давно. Свойство MemPtr.AString и метод MemPtr.ToAString()
whoami, при всем моем уважении, ты фреймворк дополнял как не для людей. Типо "мне понятно и ладно". Зачем добавлять методы не стандартизированные изначально? Почему нельзя было добавить в том же виде что и TBXin? Ты же грамотный программист и людей программировать учишь, а комментировать код как будто не умеешь. Если можешь - прокомментируй код в дополненном тобой фреймоврке. Честно признаться, знаний не хватает осознать все что ты написал, многим не пользуюсь, потому что просто не знаю что есть и приходится "изобретать велосипеды". Очень тебя прошу - дооформи все и выложи где нибудь здесь или на каком нибудь специализированном для этого сервисе вроде codeproject.com. Думаю, что не я один скажет тебе за это огромное спасибо.
Perimetr
27.02.2012, 21:28
как узнать кого смотрит игрок рядом. смещение маг-атаки 6F8 в структуре игроков пробывал - не то.
krukovis
28.02.2012, 07:54
как узнать кого смотрит игрок рядом. смещение маг-атаки 6F8 в структуре игроков пробывал - не то.
На сколько я знаю, узнать на кого смотрит чужой персонаж - нельзя, если он не в пати. Можно узнать на кого направлен его скилл и то, только на период кастования. Это я выкладывал уже. Продублирую:
Для PhizTarget для чужих игроков значения нет.
Для MagicTarget нашел + &H6F8
Если конечно, этот чужой персонаж не находится с твоим в одной команде.
Perimetr
01.03.2012, 07:14
Странно.. должно же быть где-то значение, указывающее на то кто в таргете (помечен, выделен) у персонажа в локации, ведь у мобов это есть. у своего персонажа - есть, а у другого игрока - данных в клиенте разве нет..
я все-таки попробую поискать, давно уже не лазил по клиенту.
Может кто знает как определить - ПК персонажа рядом с собой - вроде там какие-то биты в байте - но по какому смещению в структуре игроков рядом ???
krukovis
01.03.2012, 07:17
ведь у мобов это есть. у своего персонажа - есть, а у другого игрока - данных в клиенте разве нет..
У мобов - нет и у чужих персов нет, пока они не агрессивны. Или пока персонаж не в твоей команде.
DHouse
04.03.2012, 00:25
+5B8 wid одетого джинна, например 23753 - Тай Бо [Ссылки могут видеть только зарегистрированные и активированные пользователи] 23752 - Тай Инь и т.д.
Добавлено через 8 минут
Кста, заметил тенденцию, что при смене джинна список доступных скиллов не обновляется, а дописывается. Т.е. был один джин например со Словом и Сферой, одели другого с Защитником и Проклятьем князя, в итоге в памяти клиента будут все 4 скилла. Радует, что при попытке заюзать через пакеты "отсутствующий" скилл управление над клиентом не теряется :) Надо думать как определить с какого смещения хранятся валидные скиллы.
Arvol
06.03.2012, 14:29
Коллеги - помогите разобраться...
+0368 BuffsArray /Список баффов/
+ [I*2] Buffs, dword
+036C BuffsCnt, dword /Количество баффов/
+036C - судя по Cheat Engine - это количество бафов навешанных на перса.
Не могу разобраться с +0368+ [I*2].
При первом использовании первого бафа в +0368+ [0*2] нормально появляется его тип. Но при пропадании бафа тип остается в ячейке памяти.
Далее в следующих ячейках массива появляется информация, но непонятно какая. Это и не тип бафа и не указатель. Затем - почему умножается на 2? Во всех остальных массивах умножается на 4 из-за типа данных DWord.
Буду благодарен за любые подсказки.
krukovis
06.03.2012, 14:32
[I*2] Buffs, dword
То, что шаг в 2 байта уже говорит о том, что тип не Dword, а просто word или int16. Или не знаю как в вашем языке, но нужно понимать, что число занимает только 2 байта.
Arvol
06.03.2012, 14:38
Я это прекрасно понимаю :) Однако, данные, которые там появляются не пойму, как интерпретировать.
krukovis
06.03.2012, 14:54
Я это прекрасно понимаю Однако, данные, которые там появляются не пойму как интерпритировать.
Для начала нужно научиться читать 2 байта, это важно. Не слышал, что данные не исчезают после окончания действия бафа.
данные, которые там появляются не пойму как интерпритировать.
Это ID бафа. Где то на форуме вроде выкладывали список ID + Имя бафа для последней версии клиента - поищите. В сборке configs.pck (если распотрошить) можно найти файл Buffs.txt, там находится актуальная информация. Вот тут можно посмотреть распарсенный файл для клиента 1.3.6 [Ссылки могут видеть только зарегистрированные и активированные пользователи] Можно читать эту информацию прямо из памяти. Но я не знаю смещений.
Arvol
07.03.2012, 21:48
Благодарю, krukovis.
Вроде разобрался.
По адресу:
+0368 BuffsArray /Список баффов/
+ [I*2] Buffs, 2byte
лежит не указатель на примененный скил, а указатель на иконку статуса, наложенного на перса (баф, дебаф или иное).
Возник вопрос :)
Может кому известно, как связывается ID статуса наложенного на перса с ID примененного скила?
krukovis
07.03.2012, 21:55
лежит не указатель на примененный скил, а указатель на иконку статуса, наложенного на перса (баф, дебаф или иное).
А это никто и не утверждал. И в файле ID не скиллов а наложенных бафов.
Может кому известно, как связывается ID статуса наложенного на перса с ID примененного скила?
Поддерживаю. Тоже интересно было бы узнать это. Упростило бы функцию бафа.
BritishColonist
09.03.2012, 12:14
В полезности следующих оффсетов я не уверен, но всё же :D
PlayerStructStart
+3BC - (dword) GenieRotationTimer // таймер, следящий за отображением джинна или фейки.
+3C0 - (dword) GenieRotationTimerMax // тут максимальное значение этого таймера. можно изменять.
+3C4 - (byte/bool) IsGenieVisible? // если 1/true, то вокруг игрока летает джинн (если есть), в противном случае - фейка (опять же, если есть).
A1B708 - (float) GenieFadePower (константа, равная 0.2) // коэффициент скорости затухания/появления джинна/фейки; чем больше - тем менее плавный переход между джинном и фейкой.
DHouse
10.03.2012, 14:17
Может кому известно, как связывается ID статуса наложенного на перса с ID примененного скила?
Никак, разные скиллы могут весить одинаковые бафы. Больше интересует само смещение на данные, используемого в данный момент скилла, в массиве игроков. Визуально же отображается что на тебя кастуют, значит и данные должны передаваться.
Добавлено через 5 часов 50 минут
Крайне интересна информация о том как считать энергию и физическую силу джинна, поделитесь кто знает.
Добавлено через 8 часов 22 минуты
отбой, сам нашел:
+3CC +AC - текущая энергия
+3CC +B0 - максимальная энергия
+3CC +B8 - текущий заряд
BritishColonist
14.03.2012, 21:03
HostPlayerStruct
+708 +C +0 +0 +0 = (wchar_t) OverheadName // имя игрока, отображающееся над головой
tianddu
14.03.2012, 22:34
а есть инфа о заюзанности соски у игрока(иименно у себя)?
krukovis
15.03.2012, 06:29
а есть инфа о заюзанности соски у игрока(иименно у себя)?
+0A5C WaitChemistry
+0A6C WaitSos
Смотреть в структуре игрока. Это откаты химии и сосок. Если не 0, то откатывается, значит заюзали.
skew222
30.03.2012, 21:08
а как узнать оффсеты хп мп и лвл перса на сервере axesas/
krukovis
31.03.2012, 09:55
а как узнать оффсеты хп мп и лвл перса на сервере axesas/
так же как и на руофе. Узнай базовый адрес, а остальные смещения возьми с первой страницы.
вот ссылка на гайд [Ссылки могут видеть только зарегистрированные и активированные пользователи]
Perimetr
02.04.2012, 22:55
Я так читаю умения и их откаты, может есть более простой способ ?
см. вложение..
в первой вырезке - проверка с записью в файл прямо при работе бота,
во второй функции чтения значений..
krukovis
03.04.2012, 08:09
в первой вырезке - проверка с записью в файл прямо при работе бота,
А зачем в файл записываешь? У тебя вроде не портянка в три листа, поясни где тебе ощущается несовершенство и в какой части ты бы хотел что то упростить? И обсуждать это нужно в разделе Общение разработчиков. Сюда выкладываются готовые смещения или запросы об их поиске.
whoami
03.04.2012, 15:42
На сколько я знаю, узнать на кого смотрит чужой персонаж - нельзя, если он не в пати.
...
Если конечно, этот чужой персонаж не находится с твоим в одной команде.
да и даже если в пати, то не делая ассиста - тоже нельзя, к сожалению =( а то можно было бы грамотные автоассисты делать
Perimetr
03.04.2012, 19:18
Запись в файл для просмотра состояния умения - его времени отката, например при откате в 60 сек. там в листинге будет стоять время меньшее 60 сек. - это гоаорит о том, что смещение действительно показывает - откат, но вот время действия умения к примеру - Наряд из цветов у Дру - 5 минут, я его считаю по таймеру, а где оно действительно лежит - так и не нашел, хоть я и указываю в коде смещение к времени работы умения - я им не пользуюсь, т.к. непонятно - что там происходит. Поэтому я и спросил - как делаете - вы ? Может можно как-то еще узнать, что умение - отработало ?
Добавлено через 37 минут
Еще вопрос..
Клиент всегда знает каким цветом отображать имена над головой персонажей, стоит нашему Персу оглянуться - как всех видно, даже ненадо наводить указатель мыши на играков.
Где же лежит этот параметр - (может быть кто знает по какому смещению). Интересусь т.к. ПК-игроки нападают неожиданно, когда мы например копаем ресы или бъем кучку мобов, неплохо-бы было, если Бот оповещал о игроках с красными никами в локации. Это нужно и самим ПК-игрокам, т.к. на них тоже могут нападать.
krukovis
03.04.2012, 22:29
да и даже если в пати, то не делая ассиста - тоже нельзя, к сожалению =( а то можно было бы грамотные автоассисты делать
Я не дела автоасистера для игроков. Но почему то думал, что инжект асиста должен вычислять ID цели у члена пати и устанавливать это ID в цель моего персонажа. И соответственно полагал, что цепочку смещений можно выдернуть из этого инжекта. Там другой принцип?
Добавил:
============
Раньше в инжекте Асиста была функция:
0044ED63 |. E8 487D1A00 CALL elementc.005F6AB0
Я не знаю какой сейчас инжект асиста и какая там функция.
Но по логике вещей эта функция и вычисляла ID цели у члена пати, наверно.
============
Добавлено через 21 минуту
Запись в файл для просмотра состояния умения - его времени отката, например при откате в 60 сек. там в листинге будет стоять время меньшее 60 сек. - это говорит о том, что смещение действительно показывает - откат,
Тут мне кажется можно обойтись без файла:
Есть 2 параметра в структуре скилла:
+10 SkillCoolDown
+14 SkillMaxCoolDown
SkillCoolDown - убывающий таймер показывающий сколько еще осталось до отката скилл. Если = 0, то скилл откатился.
SkillMaxCoolDown - максимальный показатель таймера.
Поэтому что понять сработал ли скилл - смотрим на SkillCoolDown - если он не 0 - скилл сработал и откатывается. Если 0 - откатился - можно использовать снова.
но вот время действия умения к примеру - Наряд из цветов у Дру - 5 минут, я его считаю по таймеру, а где оно действительно лежит - так и не нашел
Этот параметр сам долго искал - не нашел. Подвешивал вопрос, но либо народ знает но молчит, либо молчит потому что не знает. Я предполагаю что этот параметр где то рядом с Яростью в структуре скилла :
выдержка с первой страницы:
+107С SkillArray /Массив умений/
+[I*4] -
+4 - CurrentSkillSturct
+4 +4 +0x36 SkillRage /Количество ярости для скила/
+4 +4 +??? - где то рядом с Яростью возможно лежит показатель кул-дауна бафа :)
Но как я сказал так и не нашел. И добавил просто в настройку использования бафов время через которое делать ребаф.
Клиент всегда знает каким цветом отображать имена над головой персонажей, стоит нашему Персу оглянуться - как всех видно, даже не надо наводить указатель мыши на игроков.
Это называется Флаг ПК. И мне кажется его тут выкладывали где то. Или так же спрашивал кто то... не помню. Попробуй в этой ветке поискать.