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

Совершить прыжок

-

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

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

Ответ
 
Опции темы
Старый 31.12.2011, 02:28   #1
 Разведчик
Аватар для сhersаnyа
 
сhersаnyа никому не известный тип
Регистрация: 18.12.2011
Сообщений: 1
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Совершить прыжок

Искал, но нигде не нашёл: каким пакетом (или вообще каким образом) можно заставить персонажа совершить прыжок?) В частности интересует перепрыгивание бордюров в некоторых местах 3й главы ХХ.
  Ответить с цитированием
Старый 31.12.2011, 04:16   #2
 Разведчик
Аватар для HellD
 
HellD на правильном путиHellD на правильном пути
Регистрация: 07.02.2011
Сообщений: 38
Популярность: 143
Сказал(а) спасибо: 5
Поблагодарили 20 раз(а) в 11 сообщениях
Отправить сообщение для HellD с помощью ICQ
 
По умолчанию Re: Совершить прыжок

Я, конечно, не уверен, не заморачивался по этому поводу... но думаю, и КО со мной думаю согласится, JumpCall должен подойти для этой цели )) тока вот адреса в 4 утра мне искать влом)
  Ответить с цитированием
Старый 31.12.2011, 14:24   #3
 Старший сержант
Аватар для Skuka.95
 
Skuka.95 блестящий пример для подражанияSkuka.95 блестящий пример для подражанияSkuka.95 блестящий пример для подражанияSkuka.95 блестящий пример для подражанияSkuka.95 блестящий пример для подражанияSkuka.95 блестящий пример для подражанияSkuka.95 блестящий пример для подражанияSkuka.95 блестящий пример для подражанияSkuka.95 блестящий пример для подражанияSkuka.95 блестящий пример для подражанияSkuka.95 блестящий пример для подражания
Регистрация: 12.06.2010
Сообщений: 186
Популярность: 1746
Сказал(а) спасибо: 27
Поблагодарили 64 раз(а) в 59 сообщениях
Отправить сообщение для Skuka.95 с помощью ICQ
 
По умолчанию Re: Совершить прыжок

Цитата:
Сообщение от сhersаnyаПосмотреть сообщение
каким пакетом

пакет ? фууу, тут проще инжектом.. к примеру этим
Цитата:
Сообщение от HellDПосмотреть сообщение
JumpCall

________________
Почти забросил раздел Pw скажем спасибо TBX1n и
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).


Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Цитата:
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).

Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Сообщение от TBX1n
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).

Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Скука новый админ

Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).

Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).


Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
  Ответить с цитированием
Старый 09.01.2012, 18:23   #4
 Разведчик
Аватар для Мегазадрот
 
Мегазадрот никому не известный тип
Регистрация: 17.10.2011
Сообщений: 5
Популярность: 12
Сказал(а) спасибо: 0
Поблагодарили 3 раз(а) в 3 сообщениях
 
По умолчанию Re: Совершить прыжок

Через пакеты и тем более через GUI лучше прыжок/движение не делать. Лучше всего вызвать фукцию самого клиента расположенную по адресу 0x00459d60. Вот как это делается у меня.




//То, что выполняется в памяти процесса клиента игры.

typedef void (__thiscall * fnJump)(LPVOID Char, DWORD Reserved);

VOID JumpInject(DWORD * Param)
{
((fnJump)0x00459d60)(*(LPVOID *)(*(LPBYTE *)GAME_ADDRESS + 0x34), *Param);
}

//То, что я вызываю у себя в боте что бы чар прыгнул.

BOOL CCharBot::Jump(DWORD Reserved)
{
return Inject(JumpInject, 2048, NULL, &Reserved, sizeof(Reserved));
}


Функция Inject имеет следующий прототип:

BOOL CCharBot::Inject(LPCVOID CodePointer, SIZE_T CodeSize, LPDWORD ExitCodePointer, LPCVOID DataPointer, SIZE_T DataSize);
  Ответить с цитированием
Старый 11.01.2012, 01:09   #5
 Разведчик
Аватар для Docent2001
 
Docent2001 на правильном путиDocent2001 на правильном пути
Регистрация: 09.06.2010
Сообщений: 4
Популярность: 119
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
 
По умолчанию Re: Совершить прыжок

Мегазадрот, привет.

Я к сожалению не силен в С/С++, поэтому понять что происходит тут:
((fnJump)0x00459d60)(*(LPVOID *)(*(LPBYTE *)GAME_ADDRESS + 0x34), *Param);
хоть убей не могу.

Но могу сказать точно - такого массированного заталкивания в стек и записи в память как в JumpCall тут нет.

Вполне логично, что прыжок параметров не требует и передавать в "родную" процедуру нужно минимум инфы.

Можешь написать Delphi вариант твоего JumpCall'а?
  Ответить с цитированием
Старый 12.01.2012, 00:17   #6
 Разведчик
Аватар для Мегазадрот
 
Мегазадрот никому не известный тип
Регистрация: 17.10.2011
Сообщений: 5
Популярность: 12
Сказал(а) спасибо: 0
Поблагодарили 3 раз(а) в 3 сообщениях
 
По умолчанию Re: Совершить прыжок

Привет, Jump, на который ты указал, он похоже реализован на использовании структуры Action (по слухам: указатель на нее съехал на 0x1050). Хотя могу и ошибаться, никогда не интересовался этой структурой...

Я же использую совсем другую функцию, но в результате цепочки вызовов все сведется к использованию все того же Action. ........Как-то так.........

В делфи - не силен))) на ассемблере моя функция выглядит как-то так:

mov ecx,[GA];
mov ecx,[ecx + 0x34];
push Reserved;
call 0x00459d60;
ret

Первый параметр функции передается в ecx (thiscall патамучта)))), второй параметр внутри функции никак не используется поэнтому и назван Reserved.

Последний раз редактировалось Мегазадрот; 12.01.2012 в 01:17.
  Ответить с цитированием
Старый 12.01.2012, 02:00   #7
 Разведчик
Аватар для Docent2001
 
Docent2001 на правильном путиDocent2001 на правильном пути
Регистрация: 09.06.2010
Сообщений: 4
Популярность: 119
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
 
По умолчанию Re: Совершить прыжок

И снова огромное спасибо!

Вот такой прыжок:

Код:
  procedure JumpCall(); stdcall;
  var CallAddress:pointer;
  begin
    CallAddress:=Pointer($459В60);
     asm
      pushad
      mov ecx, dword ptr [GameAddress]
      mov ecx, dword ptr [ecx+$34]
      push $FFFFFFFF
      call CallAddress
      popad
     end;
  end;
Работает отлично. Гораздо проще описанного Dinmaite

Может быть стоит тут заменить его на этот вариант?

Последний раз редактировалось Docent2001; 12.01.2012 в 02:01. Причина: не поставил CODE
  Ответить с цитированием
Старый 21.01.2012, 12:25   #8
 Сержант
Аватар для BritishColonist
 
BritishColonist излучает ауруBritishColonist излучает ауруBritishColonist излучает ауруBritishColonist излучает ауруBritishColonist излучает ауруBritishColonist излучает ауру
Регистрация: 11.12.2010
Сообщений: 110
Популярность: 541
Сказал(а) спасибо: 5
Поблагодарили 66 раз(а) в 39 сообщениях
 
По умолчанию Re: Совершить прыжок

Ребята, что в этом коде неправильно? Описал в DLL прототип и вызываю:

Код:
void (__cdecl* fnJump)(DWORD playerStruct,DWORD reserved);

...

void InitClientFunctions() // это вызывается после создания CPlayer
{
	fnJump = (void(__cdecl*)(DWORD,DWORD))0x00459D60;
}


class CPlayer
{
	public:
		...
		
		void LoadStruct();
		void Jump();
};

void CPlayer::LoadStruct() // получение PlayerStruct
{
	while (!*(BYTE*)OnlineFlag)	{
		Sleep(100);
	}

	__asm	{
		mov eax,dword ptr ds:[BA]
		mov eax,dword ptr ds:[eax+0x1C]
		mov eax,dword ptr ds:[eax+0x34]
		mov PlayerStruct,eax
	}
}

void CPlayer::Jump()
{
	fnJump(PlayerStruct,-1); // собственно вызов функции
}
При вызове функции просто происходит вылет - предложение вЕнды отправить отчёт.

P.S. Как __thiscall описать не удаётся - пишет какой-то бред. Работаю в билдере



Проблему решил: __thiscall не поддерживается в C++ Builder. Подобные функции описать прототипами не удастся.

Последний раз редактировалось BritishColonist; 22.01.2012 в 11:12.
  Ответить с цитированием
Ответ


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

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

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

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

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

Пишите нам: forum@zhyk.ru
Copyright © 2025 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net