G
Gentle
Guest
Hello again NGU
This is the official thread for all of the Black Ops 2 offsets for the latest game update: 1.19. Me and Natsu have gathered all of the offsets and they will all be posted here! Please no negative comments, or they will be removed and if it continues you will be banned from this thread. Other than that, this is here only as a reference to others. If you use this thread to get information for your program, please provide credits to myself and Natsu, it would be well appreciated. And the design of the thread is thanks to Natsu because I suck at making neat threads.
Multiplayer
*Thanks to Astek*
For Call sign and weapons Offset and bytes
Addresses
GameServerCommands
Commands:
O "Print Killfeed"
< "Print Center"
o "Vision"
; "Print Killfeed"
^ "Dvar"
5 "Kick everyone from the lobby" (Exmple 5 ^5GTFO)
7 "Freeze PS3" Exmple:7 30 90
d "Blur" Exmple: d 10000 10000 = Blur 10 seconds
@ - Anti Quit (1 On , 0 Off)
"s" - reset fov
Some Dvars:
^ 5 - cg_fov
^ 6 90 - PS3 Freeze.
^ 10 906666 - Players taking biger size. 0 - Off
1.19 RPC
Anti-Ban
Mega Dvars
Mulitplayer Weapons list
Super Rapid Fire
Non-Host
Zombie
Rank Loop Tut:
This is the official thread for all of the Black Ops 2 offsets for the latest game update: 1.19. Me and Natsu have gathered all of the offsets and they will all be posted here! Please no negative comments, or they will be removed and if it continues you will be banned from this thread. Other than that, this is here only as a reference to others. If you use this thread to get information for your program, please provide credits to myself and Natsu, it would be well appreciated. And the design of the thread is thanks to Natsu because I suck at making neat threads.
Multiplayer
Code:
Name: 0x026C0658
Local Name: 0x026c067f
Clan Tag: 0x2708238
Prestige: 0x26FD014
Rank: 0x026FD02C (0x00, 0xFF, 0x12) - Level 55)
Offset: 0x26FD016, Then change your rank)
Score: 0x26FD050
Wins: 0x26FD152
Tokens Offset: 0x2706938
Losses: 0x26FCBE2
Deaths: 0x26FC942
Kills: 0x26FCB70
Time played: 0x26FD10A
Headshots: 0x26FCA44
10 Classes: 0x02708522 (0x44, 0x80, 0x08, 0x10, 0x01, 0x22, 0x40, 0x04)
Weapon unlocks: 0x26FED0E
Callsign unlocks: 0x2707CAA
Ghosts - 0x2708219
Roxann - 0x270821C
put 0xFF to get the title
Thanks to Swiss:
playerState - 0x01780F28
playerState_size - 0x5808
Name in Game - 0x5544
Clantag - 0x55B0
Health - 0x18
ButtonMonitoring - 0x569C
Freeze Player - 0x5694
Kill Player - 0x30
Speed - 0x54F0
Lag - 0x543B
Perks - 0x548
3rd Person - 0x84
Invisible - 0xFD
TeleportPlayer - 0x28
Change Team - 0x5507
Earthquake - 0x15F
Origin - 0x28
Alive - 0x55D0
Angles - 0x56BC
PrimaryAmmo - 0x43C
SecondaryAmmo - 0x438
LethalAmmo - 0x440
Killstreak 1 - 0x42B
Killstreak 2 - 0x4302
Killstreak 3 - 0x434
PrimmaryCamo - 0x2A3
SecondaryCamo - 0x2DB
Auto Prone - 0x57F0
*Thanks to Astek*
Code:
godmode; 0x1780F43
ammo
0x0178135d
0x01781361
0x1781355
0x1781319
0x1781359
0x1781365
vsat ; 0x01786717
kill streaks; 0x1781487, 0x178147f, 0x178147b
invisible; 0x1781025
kill; 0x1780F58
kick; 24645775u
lag; 0x1786363
freeze; 0x17865BF
nightvision; 0x1780F42
skate mod; 0x177de37
all perks; 0x1781470
next client; 0x5808
-------------------
ip grabber; 0x269180c
For Call sign and weapons Offset and bytes
Addresses
Code:
TOC Address: 00D67E98
Playerstate: 001780F28
G_Entity: 0016B9F20
G_Hudelems: 0015DDB00
Hudelem_Alloc: 002759F0
G_SetOrigin: 002794F8
G_InitializeAmmo: 001E6838
SV_GameSendServerCommand: 00349F6C
R_SetFrameFrog: 007AA050
Cbuff_Addtext: 00313C18
SetClientViewAngles: 001DD6D8
VectoAngles: 003CAB90
G_Spawn: 00278AC0
G_ModelIndex: 00275FE0
G_Addevent: 002797B0
Key_IsDown: 001185C0
G_GivePlayerWeapon: 002A81C4
Player_Die: 001FD370
BG_GetWeaponDef: 00606F08
SV_SetConfigString: 0034C4C8
SV_GetConfigString: 00267010
SV_LinkEntity: 00359990
SV_UnlinkEntity: 003598CC
Add_Ammo: 002089A8
FPS: 0039777C
Jump_height: 005BE0B4, 0x45 0x00
client_s = 0x01BB6600
client_s_size = 0x4E180
GameServerCommands
Commands:
O "Print Killfeed"
< "Print Center"
o "Vision"
; "Print Killfeed"
^ "Dvar"
5 "Kick everyone from the lobby" (Exmple 5 ^5GTFO)
7 "Freeze PS3" Exmple:7 30 90
d "Blur" Exmple: d 10000 10000 = Blur 10 seconds
@ - Anti Quit (1 On , 0 Off)
"s" - reset fov
Some Dvars:
^ 5 - cg_fov
^ 6 90 - PS3 Freeze.
^ 10 906666 - Players taking biger size. 0 - Off
1.19 RPC
PHP:
using PS3Lib;
using System;
using System.Threading;
namespace BO2
{
public class RPC
{
private static uint function_address;
public static int Call(uint func_address, params object[] parameters)
{
int length = parameters.Length;
int index = 0;
uint num3 = 0;
uint num4 = 0;
uint num5 = 0;
uint num6 = 0;
while (index < length)
{
if (parameters[index] is int)
{
PS3.Extension.WriteInt32(0x10020000 + (num3 * 4), (int)parameters[index]);
num3++;
}
else if (parameters[index] is uint)
{
PS3.Extension.WriteUInt32(0x10020000 + (num3 * 4), (uint)parameters[index]);
num3++;
}
else
{
uint num7;
if (parameters[index] is string)
{
num7 = 0x10022000 + (num4 * 0x400);
PS3.Extension.WriteString(num7, Convert.ToString(parameters[index]));
PS3.Extension.WriteUInt32(0x10020000 + (num3 * 4), num7);
num3++;
num4++;
}
else if (parameters[index] is float)
{
PS3.Extension.WriteFloat(0x10020024 + (num5 * 4), (float)parameters[index]);
num5++;
}
else if (parameters[index] is float[])
{
float[] input = (float[])parameters[index];
num7 = 0x10021000 + (num6 * 4);
Lib.WriteSingle(num7, input);
PS3.Extension.WriteUInt32(0x10020000 + (num3 * 4), num7);
num3++;
num6 += (uint)input.Length;
}
}
index++;
}
PS3.Extension.WriteUInt32(0x1002004C, func_address);
Thread.Sleep(20);
return PS3.Extension.ReadInt32(0x10020050);
}
public static void Enable()
{
PS3.SetMemory(function_address, new byte[] { 0x4E, 0x80, 0x00, 0x20 });
Thread.Sleep(20);
byte[] memory = new byte[]
{ 0x7C, 0x08, 0x02, 0xA6, 0xF8, 0x01, 0x00, 0x80, 0x3C, 0x60, 0x10, 0x02, 0x81, 0x83, 0x00, 0x4C,
0x2C, 0x0C, 0x00, 0x00, 0x41, 0x82, 0x00, 0x64, 0x80, 0x83, 0x00, 0x04, 0x80, 0xA3, 0x00, 0x08,
0x80, 0xC3, 0x00, 0x0C, 0x80, 0xE3, 0x00, 0x10, 0x81, 0x03, 0x00, 0x14, 0x81, 0x23, 0x00, 0x18,
0x81, 0x43, 0x00, 0x1C, 0x81, 0x63, 0x00, 0x20, 0xC0, 0x23, 0x00, 0x24, 0xc0, 0x43, 0x00, 0x28,
0xC0, 0x63, 0x00, 0x2C, 0xC0, 0x83, 0x00, 0x30, 0xC0, 0xA3, 0x00, 0x34, 0xc0, 0xC3, 0x00, 0x38,
0xC0, 0xE3, 0x00, 0x3C, 0xC1, 0x03, 0x00, 0x40, 0xC1, 0x23, 0x00, 0x48, 0x80, 0x63, 0x00, 0x00,
0x7D, 0x89, 0x03, 0xA6, 0x4E, 0x80, 0x04, 0x21, 0x3C, 0x80, 0x10, 0x02, 0x38, 0xA0, 0x00, 0x00,
0x90, 0xA4, 0x00, 0x4C, 0x90, 0x64, 0x00, 0x50, 0xE8, 0x01, 0x00, 0x80, 0x7C, 0x08, 0x03, 0xA6,
0x38, 0x21, 0x00, 0x70, 0x4E, 0x80, 0x00, 0x20 };
PS3.SetMemory(function_address + 4, memory);
PS3.SetMemory(0x10020000, new byte[0x2854]);
PS3.SetMemory(function_address, new byte[] { 0xF8, 0x21, 0xFF, 0x91 });
}
public static int Init()
{
function_address = 0x007AA050;
Enable();
return 0;
}
public static void Cbuf_AddText(int client, string text)
{
RPC.Call(0x313E88, client, text);
}
public static void iPrintln(int Client, string Text)
{
SV_GameSendServerCommand(Client, "O \"" + Text + "\"");
}
public static void iPrintlnBold(int Client, string Text)
{
SV_GameSendServerCommand(Client, "< \"" + Text + "\"");
}
public static void CBuf_Addtext(string Command)
{
RPC.Call(00315938, 0, Command);
}
public static void SV_GameSendServerCommand(int Client, string Command)
{
RPC.Call(0x34A1DC, Client, 1, Command);
}
}
}
//Enable with "RPC.Init();
Anti-Ban
Code:
NOP = 0x60, 0x00, 0x00, 0x00
ALL CORREXT ANTIBAN OFFSET (Updated by me)
[B]0x004A8310 [/B]SET TO 0x40, 0x00 SC58 Antiban
[B]0x004FA38F [/B]SET TO 0x99
[B]0x004FBA74 [/B]0x60, 0x00, 0x00, 0x00
[B]0x00537DD4 [/B]0x60, 0x00, 0x00, 0x00
[B]0x00538148 [/B]0x60, 0x00, 0x00, 0x00
[B]0x004FB61C [/B]0x48, 0x00
[B]0x004FA3BC [/B]0x48, 0x80
[B]0x005200E8 [/B]0x60, 0x00, 0x00, 0x00
[B]0x005200F4 [/B]0x60, 0x00, 0x00, 0x00
NOTE: Must add 10000
Mega Dvars
Mulitplayer Weapons list
Super Rapid Fire
Bytes and offset for Rapid Fire.
In RTM C# Form
You'll need this, all perks in order to activate rapid fire.....
in RTM C# form Multiplayer
PHP:
Bytes: 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x30, 0x23, 0xD7, 0x0A, 0xD0, 0x01, 0x7D, 0x60 };
Offset: 0x01CB2AF2
In RTM C# Form
PHP:
if (metroCheckBox8.Checked == true)
{
byte[] rf = new byte[] { 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x30, 0x23, 0xD7, 0x0A, 0xD0, 0x01, 0x7D, 0x60 };
PS3.SetMemory(0x01CB2AF2, rf);
PS31.SetMemory(0x01CB2AF2, rf);
}
else
{
byte[] rf = new byte[] { 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x40, 0x00, 0x00, 0xD0, 0x01, 0x7D, 0x60 };
PS3.SetMemory(0x01CB2AF2, rf);
PS31.SetMemory(0x01CB2AF2, rf);
}
You'll need this, all perks in order to activate rapid fire.....
PHP:
byte: 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF == ON 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
Offset: 0x1781470
in RTM C# form Multiplayer
PHP:
byte[] clist = new byte[] { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF };
PS3.SetMemory((0x1781470 + (uint)dataGridView1.CurrentRow.Index * 0x5808), clist);
PS31.SetMemory((0x1781470 + (uint)dataGridView1.CurrentRow.Index * 0x5808), clist); // ON
byte[] clist = new byte[] { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
PS3.SetMemory((0x1781470 + (uint)dataGridView1.CurrentRow.Index * 0x5808), clist);
PS31.SetMemory((0x1781470 + (uint)dataGridView1.CurrentRow.Index * 0x5808), clist); //OFF
Non-Host
ADD 10000 for RTM USE
No Recoil: E9E54
ON:
OFF:
Probation Bypass :52FC6C
ON:
OFF:
Invisible Bodies: 5E2C4C
ON:
OFF:
VSAT: 23C60
ON:
OFF:
Wall Hack: 734D0
ON:
OFF:
Lazer: DF68C
ON:
OFF:
Blinking Bodies: EF68C
ON:
OFF:
Super Steady Aim:
RTM Offset: 5F0A20
EBOOT Offset: 5E0A20
ON
OFF:
Red Box:
Offset 1: 683E0
ON:
OFF:
Offser 2:68604
ON:
OFF:
Disable Protected Character:
35E96C - 0x60, 0x00, 0x00, 0x00
35E9A0 - 0x60, 0x00, 0x00, 0x00
35EA64 - 0x60, 0x00, 0x00, 0x00
381154 - 0x60, 0x00, 0x00, 0x00
35E9E4 - 0x60, 0x00, 0x00, 0x00
351B74 - 0x60, 0x00, 0x00, 0x00
351B4C - 0x60, 0x00, 0x00, 0x00
351B58 - 48 00 00 04[/code]
Auto Start on Load: 4525F0
Zombies:
Multiplayer:
UAV: 33CB4
ON:
OFF:
Floating Bodies: 1CD03D8
ON:
OFF:
Big Names: 1CC6E98
ON:
OFF:
Target Finder: 1CC4BF8
ON:
OFF:
No Recoil: E9E54
ON:
Code:
0x60, 0x00, 0x00, 0x00
Code:
0x48 0x50 0x6E 0xF5
Probation Bypass :52FC6C
ON:
Code:
0x41, 0x80
Code:
0x41, 0x82
Invisible Bodies: 5E2C4C
ON:
Code:
0x2C, 0x04, 0x00, 0x00
Code:
0x2C, 0x04, 0x00, 0x02
VSAT: 23C60
ON:
Code:
0x60. 0x00, 0x00, 0x00
Code:
0x40, 0x81, 0x00, 0x44
Wall Hack: 734D0
ON:
Code:
0x38, 0xC0, 0xFF, 0xFF
Code:
0x63, 0x26, 0x00, 0x00
Lazer: DF68C
ON:
Code:
0x2C, 0x03, 0x00, 0x01
Code:
0x2C, 0x03, 0x00, 0x00
Blinking Bodies: EF68C
ON:
Code:
0x2C, 0x03, 0x00, 0x01
Code:
0xDB 0xC1 0x00 0xF0
Super Steady Aim:
RTM Offset: 5F0A20
EBOOT Offset: 5E0A20
ON
Code:
0x2C, 0x04, 0x00, 0x00
Code:
0x2C, 0x04, 0x00, 0x02
Red Box:
Offset 1: 683E0
ON:
Code:
0x38, 0x60, 0x00, 0x00
Code:
0x38, 0x60, 0x00, 0x00
ON:
Code:
0x60, 0x00, 0x00, 0x00
Code:
0x41, 0x81, 0x01, 0x0C
Disable Protected Character:
35E96C - 0x60, 0x00, 0x00, 0x00
35E9A0 - 0x60, 0x00, 0x00, 0x00
35EA64 - 0x60, 0x00, 0x00, 0x00
381154 - 0x60, 0x00, 0x00, 0x00
35E9E4 - 0x60, 0x00, 0x00, 0x00
351B74 - 0x60, 0x00, 0x00, 0x00
351B4C - 0x60, 0x00, 0x00, 0x00
351B58 - 48 00 00 04[/code]
Auto Start on Load: 4525F0
Zombies:
Code:
0x40
Code:
0x41
UAV: 33CB4
ON:
Code:
0x2C, 0x03, 0x00, 0x01
Code:
0x2C, 0x03, 0x00, 0x00
Floating Bodies: 1CD03D8
ON:
Code:
0x43, 0x48
Code:
0xC4, 0x48
Big Names: 1CC6E98
ON:
Code:
0x3F, 0xFF, 0xFF, 0x00
Code:
0x3F, 0x26, 0x66, 0x66
Target Finder: 1CC4BF8
ON:
Code:
0x01
Code:
0x00
Zombie
Ranks
1 Bone: 0x026FC896
2 Bones: 0x026FCA87
Skull: 0x026FCA87
Knife: 0x026FCA87
Skull: 0x026FCA87
Blue eyes : 0x026FCA8F
ON |
OFF |
Zombie Stats
Lobby Settings
Note it said's 1.17 but bytes and offset hasn't changed!
Code:
0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
2 Bones: 0x026FCA87
Code:
0x02, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
Skull: 0x026FCA87
Code:
0x0A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
Knife: 0x026FCA87
Code:
0x15, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
Skull: 0x026FCA87
Code:
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
Blue eyes : 0x026FCA8F
ON |
Code:
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
Code:
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
Zombie Stats
Code:
Kills: 0x26FC90C
Deaths: 0x26FC948
Headshots: 0x26FC884
Downs: 0x26FC910
Perks: 0x26FC918
Miles: 0x26FC93C
Gibs: 0x26FC91C
Bullets: 0x26FC940
Doors: 0x26FC938
Grandes: 0x26FC934
Hits: 0x26FC944
Revives: 0x26FC914
Lobby Settings
Note it said's 1.17 but bytes and offset hasn't changed!
Rank Loop Tut:
Hi there NGU :wub:
I haven't Seen the Rank Loop released yet.... and very few tools have the rank loop, so why not and release the code? Its pretty simple actually
You are going to need a timer obviously! You can code it in different way.
if you want a button then make 2 buttons *ON* and *OFF*
*ON* Code is
*OFF* Code is
or if you want to put it in the metroCheckBox or checkBox then do it like this
Here is the code you can put in the timer!!
You are going to need a timer obviously! You can code it in different way.
if you want a button then make 2 buttons *ON* and *OFF*
*ON* Code is
Code:
rankloop.Start();
*OFF* Code is
Code:
rankloop.Stop();
or if you want to put it in the metroCheckBox or checkBox then do it like this
Code:
EXAMPLE::
if (metroCheckBox1.Checked = true)
{
rankloop.Start();
}
else
{
rankloop.Stop();
}
}
Here is the code you can put in the timer!!
PHP:
rankloop.Start();
rankloop.Interval = 120;
{
Countername++;
switch (Countername)
{
case 1:
byte[] GRADE1 = new byte[] { 0x00, 0x04, 0x00 };
PS3.SetMemory(0x026FD02C, GRADE1);
PS31.SetMemory(0x26FD02C, GRADE1);
break;
case 2:
byte[] GRADE2 = new byte[] { 0x00, 0x00, 0x0C };
PS3.SetMemory(0x026FD02C, GRADE2);
PS31.SetMemory(0x26FD02C, GRADE2);
break;
case 3:
byte[] GRADE3 = new byte[] { 0x00, 0xF9, 0x02 };
PS3.SetMemory(0x026FD02C, GRADE3);
PS31.SetMemory(0x26FD02C, GRADE3);
break;
case 4:
byte[] GRADE4 = new byte[] { 0x00, 0x90, 0x05 };
PS3.SetMemory(0x026FD02C, GRADE4);
PS31.SetMemory(0x26FD02C, GRADE4);
break;
case 5:
byte[] GRADE5 = new byte[] { 0x00, 0xA0, 0x10 };
PS3.SetMemory(0x026FD02C, GRADE5);
PS31.SetMemory(0x26FD02C, GRADE5);
break;
case 6:
byte[] GRADE6 = new byte[] { 0x00, 0x76, 0x00 };
PS3.SetMemory(0x026FD02C, GRADE6);
PS31.SetMemory(0x26FD02C, GRADE6);
break;
case 7:
byte[] GRADE7 = new byte[] { 0x00, 0x4C, 0x00 };
PS3.SetMemory(0x026FD02C, GRADE7);
PS31.SetMemory(0x26FD02C, GRADE7);
break;
case 8:
byte[] GRADE8 = new byte[] { 0x00, 0x9A, 0x01 };
PS3.SetMemory(0x026FD02C, GRADE8);
PS31.SetMemory(0x26FD02C, GRADE8);
break;
case 9:
byte[] GRADE9 = new byte[] { 0x00, 0xD0, 0x0A };
PS3.SetMemory(0x026FD02C, GRADE9);
PS31.SetMemory(0x26FD02C, GRADE9);
break;
case 10:
byte[] GRADE10 = new byte[] { 0x00, 0x76, 0x00 };
PS3.SetMemory(0x026FD02C, GRADE10);
PS31.SetMemory(0x26FD02C, GRADE10);
break;
}
if (Countername == 10) Countername = 0;
{
rankloop.Start();
}
}
Also You can change the timer interval (1 being the fastest and 900 being the slowest)
To fix the error of Counternames put this anywhere in your code!
Code:
public int Countername { get; set; }
Hope i helped!!
Credits to Everyone that has helped me on NGU :wub:
This game is old and destroyed because of GSC :stare:
NOTE: I do have the short version of the code, so you can add as many leveld as you want