Register for your free account! | Forgot your password?

Go Back   elitepvpers > MMORPGs > Perfect World
You last visited: Today at 18:42

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Rus. server

Discussion on Rus. server within the Perfect World forum part of the MMORPGs category.

Reply
 
Old 03/27/2010, 18:21   #1576
 
GrieVeR-13's Avatar
 
elite*gold: 0
Join Date: Jul 2009
Posts: 60
Received Thanks: 84
А зачем тебе знать этот ID?
Если атакует тебя, то таргет сам берется, если чужого персонажа (наверное, пишешь анти помощь окружающим?), то достаточно простого флага
Конечно, сам таргет не ставится, если бьют пета, но как только ты его вылечишь, моб переагрится на тебя.
GrieVeR-13 is offline  
Old 03/27/2010, 18:42   #1577
 
elite*gold: 0
Join Date: Dec 2009
Posts: 57
Received Thanks: 24
я пишу баффера-помощника. оказывается есть еще одно смещение,указывающее на ячейку памяти, где находится ид ударившего магией. а знать нужно потому что в это время у мну в таргете член пати, которого я лечу. соответственно возникает ситуация- мну бьют магией, я его не вижу, соответственно никаких мер не предпринимаю, и рано или поздно оказываюсь чуть-чуть мертвым. а так прикольно получается- моб еще не ударил- а я уже знаю ,если что- сваливаю.
gen-ostr is offline  
Old 03/28/2010, 20:38   #1578
 
GrieVeR-13's Avatar
 
elite*gold: 0
Join Date: Jul 2009
Posts: 60
Received Thanks: 84
И что же ты утаиваешь это смещение?) Показывай)
GrieVeR-13 is offline  
Old 03/28/2010, 22:52   #1579
 
elite*gold: 0
Join Date: Dec 2009
Posts: 57
Received Thanks: 24
Quote:
Originally Posted by slavapil View Post
я особо не копал, но вроде:

[BA] + 1C + 20 + 354 - указатель на масив Id-ов (wordы)
[BA] + 1C + 20 + 358 - количество наложенных бафов (dword)
что-то не получается у меня получить указатель на массив . помогите разобраться.если можно на пальцах.


вот смещения
DWORD MobAtackIDFiz = 0x2C4; // Смещение к адр.Прицела Моба ID цели Моба (физ урон)
DWORD MobAtackIDMag = 0x2C8; // Смещение к адр.Прицела Моба ID цели Моба -(маг урон)
gen-ostr is offline  
Thanks
1 User
Old 03/29/2010, 08:34   #1580
 
elite*gold: 0
Join Date: Sep 2009
Posts: 13
Received Thanks: 13
Quote:
Originally Posted by gen-ostr View Post
что-то не получается у меня получить указатель на массив . помогите разобраться.если можно на пальцах.
Code:
procedure Bafs;
Var
  fCount, offs, PlBase,Read: cardinal;
  fW:word;
  Str:string;
const
  PW_BASE_ADDRESS = $0098ADDC;
Begin
  //Бафы
  ReadProcessMemory(hProcess, pointer(PW_BASE_ADDRESS), @offs, 4, Read);
  ReadProcessMemory(hProcess, pointer(offs + $1C), @offs, 4, Read);
  ReadProcessMemory(hProcess, pointer(offs + $20), @offs, 4, Read);
  ReadProcessMemory(hProcess, pointer(offs + $358), @fCount, 4, Read);
  ReadProcessMemory(hProcess, pointer(offs + $354), @PlBase, 4, Read);

  Str:='';

  while fCount>0 do
  begin
    ReadProcessMemory(hProcess, pointer(PlBase + 2*fCount), @fW, 2, Read);
    Str:=Str+IntToStr(fW)+';';
    Dec(fCount);
  end;

  Form1.Edit15.Text:= Str;

End;
вот код
slavapil is offline  
Thanks
1 User
Old 03/29/2010, 14:22   #1581
 
elite*gold: 0
Join Date: Jun 2009
Posts: 15
Received Thanks: 5
Люди, подскажите пожалуйста, как можно найти цепочку оффсетов для начала блока данных о мобе. Если это уже обсуждалось, пожалуйста скажите номер поста или примерно страницы. Так же мне очень бы хотелось узнать как самому находить оффсеты для каких то значений например о персонаже, если я знаю оффсет для начала блока. Тоесть допустим мы имеем [BA] + 20, а как мы дальше узнаем, что допустим + 464 - это HP, а 468 это MP и т.д.
TBXin is offline  
Old 03/29/2010, 16:29   #1582
 
V3ryN1c3's Avatar
 
elite*gold: 0
Join Date: Jul 2009
Posts: 240
Received Thanks: 58
okay? xD
V3ryN1c3 is offline  
Old 03/30/2010, 18:12   #1583
 
elite*gold: 0
Join Date: Dec 2009
Posts: 57
Received Thanks: 24
Помогите разобраться с массивом баффов, которые наложены на перса.По +354 есть этот массив, но ИД наложенных бафов отличается от ИД, которое в описателе скила.
как я понял, там 2-х байтовые числа. кроме того, к примеру, тот же "совет бессмертного" накладывает сразу два баффа. Просто хочу сделать ребафф не по таймеру, а по наличию-отсутствию баффа.( после смерти ведь баффы сбрасываются)
Да и антистан в нужный момент тоже не помешал бы.
gen-ostr is offline  
Old 03/31/2010, 07:26   #1584
 
GrieVeR-13's Avatar
 
elite*gold: 0
Join Date: Jul 2009
Posts: 60
Received Thanks: 84
Составь таблицу с ID бафов. Как вариант.)
Поздравьте меня, в течении 4-х долгих суток фарма в 4 окна удалось насобирать на феню.
И сразу же обнаружилось ряд недостатков.
Например, этот петух жареный, как и все летающие петы, постоянно застревает в земле. Поэтому приходится каждый раз жать мышкой "следовать", что совсем не удобно.
Появляется ряд вопросов: есть ли у кого инжект кнопки следовать, стоять, и желательно атаки и скиллов пета? Альт+1 тянуться использовать не удобно, а через PostMessage реализовать так и не удалось..
GrieVeR-13 is offline  
Old 03/31/2010, 09:31   #1585
 
elite*gold: 0
Join Date: Dec 2009
Posts: 57
Received Thanks: 24
поздравляю. как вариант- используй атаку с воздуха, после каждой атаки поднимайся немного над землей. в данное время усиленно копаю в сторону функции "помощь в атаке" (такое же действие как идти к.. следовать..) а через PostMessage реализовать можно, только ведь есть инжект "атака петом". адрес где-то пробегал. вок как сделаю помощь в атаке - тоже займусь скилами Пэта.......
gen-ostr is offline  
Old 03/31/2010, 13:59   #1586
 
elite*gold: 0
Join Date: Sep 2009
Posts: 13
Received Thanks: 13
копайте тут $004bfb90 и $005b7ed0
slavapil is offline  
Old 03/31/2010, 17:11   #1587
 
GrieVeR-13's Avatar
 
elite*gold: 0
Join Date: Jul 2009
Posts: 60
Received Thanks: 84
Неудобно перед каждым мобом прыгать) Хотя если действительно с воздуха бить...и друидкой ничего не делать.. Ведь феня убивает в два раза быстрее чем хозяйка.
На счет PostMessage, пример выкладывал AlexGD, якобы рабочий.. Но этот код даже эскейп не посылает).. не говоря уже об Альт.
GrieVeR-13 is offline  
Old 03/31/2010, 17:33   #1588
 
elite*gold: 0
Join Date: Dec 2009
Posts: 57
Received Thanks: 24
чтобы передать Альт+1 надо PostMessage со всеми параметрами передавать и составить правильно маску флагов. PostMessage реально любую комбинацию передавать.
Посмотри на исходниках.ру. там даже с примерами

slavapil. не сочти за наглость, но мож поделишся кодом? хотя бы инфой что и куда запихивать?
gen-ostr is offline  
Old 03/31/2010, 18:31   #1589
 
GrieVeR-13's Avatar
 
elite*gold: 0
Join Date: Jul 2009
Posts: 60
Received Thanks: 84
Quote:
Originally Posted by AlexGD View Post
Ну, блин, не думал, что такой гемор будет с отправкой кнопочек клиенту. Причем пока всякие циферки и Ф-ки отправлял - все отлично было. А вот захотелось мне сделать процедуру экстренного свала из под огня. Ну, говорю, клиент . Жмакни мне тильдочку. А он мне в ответ - ты чо - сдурел шоли? Я тебе чо - текстовый редактор тильдочки жмакать? И вот тут у танка отвалилась башня. То нажимает, то не нажимает, то язык ему не тот. и т.д. и т.п. Короче проимелся я более 10 часов...

Вот вам результат... Может кому полезно будет...

Code:
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// ~~~ procedures to send key pressing to client
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
procedure TaPWT.SendKey(aWindowHandle: HWND; aPWThreadID: Cardinal; Key: Word; const Shift: TShiftState; SpecialKey, EngLayout: Boolean);
type
  TBuffers = array [0..1] of TKeyboardState;
