ClanName персонажей рядом можно найти оффсетами или только ID? Не могу найти просто имена кланов. Остальное, как то имена самих игроков, хп и т.д. нашел.
Последний раз редактировалось scitelz; 20.01.2014 в 09:40.
ClanName персонажей рядом можно найти оффсетами или только ID? Не могу найти просто имена кланов. Остальное, как то имена самих игроков, хп и т.д. нашел.
У игрока в структуре айди + название смешаное с должность...
Отдельно есть список айди + клан.
Офсетов в текущих реалиях не знаю) но списки никуда не пропали...
пасиб, как время выделю подетальнее поковыряюсь с СЕ
Добавлено через 2 часа 33 минуты
а и кстати эти функции (см. спойлер) на данный момент работают или нет? если передавать параметры которые выдает программа WorldID, которую тут выкладывали - возвращает пустые строки
// Чтение имени персонажа из хеша по его ID
function ReadUserName(UserID:LongWord): String;
var
Tmp, Handle: Cardinal;
p, p2 : LongWord;
hash: LongWord;
j: Cardinal;
tm: Cardinal;
BytesRead: SIZE_T;
TmpWCN: array [0..9] of WideChar;
Name: UnicodeString;
begin
Handle := OpenProcess(PROCESS_VM_READ, false, frmMain.ProcessId);
if Handle > 0 then
try
ReadProcessMemory(Handle, Pointer($00C38B6C), @Tmp, 4 , BytesRead);
ReadProcessMemory(Handle, Pointer(Tmp + $1C), @p, 4 , BytesRead);
ReadProcessMemory(Handle, Pointer(p + $4C), @hash, 4 , BytesRead);
ReadProcessMemory(Handle, Pointer(p + $44), @p, 4 , BytesRead);
j := UserId mod hash;
ReadProcessMemory(Handle, Pointer(p + j * 4), @p, 4 , BytesRead);
while(p <> 0) do
begin
tm := 0;
ReadProcessMemory(Handle, Pointer(p + $8), @tm, 4 , BytesRead);
if (tm = UserId) then
begin
ReadProcessMemory(Handle, Pointer(p + $4), @p2, 4 , BytesRead);
ReadProcessMemory(Handle, Pointer(p2 + $0), @p2, 4 , BytesRead);
ReadProcessMemory(Handle, Pointer(p2 + $0), @TmpWCN, 32 , BytesRead);
Name := TmpWCN;
end;
ReadProcessMemory(Handle, Pointer(p), @p, 4 , BytesRead);
end
finally
CloseHandle(Handle);
end;
Result := Name;
end;
а что самое смешное дней 5 назад по WID имя перса мне возвращалось нормально...никаких вроде бы изменений я не делал.
Но основное, с чем бы я хотел понудеть еще касается СЕ...если в СЕ я ищу имя персонажа/клана (в общем строковое значение).....то ищу я его как 4 байта точное значение в юникод символах???...с СЕ ранее знаком был лишь косвенно, уж простите за занудство.
Допустим имя игрока playersss
По таблице юникода это
50_6C_61_79_65_72_73_73_73
естественно без подчеркиваний, однако, поиск выбивает мне 0 вариантов.
Либо надо переходить сначала к структуре игрока и оттуда идти далее?
Последний раз редактировалось scitelz; 22.01.2014 в 16:28.
Причина: Добавлено сообщение
В юникоде это будет во первых не так...
а вот так(актуально для англицкого, для прочих языков второй байт не нулем будет):
50_00_6C_00_61_00_79_00_65_00_72_00_73_00_73_00_73 _00
Это по той причине что юникод хранит значение не в 1 байте а в 2х.
А вообще зачем этот геморой? попробуйте потыкать в программе(СЕ) менюшки) там все предельно просто...
Пример во вложении...
Листал тему но так и не нашел, может кому будет полезно.
Структура NPC, моба, пета (упорядоченный массив)
BA+0x1C+0x1C+0x24+0x58+(i*0x4) /i = 1 - Count/
Вообще не плохо было бы если бы шапку обновили. Ниже ссылки на посты с этой темы, опять же может кому полезно будет, ибо я убил не один час на поиск.
Листал тему но так и не нашел, может кому будет полезно.
Структура NPC, моба, пета (упорядоченный массив)
BA+0x1C+0x1C+0x20+0x58+(i*0x4) /i = 1 - Count/
...не совсем понял причину удаления своего сообщения. Вроде я не просил искать мне оффсеты... Ну да ладно.
В общем, цепочка до структуры мобов/NPC, указанная в первом посте (BA +0x1C +0x1C +0x24 +0x1C +(i*0x4) +0x4), нифига не работает.
Правильная выглядит так: BA +0x1C +0x1C +0x24 +0x58 +(i*0x4) /i=0 - .../
(РуОф 1.5.0)
Или я чего-то недопонимаю?
И, опять-таки, почему на структуру игроков также указаны две разные цепочки адресов, тогда как у меня получается работать только со второй?
Это ошибка в том посте или я что-то делаю не так?
BA+0x1C +0x1C +0x20 +0x94 +(i*0x4) /i = 1 - Count/ - работает
BA+0x1C +0x1C +0x20 +0x1C +(i*0x4) +0x4 /i = 0 - 0x300/ - не хочет