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

РУОФФ Адреса и оффсеты

-

Разработка ПО для Perfect World

- Бюро разработчиков Zhyk.Ru: создание ботов, снифферов и прочих программ для Perfect World

Ответ
 
Опции темы
Старый 13.01.2012, 19:20   #106
-= Мастер Света =-
 Рыцарь-капитан
Аватар для krukovis
 
krukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нации
Регистрация: 07.10.2009
Сообщений: 496
Популярность: 2687
Сказал(а) спасибо: 64
Поблагодарили 324 раз(а) в 104 сообщениях
 
По умолчанию Re: РУОФФ Адреса и оффсеты

Я проанализировал значение 06F4 WaitSkill* - это указатель на структуру кастующегося в данный момент скилла. Если посмотреть дальше, то можно обнаружить следующие показатели:
+4 SkillID
+8 SkillID
+C SkillLvl
+10 SkillCoolDown
+14 SkillMaxCoolDown

Это смещение интересно по нескольким причинам:
1) Мы можем легко обнаружить какой скилл кастуется в данный момент посмотрев на его ID по смещению +8 - SkillID
2) Мы можем легко понять когда скилл перестал кастоваться - по этому смещению будет 0.

Я бы назвал это смещение как ActiveSkillPtr.

Добавлено через 8 минут
================================================== ===============================================
Цитата:
Сообщение от wajskopfПосмотреть сообщение
Подскажите по какому оффсету и какое значение должно быть фулл чи? То есть, то что выложено показывает текущий уровень ярости, а мне нужен фулл чи. Типа 1 или 0 (есть или нет)

На сколько я знаю полных чи нет. Да и зачем оно, если можно проверять кол-во ярости по смещению +4A4 в структуре персонажа. Если >= 100 - значит 1 чи есть, если >=200 - значит 2 чи, если >= 300 - значит 3 чи.