var
  pKeyBuffers: ^TBuffers;
  lParam: LongInt;
  Layout, tLayout: Cardinal;
  i: integer;
begin
  if EngLayout then
  begin
    Layout := LoWord(GetKeyboardLayout(aPWThreadID));
    PostMessage(aWindowHandle, WM_INPUTLANGCHANGEREQUEST, 0, $00000409);
  end;
  Sleep(20);

  AttachThreadInput(aPWThreadID, GetCurrentThreadId, true);
  sleep(20);

  pKeyBuffers := nil;
  lParam := MakeLong(0, MapVirtualKey(Key, 0));

  if SpecialKey then
    lParam := lParam or $1000000;

  New(pKeyBuffers);
  try
    GetKeyboardState(pKeyBuffers^[1]);
    FillChar(pKeyBuffers^[0], SizeOf(TKeyboardState), 0);

    if ssShift in Shift then
      pKeyBuffers^[0][VK_SHIFT] := $80;
    if ssAlt in Shift then
    begin
      pKeyBuffers^[0][VK_MENU] := $80;
      lParam := lParam or $20000000;
    end;
    if ssCtrl in Shift then
      pKeyBuffers^[0][VK_CONTROL] := $80;

    SetKeyboardState(pKeyBuffers^[0]);
    if ssAlt in Shift then
    begin
      PostMessage(aWindowHandle, WM_SYSKEYDOWN, Key, lParam);
      PostMessage(aWindowHandle, WM_SYSKEYUP, Key, lParam or $C0000000);
    end
    else
    begin
      PostMessage(aWindowHandle, WM_KEYDOWN, Key, lParam);
      PostMessage(aWindowHandle, WM_KEYUP, Key, lParam or $C0000000);
    end;
    sleep(50);
    Application.ProcessMessages;

    SetKeyboardState(pKeyBuffers^[1]);
  finally
    if pKeyBuffers <> nil then
      Dispose(pKeyBuffers);
  end;

  AttachThreadInput(aPWThreadID, GetCurrentThreadId, false);
  sleep(20);

  if EngLayout then
    for I := 1 to 10 do
      if Layout <> LoWord(GetKeyboardLayout(aPWThreadID)) then
      begin
        PostMessage(aWindowHandle, WM_INPUTLANGCHANGEREQUEST, 0, Layout);
        Sleep(20);
      end
      else
        break;
end;

procedure TCharForm.Button5Click(Sender: TObject);
begin
  aPWT.SendKey(aPWWindow.aWindowHandle, aPWWindow.aThreadId, VK_ESCAPE, [], false, true);
  aPWT.SendKey(aPWWindow.aWindowHandle, aPWWindow.aThreadId, VkKeyScan('~'), [ssShift], false, true);
  aPWT.SendKey(aPWWindow.aWindowHandle, aPWWindow.aThreadId, VK_DOWN, [], false, true);
  aPWT.TextToClipboard('exit');
  aPWT.SendKey(aPWWindow.aWindowHandle, aPWWindow.aThreadId,  VkKeyScan('v'), [ssCtrl], false, true);
  aPWT.SendKey(aPWWindow.aWindowHandle, aPWWindow.aThreadId,  VK_RETURN, [], false, true);
end;
Как видишь, тут Алекс отчаянно использует эти самые параметры) Уверяет, что работает.. Может стоит тебе проверить? - вдруг это я что-то не учел.
Адрес инжекта да.. пробегал. А код к нему нет) Есть одна статья (на русском), где собирались пояснить, как самому писать инжекты, но так и не собрались..
GrieVeR-13 is offline  
Old 04/01/2010, 07:08   #1590
 
elite*gold: 0
Join Date: Sep 2009
Posts: 13
Received Thanks: 13
Ничего сложного, IDA Pro в помощь.
Ищите по этим Call-ам, и всё увидите
Вот хорошее описание

вот один пример:

// PM_DEFEND = 0;
// PM_AUTO = 1;
// PM_MANUAL = 2;

Code:
procedure PetSetModeCall(aPParams: PParams); stdcall;
var
  Cal1,Cal2: pointer;
  Pa1: cardinal;
begin
  Cal1 := Pointer($004bfb90);
  Cal2 := Pointer($005b7ed0);
  Pa1 := aPParams^.Param1;
  asm
    pushad
    push ecx
    mov eax,Pa1
    mov [esp+00],eax
    call Cal1
    lea ecx,[esp+$00]
    push $04
    push ecx
    push $03
    push $00
    lea ecx,[eax+$000000ec]
    call Cal2
    pop ecx
    popad
  end;
end;
slavapil is offline  
Thanks
4 Users
Reply




All times are GMT +2. The time now is 18:42.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.