Регистрация Главная Сообщество
Сообщения за день Справка Регистрация

Имя клана по ID (Delphi - / C# +)

-

Общение разработчиков

- Программирование для Perfect World, общение и обсуждене разработок

Ответ
 
Опции темы
Старый 18.08.2014, 22:19   #1
 Разведчик
Аватар для scitelz
 
scitelz никому не известный тип
Регистрация: 25.01.2013
Сообщений: 13
Популярность: 10
Сказал(а) спасибо: 7
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Имя клана по ID (Delphi - / C# +)

подскажите пожалуйста, точнее ткните носом опорукого, функция получения имени клана по его ID. ID ищется нормально в обоих случаях, а вот имя в Delphi не могу получить....то ли ночь, то ли отсутствие головного мозга...ну или покажите рабочую функцию для Delphi.
C#(рабочая)
Код:
public static string GetClanName(int clanId)
        {
            Int32 p1, p2, p3;
            char[] str = new char[32];
            p1 = MemoryManager.ReadInt32(0x0C9DFAC);
            p1 = MemoryManager.ReadInt32(p1 + 0x248);
            p2 = MemoryManager.ReadInt32(p1 + 0x14);
            p1 = MemoryManager.ReadInt32(p1 + 0xC);
            p3 = clanId % p2;
            p1 = MemoryManager.ReadInt32(p1 + p3 * 0x4);
            while (p1 != 0)
            {
                p3 = MemoryManager.ReadInt32(p1 + 0xC);
                if (p3 == clanId)
                {
                    p1 = MemoryManager.ReadInt32(p1 + 0x8);
                    p1 = MemoryManager.ReadInt32(p1 + 0x4);
                    string s = MemoryManager.ReadString(p1, 32);
                    p1 = 0;
                    return s;
                }
                else
                {
                    p1 = MemoryManager.ReadInt32(p1);
                }
            }
            return "noclan";
        }
Delphi/RadXE5 (не хочет заводиться, все время выкидывает из цикла и видит перса ноклан)
Код:
function ReadClanName(ClnID:LongWord): String;
var
  p1, p2, p3 : int32;
  Tmp: array [0..9] of WideChar;
  NoB : Size_T;
  ss : unicodestring;
begin
    ReadProcessMemory(hProcess,Pointer(BaseAddress),@p1,4,nob);
    ReadProcessMemory(hProcess,Pointer(p1+$248),@p1,4,nob);
    ReadProcessMemory(hProcess,Pointer(p1+$14),@p2,4,nob);
    ReadProcessMemory(hProcess,Pointer(p1+$C),@p1,4,nob);
    p3 := ClnID mod p2;
    ReadProcessMemory(hProcess,Pointer(p1+(p3*$4)),@p1,4,nob);
    while p1<>0 do begin
      ReadProcessMemory(hProcess,Pointer(p1+$C),@p3,4,nob);
      if ( p3 = ClnID ) then begin
        ReadProcessMemory(hProcess,Pointer(p1+$8),@p1,4,nob);
        ReadProcessMemory(hProcess,Pointer(p1+$4),@p1,4,nob);
        ReadProcessMemory(hProcess,Pointer(p1),@Tmp,32,nob);
        ss := Tmp;
        p1 := 0;
        result := ss;
      end else ReadProcessMemory(hProcess,Pointer(p1),@p1,4,nob);
    end;
    result := ' - ';
end;
  Ответить с цитированием
Старый 18.08.2014, 23:42   #2
-= Мастер Света =-
 Рыцарь-капитан
Аватар для Ginrey
 
Ginrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака НоррисаGinrey троюродный дядя Чака Норриса
Регистрация: 14.06.2012
Сообщений: 511
Популярность: 7566
Сказал(а) спасибо: 4
Поблагодарили 181 раз(а) в 88 сообщениях
 
По умолчанию Re: Имя клана по ID (Delphi - / C# +)

а воспользоваться великим дебагером пробовали? в XE5 он хоть и тормознутый, но адекватно работает. Ставьте бряк на точку входа в цикл и смотрите какие данные прогоняются, вполне вероятно что переменная hProcess неверная, так как Delphi любитель сбрасывать ее, а быть точнее открытый процесс
________________
Хотите как то отблагодарить за помощь?
Не стесняйтесь нажимайте "Спасибо"

Делаю программы на заказ, по всем вопросам в скайп: Ginrey2
  Ответить с цитированием
Старый 19.08.2014, 08:12   #3
 Пехотинец
Аватар для _DVD_
 
_DVD_ лучик света в грозовом небе_DVD_ лучик света в грозовом небе_DVD_ лучик света в грозовом небе_DVD_ лучик света в грозовом небе_DVD_ лучик света в грозовом небе_DVD_ лучик света в грозовом небе_DVD_ лучик света в грозовом небе
Регистрация: 17.09.2010
Сообщений: 66
Популярность: 701
Сказал(а) спасибо: 32
Поблагодарили 63 раз(а) в 46 сообщениях
 
По умолчанию Re: Имя клана по ID (Delphi - / C# +)

Цитата:
Сообщение от scitelzПосмотреть сообщение
Код:
        ReadProcessMemory(hProcess,Pointer(p1),@Tmp,32,nob);

Код:
ReadProcessMemory(hProcess,Pointer(p1+$0),@Tmp,32,nob);
и имена переменных лучше не коверкать
NoB : Size_T; .... nob

а и result := ' - '; у тебя всегда возвращает "-"
________________
© Mel

Последний раз редактировалось _DVD_; 19.08.2014 в 08:14.
  Ответить с цитированием
Пользователь сказал cпасибо:
scitelz (20.08.2014)
Старый 19.08.2014, 11:22   #4
 Разведчик
Аватар для scitelz
 
scitelz никому не известный тип
Регистрация: 25.01.2013
Сообщений: 13
Популярность: 10
Сказал(а) спасибо: 7
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Имя клана по ID (Delphi - / C# +)

разобрался, данная функция работоспособна на текущей версии руоффа. (компилировалось на Rad XE5)

Код:
function ReadClanName(ClnID:DWord): WideString;
var
  p1, p2, p3 : DWord;
  NoB : Size_T;
begin
 p1 := PwReadInt32(BaseAddress);
 p1 := PwReadInt32(p1 + $248);
 p2 := PwReadInt32(p1 + $14);
 p1 := PwReadInt32(p1 + $C);
 p3 := ClnID mod p2;
 p1 := PwReadInt32(p1 + p3*$4);

  while (p1 <> 0) do
  begin
     p3 := PwReadInt32(p1 + $C);
     if p3 = ClnID then
       begin
         p1 := PwReadInt32(p1 + $8);
         p1 := PwReadInt32(p1 + $4);
         Result := PwReadStr(p1,32);
         p1 := 0;
     end
     else  p1 := PwReadInt32(p1+$0);
  end;
end;

Последний раз редактировалось scitelz; 19.08.2014 в 12:14. Причина: Добавлено сообщение
  Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Руководство] Настраиваем Delphi 2010/XE, чтобы она выглядела как Delphi 7 RifmoGlas Pascal/Delphi 2 09.02.2013 13:09
[Информация] Помощь в Delphi 7 и в других версиях Delphi Babls77 Pascal/Delphi 4 03.11.2011 21:27
[Обсуждение] кач клана #ТОПОР# Общение и обсуждение, архив Point Blank 2 21.07.2011 00:32
[Услуги] Качаем очки клана Капитан Какао Point Blank 0 15.06.2011 17:24

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 10:31.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net