Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 15.03.2011, 10:28
Аватар для Desprado
Desprado Desprado вне форума
Прохожий
 
Регистрация: 19.12.2010
Адрес: Украина
Сообщения: 7
Репутация: 10
По умолчанию Приложение для игры онлайн

Ребят подскажите книги видео статьи или на собственном примере.
Есть игра, хочу сделать мини программку, одно окно, одна кнопка, и что бы это программка, при нажатии на кнопку, нажимала определенную кнопку в игре моей.
Вроде бы задача не сложная, но для меня не очень понятная.
__________________
точка
Ответить с цитированием
  #2  
Старый 15.03.2011, 10:52
Asinkrit Asinkrit вне форума
Местный
 
Регистрация: 29.10.2009
Сообщения: 446
Репутация: 271
По умолчанию

В большинстве случаев, описание понятия кнопки программируется разработчиком игры, для того что бы ее нажать, требуется само описание понятия кнопки как у разработчиков и точка адреса памяти, по которой лежат данные о кнопке, чего у нас конечно же нет.

Но есть вариант, в приложение можно инициировать событие нажатия на клавишу или мышку. К примеру, можно отправить нажатие левой кнопки мыши по определенным координатам в саму игру.
Ответить с цитированием
  #3  
Старый 15.03.2011, 16:18
Аватар для Desprado
Desprado Desprado вне форума
Прохожий
 
Регистрация: 19.12.2010
Адрес: Украина
Сообщения: 7
Репутация: 10
По умолчанию ..

У меня есть все подходящие Адреса и оффсеты... я просто не разу с этим не сталкивался, и не знаю как это сделать)
__________________
точка
Ответить с цитированием
  #4  
Старый 15.03.2011, 16:55
Asinkrit Asinkrit вне форума
Местный
 
Регистрация: 29.10.2009
Сообщения: 446
Репутация: 271
По умолчанию

Честно говоря я сомневаюсь что у вас есть то или другое. Так как адрес памяти у кнопки при каждом запуске игры разный, а для того что бы узнать этот адрес, надо знать, как минимум структуру данных кнопки и значения одного или нескольких полей этой структуры данных. О описание структур данных, разработчики игр не распространяют. Покажите что у вас есть, а дальше посмотрим что можно сделать. И хотелось бы название игры услышать, так как игры бывают разными.

Последний раз редактировалось Asinkrit, 15.03.2011 в 16:59.
Ответить с цитированием
  #5  
Старый 15.03.2011, 18:11
Аватар для Desprado
Desprado Desprado вне форума
Прохожий
 
Регистрация: 19.12.2010
Адрес: Украина
Сообщения: 7
Репутация: 10
Сообщение Perfect World

Игра называется Perfect World

[Руоф] Адреса и оффсеты


PHP код:
Все адреса и оффсеты представлены в Hex(шестнадцатиричной системе).
Размер ячейки по умолчанию 4b dword uint.

Термины Аббревиатура Справкаразвернуть

    
BA BaseAddress Базовый адрес
    
GA GameRun начало игровой структуры
    
* [BA] - Значение по адресу BA
      Квадратные скобки 
[ ] означаютчто берется значение по адресууказанному внутри скобок.
    * 
GA = [BA] + 1C
    
Для чтения какого-то значения из памятиобычно необходима целая цепочка оффсетовпример такой цепочки:

      
BA +1C +20 +608 +0

      Развернутый вид этой записи
:

      [[[[[
BA] +1C] +20] +608] +0]

      
Пошаговая инструкция по чтению:
         
1. Читаем значение по адресу BA
         2. Прибавляем к полученному значению 1C
         3. Читаем значение по полученному адресу 
(1ое значение )
         
4. Прибавляем 20
         5. Читаем значение
         6. Прибавляем 608
         7. Читаем значение
         8. Прибавляем 0
         9. Читаем значение

    