Добавлено через 15 минут
================================================== =============================================
Цитата:
Сообщение от sumikotПосмотреть сообщение
/+0480 Chi, dword/*

По этому смещению лежит количество полных чи. Т.е. если это значение = I, то максимальное кол-во ярости будет I+99, где i = 0 to 3.

Добавлено через 1 час 47 минут
==================================================
Что то по этому адресу не вижу Ожидания призыва пета +0B60 Duration of life/recall of a pet /Ожидание призыва пета/, не подскажите правильный? Или поясните что это за параметр, пожалуйста.
________________
--------------------------------------------
PerfectAutoLogin v 7.4 - Совершенный автологин для Perfect World [RUOFF, PWI, Фришек 1.4.4 - 1.4.5]
--------------------------------------------
[for 1.4.6] PW Patcher 12.0 - Патч на Горны, Красный (да и любой) чат, Анфриз, Бесконечный зум, Моментальный разгон на полете для RUOFF, PWI и прочих 1.4.6 и фришек 1.4.4, 1.4.5.
--------------------------------------------
InGamePatcher 1.2 - патчер для серверов 1.4.5 и 1.4.4 работающий с включенной игрой.
--------------------------------------------

Последний раз редактировалось krukovis; 13.01.2012 в 21:12. Причина: Добавлено сообщение
  Ответить с цитированием
Старый 13.01.2012, 22:10   #107
 Разведчик
Аватар для wajskopf
 
wajskopf никому не известный тип
Регистрация: 15.08.2011
Сообщений: 25
Популярность: 10
Сказал(а) спасибо: 8
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: РУОФФ Адреса и оффсеты

Цитата:
Сообщение от krukovisПосмотреть сообщение
На сколько я знаю полных чи нет. Да и зачем оно, если можно проверять кол-во ярости по смещению +4A4 в структуре персонажа. Если >= 100 - значит 1 чи есть, если >=200 - значит 2 чи, если >= 300 - значит 3 чи.

Этот совет помог. По смещению +0480 лежат нули
  Ответить с цитированием
Старый 13.01.2012, 22:48   #108
-= Мастер Света =-
 Рыцарь-капитан
Аватар для krukovis
 
krukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нации
Регистрация: 07.10.2009
Сообщений: 496
Популярность: 2687
Сказал(а) спасибо: 64
Поблагодарили 324 раз(а) в 104 сообщениях
 
По умолчанию Re: РУОФФ Адреса и оффсеты

Цитата:
Сообщение от wajskopfПосмотреть сообщение
Этот совет помог. По смещению +0480 лежат нули

Очевидно твой перс не получил еще ни одного чи
________________
--------------------------------------------
PerfectAutoLogin v 7.4 - Совершенный автологин для Perfect World [RUOFF, PWI, Фришек 1.4.4 - 1.4.5]
--------------------------------------------
[for 1.4.6] PW Patcher 12.0 - Патч на Горны, Красный (да и любой) чат, Анфриз, Бесконечный зум, Моментальный разгон на полете для RUOFF, PWI и прочих 1.4.6 и фришек 1.4.4, 1.4.5.
--------------------------------------------
InGamePatcher 1.2 - патчер для серверов 1.4.5 и 1.4.4 работающий с включенной игрой.
--------------------------------------------
  Ответить с цитированием
Старый 14.01.2012, 01:45   #109
 Разведчик
Аватар для Docent2001
 
Docent2001 на правильном путиDocent2001 на правильном пути
Регистрация: 09.06.2010
Сообщений: 4
Популярность: 119
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
 
По умолчанию Re: РУОФФ Адреса и оффсеты

Возможно тут уже писали об этом, но я такого не нашел.

По смещениям от +055C до +05BC в структуре перса лежат item_id оружия, брони и т.п.

Но, несмотря на то что они определены как "двойное слово" - DWord, в реальности для хранения item_id используется только младшее слово, а старшее может содержать то ли мусор, то ли какую-то непонятную (во всяком случае не описанную здесь) информацию (а может и нули).
Поэтому нужно либо сразу определять в своей программе тип этих переменных как Word или SmallInt (для Delphi), либо маскировать старшее слово.
  Ответить с цитированием
Старый 15.01.2012, 10:29   #110
 Пехотинец
Аватар для Choochoo
 
Choochoo на правильном пути
Регистрация: 16.09.2010
Сообщений: 94
Популярность: 73
Сказал(а) спасибо: 5
Поблагодарили 21 раз(а) в 5 сообщениях
 
Angry Re: РУОФФ Адреса и оффсеты

Цитата:
Сообщение от HellDПосмотреть сообщение
А чем вас GA+$34+$38с+$88+I*4 не устраивает? )

Пошу прощения, но поиски по этим офсетам. Как и по любым другим в списке игроков рядом правильно выдают только их количество. А такие данные как Имя перса. его лвл (после взятия в таргет) и прочее выдают заведомо ложную информацию. Или я что то не так делаю, или одно из двух....
  Ответить с цитированием
Старый 15.01.2012, 18:58   #111
 Разведчик
Аватар для Docent2001
 
Docent2001 на правильном путиDocent2001 на правильном пути
Регистрация: 09.06.2010
Сообщений: 4
Популярность: 119
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
 
По умолчанию Re: РУОФФ Адреса и оффсеты

Брать информацию о близлежащих игроках по ссылке из структуры перса не пробовал.

А вот здесь информация о них точно есть:

"Структура игроков
BA +0x1C +0x1C +0x20 +0x14 Count, dword /Количество/
BA +0x1C +0x1C +0x20 +0x18 +(i*0x4) +0x4 /i = 0 - 0x300"
  Ответить с цитированием
Старый 16.01.2012, 19:30   #112
 Разведчик
Аватар для wajskopf
 
wajskopf никому не известный тип
Регистрация: 15.08.2011
Сообщений: 25
Популярность: 10
Сказал(а) спасибо: 8
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: РУОФФ Адреса и оффсеты

Где можно посмотреть какое либо значение, которое показывало бы в игре перс или вылетел? Коты часто вылетают...
  Ответить с цитированием
Старый 16.01.2012, 19:36   #113
-= Мастер Света =-
 Рыцарь-капитан
Аватар для krukovis
 
krukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нации
Регистрация: 07.10.2009
Сообщений: 496
Популярность: 2687
Сказал(а) спасибо: 64
Поблагодарили 324 раз(а) в 104 сообщениях
 
По умолчанию Re: РУОФФ Адреса и оффсеты

Цитата:
Сообщение от wajskopfПосмотреть сообщение
Где можно посмотреть какое либо значение, которое показывало бы в игре перс или вылетел? Коты часто вылетают...

OnlineFlag = 00B27CE0 /В игре - 1, не в игре - 0/
внимательно изучи первую страницу и всю эту ветку (с карандашем)
________________
--------------------------------------------
PerfectAutoLogin v 7.4 - Совершенный автологин для Perfect World [RUOFF, PWI, Фришек 1.4.4 - 1.4.5]
--------------------------------------------
[for 1.4.6] PW Patcher 12.0 - Патч на Горны, Красный (да и любой) чат, Анфриз, Бесконечный зум, Моментальный разгон на полете для RUOFF, PWI и прочих 1.4.6 и фришек 1.4.4, 1.4.5.
--------------------------------------------
InGamePatcher 1.2 - патчер для серверов 1.4.5 и 1.4.4 работающий с включенной игрой.
--------------------------------------------
  Ответить с цитированием
Старый 17.01.2012, 21:03   #114
 Разведчик
Аватар для opex90
 
opex90 никому не известный тип
Регистрация: 06.11.2011
Сообщений: 3
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: РУОФФ Адреса и оффсеты

А у меня структура лута не работает.
списки игроков и мобов работают нормально.
При чем офсет на количество лута и ресов вокруг работает а инфа о них неправильная (((
  Ответить с цитированием
Старый 17.01.2012, 21:19   #115
 Пехотинец
Аватар для Jok3r666
 
Jok3r666 скоро будет известенJok3r666 скоро будет известенJok3r666 скоро будет известен
Регистрация: 17.05.2010
Сообщений: 53
Популярность: 204
Сказал(а) спасибо: 11
Поблагодарили 15 раз(а) в 6 сообщениях
 
По умолчанию Re: РУОФФ Адреса и оффсеты

Цитата:
Сообщение от semoderПосмотреть сообщение
Лично у меня вот так

Код:
procedure WalkCall(aPParams:PParams);Stdcall;
var CallAddress1,CallAddress2,CallAddress3:Pointer;
    x,y,z:single;
    flying:cardinal;
begin
CallAddress1:=Pointer($0046E410);
CallAddress2:=Pointer($004728E0);
CallAddress3:=Pointer($0046E880);
x:=aPParams^.x;
y:=aPParams^.y;
z:=aPParams^.z;
flying:=aPParams^.Param1;
 asm
  pushad
  mov eax, dword ptr [game_add]
  mov esi, dword ptr [eax+$34]
  mov ecx, dword ptr [esi+$1050]
  push 1
  call CallAddress1
  mov edi, eax
  lea eax, dword ptr [esp+$0c]
  push eax
  push flying
  mov ecx, edi
  call CallAddress2
  mov ecx, dword ptr [esi+$1050]
  push 0
  push 1
  push edi
  push 1
  call CallAddress3
  mov eax, dword ptr [game_add]
  mov eax, dword ptr [eax+$34]
  mov eax, dword ptr [eax+$1050]
  mov eax, dword ptr [eax+$30]
  mov ecx, dword ptr [eax+$4]
  mov eax, x
  mov dword ptr[ecx+$20], eax
  mov eax, z
  mov dword ptr[ecx+$24], eax
  mov eax, y
  mov dword ptr[ecx+$28], eax
  popad
 end;
end;

procedure Walk(x,y,z:single);
var aParams: TParams;
ipbuf,BytesCount,BaseWalkMode:dword;
begin
ReadProcessMemory(hProcess, ptr(GAME_ADD), @ipbuf, sizeof(ipbuf), BytesCount);
ReadProcessMemory(hProcess, ptr(ipbuf+$34), @ipbuf, sizeof(ipbuf), BytesCount);
ReadProcessMemory(hProcess, ptr(ipbuf+$64C), @BaseWalkMode, sizeof(BaseWalkMode), BytesCount);
if BaseWalkMode = 0 then aParams.Param1:=0 else aParams.Param1:=1;
aParams.x:=x;
aParams.y:=y;
aParams.z:=z;
InjectFunc(hProcess,@WalkCall,@aParams,SizeOf(aParams));
end;

Блин все равно не получается, клиент с ошибкой вылетает(((

Решил отдельно замутить для проверки. Гляньте что не так плиз. Мозг уже не варит, он и так то не варил, а ща вообще мертв.
Код:
 type
  PParams = ^TParams;
  TParams = packed record
    WID: DWord;
  end;

  type
  PWalkParams = ^TWalkParams;
  TWalkParams = packed record
    Packet: array [0..100] of byte;
    CallAddress1,CallAddress2,CallAddress3: Pointer;
    x,y,z:  single;
    Param1: dword;
    Param4: array [1..88] of widechar;
    end;
var
  Form1: TForm1;

implementation

{$R *.dfm}



//podkluchenie k pw
function Contopw: dword;              
var
WndHndl:Thandle;
PID,hprocess:dword;
begin
  WndHndl:=findwindow(nil, pchar('Perfect World'));
  GetWindowThreadProcessId(WndHndl, @PID);
  hProcess:=OpenProcess(PROCESS_ALL_ACCESS, False, PID);
  if hprocess<>0 then  begin
  Result:=hprocess; end
  else
  begin
  Result:=0;
  end;
end;

procedure InjectFunc(ProcessID: Cardinal; Func, aParams: Pointer;
  aParamsSize: DWord);
var
  hThread: THandle;
  lpNumberOfBytes: DWord;
  ThreadAddr, ParamAddr: Pointer;
begin
  if ProcessID<>0 then
  begin
    // ----
    ThreadAddr := VirtualAllocEx(ProcessID, nil, 256, MEM_COMMIT, PAGE_READWRITE);
    WriteProcessMemory(ProcessID, ThreadAddr, Func, 256, lpNumberOfBytes);

    // ----
    ParamAddr := VirtualAllocEx(ProcessID, nil, aParamsSize, MEM_COMMIT, PAGE_READWRITE);
    WriteProcessMemory(ProcessID, ParamAddr, aParams, aParamsSize, lpNumberOfBytes);

    // ----
    hThread := CreateRemoteThread(ProcessID, nil, 0, ThreadAddr, ParamAddr, 0, lpNumberOfBytes);

    // ----
    WaitForSingleObject(hThread, INFINITE);

    // ----
    CloseHandle(hThread);
    VirtualFreeEx(ProcessID, ParamAddr, 0, MEM_RELEASE);
    VirtualFreeEx(ProcessID, ThreadAddr, 0, MEM_RELEASE);
  end
end;

procedure WalkCall(aPParams: PWalkParams);Stdcall;
var CallAddress1,CallAddress2,CallAddress3:Pointer;
    x,y,z:single;
    flying:cardinal;
    Game_add: integer;
begin
game_add := $B280C4;
CallAddress1:=Pointer($0046E410);
CallAddress2:=Pointer($004728E0);
CallAddress3:=Pointer($0046E880);
x:=aPParams^.x;
y:=aPParams^.y;
z:=aPParams^.z;
flying:=aPParams^.Param1;
 asm
  pushad
  mov eax, dword ptr [game_add]
  mov esi, dword ptr [eax+$34]
  mov ecx, dword ptr [esi+$1050]
  push 1
  call CallAddress1
  mov edi, eax
  lea eax, dword ptr [esp+$0c]
  push eax
  push flying
  mov ecx, edi
  call CallAddress2
  mov ecx, dword ptr [esi+$1050]
  push 0
  push 1
  push edi
  push 1
  call CallAddress3
  mov eax, dword ptr [game_add]
  mov eax, dword ptr [eax+$34]
  mov eax, dword ptr [eax+$1050]
  mov eax, dword ptr [eax+$30]
  mov ecx, dword ptr [eax+$4]
  mov eax, x
  mov dword ptr[ecx+$20], eax
  mov eax, z
  mov dword ptr[ecx+$24], eax
  mov eax, y
  mov dword ptr[ecx+$28], eax
  popad
 end;
end;

procedure Walk(x,y,z:single);
var
aParams: Twalkparams;
ipbuf,BytesCount,BaseWalkMode, hprocess:dword;
begin
hProcess := contopw();
ReadProcessMemory(hProcess, ptr($B280C4), @ipbuf, sizeof(ipbuf), BytesCount);
ReadProcessMemory(hProcess, ptr(ipbuf+$34), @ipbuf, sizeof(ipbuf), BytesCount);
ReadProcessMemory(hProcess, ptr(ipbuf+$64C), @BaseWalkMode, sizeof(BaseWalkMode), BytesCount);
if BaseWalkMode = 0 then aParams.Param1:=0 else aParams.Param1:=1;
aParams.x:=x;
aParams.y:=y;
aParams.z:=z;
InjectFunc(hProcess,@WalkCall,@aParams,SizeOf(aParams));
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 Walk(0,0,0);
end;

end.
  Ответить с цитированием
Старый 18.01.2012, 16:07   #116
-= Мастер Света =-
 Рыцарь-капитан
Аватар для krukovis
 
krukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нации
Регистрация: 07.10.2009
Сообщений: 496
Популярность: 2687
Сказал(а) спасибо: 64
Поблагодарили 324 раз(а) в 104 сообщениях
 
По умолчанию Re: РУОФФ Адреса и оффсеты

Я чуть не разуверился в этом мире пока отловил ошибку тут:
Цитата:
Сообщение от sumikotПосмотреть сообщение
MultOff=00437712 (57 8D 4E 04 EB 55 EA FD FF > 90 8D 4E 04 90 90 90 90 90)

Правильный опкод для исправления (57 8D 4E 04 E8 55 EA FD FF) - поправь пожалуйста.
  Ответить с цитированием
Старый 18.01.2012, 18:35   #117
 Старший сержант
Аватар для sumikot
 
sumikot излучает ауруsumikot излучает ауруsumikot излучает ауруsumikot излучает ауруsumikot излучает ауруsumikot излучает ауру
Регистрация: 21.09.2009
Сообщений: 189
Популярность: 578
Сказал(а) спасибо: 27
Поблагодарили 144 раз(а) в 36 сообщениях
 
По умолчанию Re: РУОФФ Адреса и оффсеты

Ок, невнимательность моя...
  Ответить с цитированием
Старый 19.01.2012, 12:01   #118
 Сержант
Аватар для gurin
 
gurin душа компанииgurin душа компанииgurin душа компанииgurin душа компанииgurin душа компанииgurin душа компанииgurin душа компанииgurin душа компании
Регистрация: 18.12.2009
Сообщений: 152
Популярность: 1075
Сказал(а) спасибо: 45
Поблагодарили 204 раз(а) в 67 сообщениях
Отправить сообщение для gurin с помощью Skype™
 
По умолчанию Re: РУОФФ Адреса и оффсеты

Jok3r666, у меня вместо

lea eax, dword ptr [esp+$0c]

стоит

lea eax, dword ptr [esp+$18]
  Ответить с цитированием
Старый 19.01.2012, 21:37   #119
-= Мастер Света =-
 Рыцарь-капитан
Аватар для krukovis
 
krukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нацииkrukovis гордость нации
Регистрация: 07.10.2009
Сообщений: 496
Популярность: 2687
Сказал(а) спасибо: 64
Поблагодарили 324 раз(а) в 104 сообщениях
 
По умолчанию Re: РУОФФ Адреса и оффсеты

Я нашел отсортированный список для Мобов/NPC/Петов !
MobsHash = BaseAddress+0x1C+0x1C+0x24+0x50 + (0x04*I)

Где I = 0 to MobsCount (MobsCount = BaseAddress+0x1C+0x1C+0x24+0x14)

Добавлено через 12 часов 30 минут
Цитата:
Сообщение от Docent2001Посмотреть сообщение
Брать информацию о близлежащих игроках по ссылке из структуры перса не пробовал.

А вот здесь информация о них точно есть:

"Структура игроков
BA +0x1C +0x1C +0x20 +0x14 Count, dword /Количество/
BA +0x1C +0x1C +0x20 +0x18 +(i*0x4) +0x4 /i = 0 - 0x300"

Рекомендую пользоваться отсортированным списком:
PlayersHash = BaseAdress +0x1C +0x34+038С+088+(I*4), где I = 0..PlayersCount
PlayersCount = BaseAdress +0x1C +0x34+038С+14
И дальше HashPlayers +
...
+0x46C ID, dword
+ прочие значения с 1-ой страницы....
+ ....
....


Удобнее.

Последний раз редактировалось krukovis; 20.01.2012 в 10:31. Причина: Добавлено сообщение
  Ответить с цитированием
Пользователь сказал cпасибо:
Jok3r666 (20.01.2012)
Старый 20.01.2012, 10:55   #120
 Пехотинец
Аватар для Jok3r666
 
Jok3r666 скоро будет известенJok3r666 скоро будет известенJok3r666 скоро будет известен
Регистрация: 17.05.2010
Сообщений: 53
Популярность: 204
Сказал(а) спасибо: 11
Поблагодарили 15 раз(а) в 6 сообщениях
 
По умолчанию Re: РУОФФ Адреса и оффсеты

Цитата:
Сообщение от krukovisПосмотреть сообщение
Я нашел отсортированный список для Мобов/NPC/Петов !
MobsHash = BaseAddress+0x1C+0x1C+0x24+0x50 + (0x04*I)

Где I = 0 to MobsCount (MobsCount = BaseAddress+0x1C+0x1C+0x24+0x14)

Добавлено через 12 часов 30 минут


Рекомендую пользоваться отсортированным списком:
PlayersHash = BaseAdress +0x1C +0x34+038С+088+(I*4), где I = 0..PlayersCount
PlayersCount = BaseAdress +0x1C +0x34+038С+14
И дальше HashPlayers +
...
+0x46C ID, dword
+ прочие значения с 1-ой страницы....
+ ....
....


Удобнее.

именно это и искал спс

В шапку выложите + в структуре персонажей (ba+1c+1c+20+18...) исправьте playername - 0x638, да и все остальное как у hostplayer
  Ответить с цитированием
Ответ


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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Руоф] Адреса и оффсеты Kitsune Разработка ПО для Perfect World 200 27.06.2014 22:34
оффсеты Maty Общение разработчиков 8 14.03.2012 21:00
Нужны адреса и оффсеты PWI Mr_R@NDOM Общение разработчиков 8 14.09.2011 23:01
[Помогите!] Адреса и Оффсеты для клиента 1.3.4 - 1.4.1 _Wolf_ Общение разработчиков 1 23.08.2011 17:34

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

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

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