* (+0)^специальный символотображающий количество (Jстраниц (+0в связанном списке.

      
Запись BA +218 ++[I*4] + (+0)^+4 для разных значений J расшифровывается как:

      
0BA +218 ++[I*4] +4
      J 
1BA +218 ++[I*4] ++4
      J 
2BA +218 ++[I*4] +++4
      J 
3BA +218 ++[I*4] ++++4
      J 
4BA +218 ++[I*4] +++++4
      J 
5: ...

Продолжатьпока не будут найдены все элементыЭлементы неравномерно распределены по всему массивуКоличество элементов можно посмотреть по адресууказанному в первой строке описания каждой структуры.



Адреса Оффсеты:

9C0E6C BA
9C1514 GA
9C1984 UnfreezeFlag (InactiveActive)
9C4008 Start chat address
9C400С End chat address
9C4010 Max messages (199 MaxMsg)
9C4014 Number of messages
9C4028 Number of messages (+ deleted)
9C4008 +[I*C+8] +Messages (UText Unicode String) (I in [0..N])

      
Структура игрока:
      
GA +20HostPlayer Struct
          o 
+3C LocX (float)
          
+40 LocZ (float)
          
+44 LocY (float)
          
+7C See: +3C
          o 
+80 See: +40
          o 
+84 See: +44
          o 
+458 ID
          o 
+464 PlayerLvL
          o 
+46С HP
          o 
+470 MP
          o 
+474 Current EXP
          o 
+478 Current Spirit
          o 
+480 Fury
          o 
+494 Vit
          o 
+498 Int
          o 
+49C Str
          o 
+4A0 Dex
          o 
+4A4 MaxHP
          o 
+4A8 MaxMP
          o 
+4C4 Accuracy
          o 
+4C8 MinPAtk.
          
+4CC MaxPAtk.
          
+500 MinMAtk.
          
+504 MaxMAtk.
          
+508 DefMetal
          o 
+50С DefWood
          o 
+510 DefWater
          o 
+514 DefFire
          o 
+518 DefEarth
          o 
+51C PDef.
          
+520 Evasion
          o 
+524 MaxFury
          o 
+528 Money
          o 
+530 EquipWeapon
          o 
+534 EquipHelmet
          o 
+538 EquipNecklace
          o 
+53C EquipManteau
          o 
+540 EquipShirt
          o 
+544 EquipWaistAdorn
          o 
+548 EquipFootwear
          o 
+54C EquipBoots
          o 
+550 EquipWristBracer
          o 
+554 EquipRing1
          o 
+558 EquipRing2
          o 
+55С EquipProjectile
          o 
+560 EquipFly
          o 
+564 Equip BodyFashion
          o 
+568 Equip Legwear Fashion
          o 
+56C Equip Special Footwears
          o 
+570 Equip Arm Fashion
          o 
+574 Equip Head
          o 
+578 EquipPigment
          o 
+57C EquipSmiley
          o 
+580 Equip GuardianCharm
          o 
+584 Equip SpiritCharm
          o 
+588 EquipX1
          o 
+58C EquipGenie
          o 
+590 EquipX2
          o 
+598 Reputation
          o 
+5D4 ClanID
          o 
+608 +0 PlayerName (UText Unicode String)
          
+610 ClassID
          o 
+614 Gender (1b) (MaleFemale)
          
+61C WalkMode (1b) (GroundSwimingFlying)
          
+620 RunMode (1b) (WalkRun)
          
+668 Meditation (1b) (Walking10 Flying20 Meditation)
          
+6C4 Skilling
          o 
+944 Time Mining
          o 
+9B4 HP Potion CD
          o 
+9BC MP Potion CD
          o 
+9E4 PlayerInfo CD
          o 
+9EC Pet Potion CD
          o 
+AF0 Duration of life/recall of a pet
          o 
+AF8 TargetID
          o 
+B3C GroundZ
          o 
+BF4 Jumping
          o 
+1074 +188 TargetX (float)
          
+1074 +18C TargetZ (float)
          
+1074 +190 TargetY (float)
          
+100C Number of active skills
          o 
+1024 Number of passive skills

          o Структура членов группы
:
            +
6A8 +14 +[I*4]: (I in [1..5]) развернуть
                
+ +C PmId
                
+ +10 PmLvl
                
+ +1C PmHP
                
+ +20 PmMP
                
+ +24 PmMaxHP
                
+ +28 PmMaxMP
                
+ +34 PmLocX (float)
                + +
38 PmLocZ (float)
                + +
3C PmLocY (float)

          
+6C4 Skilling
          o 
+944 Time Mining
          o 
+9B4 HP Potion CD
          o 
+9BC MP Potion CD
          o 
+9E4 PlayerInfo CD
          o 
+9EC Pet Potion CD
          o 
+AF0 Duration of life/recall of a pet
          o 
+AF8 TargetID
          o 
+B3C GroundZ
          o 
+BF4 Jumping
          o Структура инвентаря
:
            +
C3C ++[I*4]
          
o Структура снаряжения (надетые вещи):
            +
С40 ++[I*4]
          
o Структура инвентаря квестовых предметов:
            +
C44 ++[I*4]
          
o Структура снаряжения другого игрока (Просмотр игрока):
            +
C98 ++[I*4развернуть
                
+ +8 ItemID
                
+ +10 ItemNumber
                
+ +40 ItemDescription
                  
(I in [0..24]): развернуть

          o Структура действия
:
            +
FE0 развернуть
                
+ +C Stand Action
                
+ +14 Current Action
                
+ +14 +10 P.Target ID *
                + +
30 +4 MovePoint Action
                
+ +30 +20 Destination LocX
                
+ +30 +24 Destination LocZ
                
+ +30 +28 Destination LocY
                
+ +30 +8 MoveTarget Action
                
+ +30 ++20 Destination ID
                
+ +30 +10 +30 M.Target ID *
                + +
30 +2C Mining Action
                
+ +30 +30 PetEvocative Action


          o Структура питимоца
:
            +
FF8 развернуть
                
+ +8 IsCalled? (FFFFFFFF not Called0-9 Pet Number)
                + +
38 CurrentPetID
                
+ +40 PetMode (DefenceAgressionManual)
                + +[
I*10]: Pet Array (I in [0-9] - Pet Cellразвернуть
                      
# +4 PetLoyalty
                      # +8 PetHungry
                      # +1C PetHP(%) (float)
                      # +34 +0 PetName
                      # +38 PetHP
                      # +(J*10+34) PetSkill CD (J in [1..4])


          
o Структура скилов:
            +
1008 +[I*4] (I in [0..N]) развернуть
                
+ +4 Skill ID
                
+ +8 Skill ID
                
+ +C Skill Lvl
                
+ +10 Skill Cool Down
                
+ +14 Skill Max Cool Down

    
Структура Список игроков рядом:
      
GA ++20 +18 +[I*4] + (+0)^+4: (I in [0..300])
          
o GA ++20 +14: - Players count
          o 
+3C PlayerLocX (float)
          
+40 PlayerLocZ (float)
          
+44 PlayerLocY (float)
          
+35C + [I*2PlayerBuffs (I in [0..N]) (1b)
          
+360 PlayerBuffs Number
          o 
+458 PlayerId
          o 
+464 PlayerLvl
          o 
+46C PlayerHP
          o 
+470 PlayerMP
          o 
+4A4 PlayerMaxHP
          o 
+4A8 PlayerMaxMP
          o 
+5D4 PlayerClanID
          o 
+608 +0 PlayerName (UText Unicode String)
          
+610 PlayerClassID
          o 
+614 PlayerGender
          o 
+61C PlayerWalkMode
          o 
+620 RunMode (1b) (WalkRun)
          
+6С8 PlayerMTargetID

    
Структура Список мобов:
      
GA ++24 +18 +[I*4] + (+0)^+4: (I in [0..300])
          
o GA ++24 +14: - Mobs count
          o 
+3C MobLocX (float)
          
+40 MobLocZ (float)
          
+44 MobLocY (float)
          
+B4 MobType (mobNPCPet)
          
+11C MobWorldID
          o 
+120 MobID
          o 
+12C MobHP
          o 
+164 MobMaxHP
          o 
+225 MobFeature (0NoneAcceleratingPacifistEnhphysical protectionEnhmagical protectionEnhphysical attackEnhmagical attackBerserkEnhLifeWeakness)
          
+240 See: +225
          o 
+24C +0 MobName (UText Unicode String)
          
+2B8 MobAction (PassivePAttacksMAttacksDiesMoves)
          
+2D4 MobPTargetID
          o 
+2D8 MobMTargetID
          o 
+2DC Mob Attack flag (1b)
          
+310 + [I*2MobBuffs (I in [0..N]) (1b)
          
+314 Mob Buffs Count

    
Структура Список лута:
      
GA ++28 +18 +[I*4] + (+0)^+4: (I in [0..300])
          
o GA ++28 +14: - Items count
          o 
+3C ItemLocX (float)
          
+40 ItemLocZ (float)
          
+44 ItemLocY (float)
          
+10C ItemWID (Sn Serial Number)
          
+110 ItemID
          o 
+14C ItemType (MoneyMineOther Item)
          
+164 +0 ItemName (UText Unicode String

вот
__________________
точка
Ответить с цитированием
  #6  
Старый 16.03.2011, 02:11
Asinkrit Asinkrit вне форума
Местный
 
Регистрация: 29.10.2009
Сообщения: 446
Репутация: 271
По умолчанию

Здесь только описаны структуры некоторых игровых элементов, я не вижу в ни описания кнопки, ни ее методов работы.

По поводу второго решения, сказанного в первом моем ответе, можно почитать вот здесь.
Ответить с цитированием
  #7  
Старый 16.03.2011, 09:23
Аватар для Desprado
Desprado Desprado вне форума
Прохожий
 
Регистрация: 19.12.2010
Адрес: Украина
Сообщения: 7
Репутация: 10
По умолчанию

ну вот еще посоветовали
PHP код:
var
WndHndl:THandle;
buf:byte;
ipbuf,PID,hProcess,BytesCount:dword;
begin
WndHndl
:=findwindow('ElementClient Window',nil);
GetWindowThreadProcessId(WndHndl, @PID);
hProcess:=OpenProcess(PROCESS_ALL_ACCESSFalsePID);
if 
hProcess <> 0 then // Проверяем получен ли идентификатор объекта
try
ReadProcessMemory(hProcessptr(base_addr), @ipbufsizeof(ipbuf), BytesCount);
ReadProcessMemory(hProcessptr(ipbuf+$1C), @ipbufsizeof(ipbuf), BytesCount);
ReadProcessMemory(hProcessptr(ipbuf+$20), @ipbufsizeof(ipbuf), BytesCount);
ReadProcessMemory(hProcessptr(ipbuf+fly_offset), @bufsizeof(buf), BytesCount); 
__________________
точка
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 17:06.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter